SV.IL.FILE
将文件名重新作为内部文件名或临时文件名提供给用户时,会出现该错误。
从 2023.2 版本开始,此检查器将支持 Jakarta EE。
漏洞与风险
攻击者可以利用重新提供给用户的文件名来预测其他文件名,例如预测下一个临时文件的名称。随后可将该信息用于进行未经授权的访问,例如查看其他用户的秘密数据。此信息还会公开目录结构,如果代码存在路径注入漏洞,则攻击者可由此发动路径操纵攻击。该漏洞也称为“路径泄露”漏洞。
Klocwork 安全漏洞 (SV) 检查器可识别可能创建危险数据的调用;这些调用被视为不安全的来源。用户所提供的任何数据都可能是不安全的来源,因为用户可能是攻击者,或者可能引入人为错误。
缓解与预防
一定不要将完整的文件名或临时文件名重新提供给用户。出于调试目的,使用服务器日志,而不是使用用户屏幕。
示例 1
复制
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
// use user Name as the unique prefix
String debug = req.getParameter("debug");
File file = File.createTempFile("tempfile", ".tmp");
if (debug.equals("true")) {
resp.getOutputStream().print("Using " + file.toString());
}
// ...
file.delete();
}
针对第 17 行报告 SV.IL.FILE:在第 15 行中创建的临时文件 file 的名称遭到泄露。攻击者可以利用这一敏感信息预测其他文件的位置,从而进行未经授权的访问。
外部指导
扩展
此检查器可通过 Klocwork 知识库进行扩展。有关详情,请参阅调整 Java 分析。