路径操作(Path Manipulation)的漏洞,简言之就是在路径中包含有一些特殊字符(… 或者 / 等),导致可以访问到期望目录之外的文件。
比如路径地址是
/usr/local/myapp/../../../etc/passwd
,对应到访问到的文件就是
/etc/passwd
, 而这个文件是系统的文件,保存用户密码。
使用Coverity 扫描的信息如下:
Filesystem path, filename, or URI manipulation
An attacker may access, modify, or corrupt files that contain sensitive information or are critical to the application.
关于路径操作漏洞,可以参考:
软件弱点预防之 —— Filesystem path, filename, or URI manipulation - 操控文件系统路径、文件名或 URI
本篇介绍在 Java应用中如何防御路径操作(Path Manipulation)的攻击。
防御方法分析
在代码层面来看, 防御路径操作的方法就是对输入进行验证,根据对字符是否合法的角度来看, 可以分为两种:
- 黑名单 : 将不安全的字符列入黑名单,
- 白名单 : 将预期的字符加入白名单。 或者更严格一点,创建一份合法资源名的列表,并且规定用户只能选择其中的文
版权归原作者 oscar999 所有, 如有侵权,请联系我们删除。