我正在为我的应用程序修复Veracode漏洞CWE-73 (https://cwe.mitre.org/data/definitions/73.html),在这个应用程序中,输入文件名是由我们的其他应用程序动态发送的--它以诸如abc、xyz之类的静态名称开头,但是完整的文件名通常类似于abc_1234567.txt。
现有应用程序代码片段:调用methodA(input目录、inputfile、X、Y) -> veracode在本例中报告inputfile
我尝试添加条件来检查文件的扩展名,模式白名单有字母数字和其他通常的验证,如文件字符串是有效的/非空的-到目前为止没有运气,也通过了下面的Veracode链接。https://community.veracode.com/s/article/how-do-i-fix-cwe-73-external-control-of-file-name-or-path-in-java
文件名的硬编码是不可能的,正如我提到的那样,它是动态的,而且问题不仅仅是扩展名。
我确实尝试过与ESAPI集成,以查看getValidFileName是否能工作,但看起来这也不能满足veracode的要求。
任何建议或指示,我可以尝试进一步看将是有帮助的。!谢谢。
发布于 2022-05-03 18:43:08
CWE 73是利用攻击者提供的用户输入,允许系统读取所述文件并提供恶意访问的攻击。
问题的根源是“动态”发送。如果有时间,我会制造一个监狱或间接。让我们将Server称为A,客户端称为B。如果服务器发送ABC,则在客户机中映射ABC->DEF。在查找的基础上,每当服务器发送ABC (检查他是否有ABC),然后根据DEF查找。永远不要直接使用来自客户的用户输入。
https://stackoverflow.com/questions/71391902
复制相似问题