SV.DOS.TMPFILEEXIT

如果创建临时文件并且未计划在退出时或使用之后将其删除,则会出现该错误。

漏洞与风险

如果临时文件包含敏感信息,则攻击者可以在应用程序退出之后访问此信息。而且,Web 应用程序可能导致资源耗尽,因为应用程序可能会用光临时文件的名称,或者目录可能无法容纳所有文件。

Klocwork 安全漏洞 (SV) 检查器可识别可能创建危险数据的调用;这些调用被视为不安全的来源。用户所提供的任何数据都可能是不安全的来源,因为用户可能是攻击者,或者可能引入人为错误。

缓解与预防

应该在用过之后立即删除临时文件。至少应该将所有临时文件标记为 deleteOnExit。

示例 1

复制
     protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
         String name = req.getParameter("userName");
         File file = File.createTempFile("file", ".dat");
         fillWithUserData(name);
         char[] data = readData(file);
         resp.getWriter().print(data);
     }

针对第 19 行报告 SV.DOS.TMPFILEEXIT:文件“file”是临时文件,但是没有在退出时将其删除。

扩展

此检查器可通过 Klocwork 知识库进行扩展。有关详情,请参阅调整 Java 分析。