Help us learn about your current experience with the documentation. Take the survey.
服务器端代码注入(Ruby)
Description
目标应用被发现存在代码注入漏洞。恶意攻击者可以注入任意 Ruby 代码在服务器上执行。这可能导致系统完全被攻破,通过访问存储的密钥、注入代码接管账户或执行操作系统命令。
Remediation
切勿将用户输入直接传递给将字符串数据作为代码评估的函数,例如 eval、send、public_send、instance_eval 或 class_eval。向这些方法传递字符串值几乎没有好处,因此最佳建议是用更安全的方式替换当前逻辑,以动态评估包含用户输入的逻辑。如果使用 send 或 public_send,请确保第一个参数是已知的、硬编码的方法/符号,并且来自用户输入。
对于 eval、instance_eval 和 class_eval,用户输入绝不应直接传递给这些方法。一种替代方法是将函数或方法存储在可以通过键查找的 Hash 中。如果键存在,则可以执行该函数。
def func_to_run
puts 'hello world'
end
input = 'fn'
function_map = { fn: method(:func_to_run) }
if function_map.key?(input.to_sym)
function_map[input.to_sym].call
else
puts 'invalid input'
endDetails
| ID | 聚合 | CWE | 类型 | 风险 |
|---|---|---|---|---|
| 94.2 | 否 | 94 | 活动 | 高 |