我得到的路径操纵问题,在强化分析工具.
private static final String ALLOWABLE_CHARS= "[\\\\/a-zA-Z0-9_\\-~:]+";
public static void generateZipFile(MultipartFile file) {
File tempFile;
try {
String path = System.getProperty("java.io.tmpdir");
// Reject any file path not containing any of the provided characters
if (path.matches(ALLOWABLE_CHARS)) {
tempFile = Files.createTempFile(Paths.get(path).normalize(), "prefix", "suffix").toFile();
//Rest of the code
.
.
.
}
工具中的漏洞详情:
攻击者可以将文件系统路径参数控制为get(),从而允许他们访问或修改受保护的文件。
getProperty(return) -> Assignment to path -> get(0)
Paths.get(path) -> String path = System.getProperty("java.io.tmpdir")
在上面的代码中,我尝试了两种方法来消除漏洞。
1.我对路径使用了normalize方法
1.设置正则表达式中允许的字符并尝试使用该正则表达式验证路径。
这两种尝试都没有解决问题。有没有人想解决这个漏洞问题?
1条答案
按热度按时间dojqjjoe1#
该问题在System.getProperty(“java.io.tmpdir”)行中报告
我没有在默认的系统tmp目录路径下创建临时目录,而是使用了下面的代码,它解决了fortify问题
路径路径= Files.createTempDirectory(“tmpdir”);