猿问

如何修复 CWE 73 文件名或路径的外部控制

在 Veracode 扫描期间,我的结果中出现了 CWE 73 问题。有人可以建议我如何针对以下编码场景修复此解决方案吗?

提供的现有解决方案不起作用,我也想知道任何 ESAPI 属性都可以用来解决这个问题吗?

尝试 { String serviceFile = System.getProperty("PROP", ""); logger.info("服务A", "加载服务文件[" + serviceFile+ "]."); //安全问题CWE 73发生在这一行 }


牛魔王的故事
浏览 381回答 3
3回答

心有法竹

有几种解决方案:使用白名单进行验证,但使用来自入口点的输入 正如我们在使用硬编码值列表中提到的那样。使用简单的正则表达式白名单进行验证规范化输入并验证路径我使用了第一个和第二个解决方案并且工作正常。

繁花不似锦

本文档提供了有关建议的补救措施的详细信息,任何明确的自定义解决方案。就我而言,我在提供的方法参数中尝试了白名单或黑名单模式,但这仍然没有解决 CWE-73 风险。我认为这是预料之中的,文档确实说明了这一点:静态引擎的检测范围有限。它只能扫描您的代码,实际上不会运行您的代码(与动态扫描不同)。所以它不会选择任何自定义验证(if 条件、正则表达式等)。但这并不意味着这不是消除风险的完全有效的解决方案!我尝试了基于自定义黑名单模式的解决方案,并使用 FilePathCleanser 对该方法进行了注释,如此处所述,它解决了 CWE-73 问题,veracode 不再将其显示为风险。

慕神8447489

尝试使用推荐的 OWASP ESAPI 验证器方法验证此 PROP 字符串,如下所示。例子:String PropParam= ESAPI.validator().getValidInput("",System.getProperty("PROP", ""),"FileRegex",false);FileRegex是用于验证 PROP 字符串(即文件路径)的正则表达式。在 Validator.properties 中定义FileRegex = ^(.+)\/([^\/]+)$。
随时随地看视频慕课网APP

相关分类

Java
我要回答