使用java.io.File.createTempFile时出现Veracode不安全临时文件错误



我需要创建一个临时文件并在其中存储一些数据。为此,我编写了以下代码:

import org.apache.commons.lang.RandomStringUtils;
import java.security.SecureRandom;
[...]
String random = RandomStringUtils.random(10, 0, 0, true, true, null, new SecureRandom());
File tempFile = File.createTempFile("PREFIX-" + random, ".pdf");
[...]

它确实工作完美,但是当我将此代码提交到Veracode时,我得到一个"不安全的临时文件(CWE ID 377)"错误。我认为使用SecureRandom将使临时文件名无法被攻击者预测。

生成临时文件而不使Veracode不高兴的正确方法是什么?

在使用CreateTemp File(在较低版本的java中)创建文件时,它将首先创建一个具有给定后缀和前缀和随机数的文件名。-->前缀+随机数+后缀。如果生成的名称已经存在,则只增加随机数。这里出现了算法中的问题,其中v可以猜测下一个文件名是什么。

该问题已在Java 6中解决。但是如果你在veracode中做静态扫描,他们会显示它是错误的,因为它们会导致java版本低于6的脆弱问题。如果您使用的是更高版本,则没有问题。

引用自veracode: https://www.veracode.com/blog/2009/01/how-boring-flaws-become-interesting

我认为这个问题在Java 6 Update 11版本中已经解决了。使用最新版本的Java

最新更新