We read every piece of feedback, and take your input very seriously.
To see all available qualifiers, see our documentation.
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
hutool/hutool-core/src/main/java/cn/hutool/core/io/FileUtil.java
Lines 3460 to 3478 in 1ead957
用于检测slip注入的checkSlip函数存在安全缺陷,在检测位于与父目录同级且目录名以父目录名开头(eg: /parentFile*/)的文件时不会抛出异常。
假设parentFile路径为/home/safe,file路径为/home/safe/../safe_bak/filename时(如解压zip文件时拼接解压路径和文件名会出现)
file路径在经过File.getCanonicalPath()处理后,会变成/home/safe_bak/filename,然后再通过String.startsWith()与parentFile对比。
但因为都是以/home/safe开头,函数会返回True也就没有抛出异常,导致安全目录外的文件被操作,存在安全隐患。
使用 java.nio.files.Path.startsWith() 来替代原来的比较,该函数将对路径进行比较,而不是子字符串. 如果继续使用String.startWith()来比较路径, 需要确保被比较的路径以File.separator结尾, 如 String.startsWith(parentCanonicalPath+ File.separator).
88250/symphony#76 lukashinsch/spring-boot-actuator-logview#33
The text was updated successfully, but these errors were encountered:
5.8.20和6.0.0-M4修复。邮件已回复。
Sorry, something went wrong.
No branches or pull requests
描述:
hutool/hutool-core/src/main/java/cn/hutool/core/io/FileUtil.java
Lines 3460 to 3478 in 1ead957
用于检测slip注入的checkSlip函数存在安全缺陷,在检测位于与父目录同级且目录名以父目录名开头(eg: /parentFile*/)的文件时不会抛出异常。
假设parentFile路径为/home/safe,file路径为/home/safe/../safe_bak/filename时(如解压zip文件时拼接解压路径和文件名会出现)
file路径在经过File.getCanonicalPath()处理后,会变成/home/safe_bak/filename,然后再通过String.startsWith()与parentFile对比。
但因为都是以/home/safe开头,函数会返回True也就没有抛出异常,导致安全目录外的文件被操作,存在安全隐患。
修复建议:
使用 java.nio.files.Path.startsWith() 来替代原来的比较,该函数将对路径进行比较,而不是子字符串.
如果继续使用String.startWith()来比较路径, 需要确保被比较的路径以File.separator结尾, 如 String.startsWith(parentCanonicalPath+ File.separator).
类似问题参考:
88250/symphony#76
lukashinsch/spring-boot-actuator-logview#33
The text was updated successfully, but these errors were encountered: