OWASP ZAP - 如何“证明”误报?
Posted
技术标签:
【中文标题】OWASP ZAP - 如何“证明”误报?【英文标题】:OWASP ZAP - how to "prove" false positives? 【发布时间】:2017-04-03 22:10:29 【问题描述】:我们的客户要求我们针对我们的 Web 应用程序(ASP.NET 4.5.2、Webforms)运行 OWASP ZAP 工具,我们不能在报告中包含任何高优先级的发现。
我们已经完成了分析,OWASP ZAP 报告了两个最有可能是“误报”的漏洞:
远程操作系统命令执行 SQL 注入远程操作系统命令执行似乎是虚假的,因为我们没有在任何地方执行任何操作系统命令 - 那么任何攻击者如何获取我们的代码以在远程机器上执行他的命令?
而且 SQL 注入似乎非常虚假,因为我们使用的是实体框架 everywhere,它使用正确的参数化查询,这是针对任何 SQL 注入的黄金标准 ....
其他人是否对 OWASP ZAP 有过此类“误报”?是否有任何“已知问题”记录在任何地方,我们可以用来证明 工具 是错误的——不是我们的代码?
【问题讨论】:
即使使用 EF,您仍然可以运行任意查询并实现结果。不久前,我在一个经过检查的应用程序中发现了这样的问题。确保 zap 没有在您自己的代码中找到您不相信的内容。 @WiktorZychla:你是对的——但我们在你的 EF 代码中没有任何“任意 SQL”——这是绝对肯定的。 我认为告诉您的客户您查看了代码,并且您使用的是没有自定义 SQL 代码的 EF,因此它不会受到 SQLi 的攻击,应该足够了。如果他们坚持,您也许可以向他们展示部分源代码,但如果您以书面形式提供上述内容,则没有必要这样做。操作系统命令注入可能更有趣,可能有一些微妙的方法,但 ZAP 确实有时会产生很多误报,因此也很容易成为其中之一。 但是该报告的外观如何?它只是在没有任何参数\澄清的情况下报告漏洞? @Evk:报告列出了几个据称易受攻击的文件和“目标”——例如 ASP.NET 隐藏字段__SCROLLPOSITIONY
或__VIEWSTATEGENERATOR
——但没有太多关于为什么这些被视为易受攻击的解释.....这些都不能用于执行远程操作系统命令,例如......
【参考方案1】:
我不知道有任何自动扫描仪不会误报(尽管有一些营销声明;),因此我始终建议手动验证任何发现。
如果您能向我们提供更多详细信息会有所帮助 - ZAP 应该为您提供更多信息,而不仅仅是漏洞名称。一种可能性是它们是定时攻击,并且您的服务器由于扫描而运行缓慢。我肯定见过很多次。在 ZAP 的每周版本中,您实际上可以增加使用的时间值(默认为 5 秒) - 这有助于减少或消除此类误报。
如果您在 ZAP 扫描中发现误报,请通过 issues 或 Dev Group 报告它们 - 如果您不告诉我们,我们将无法修复它们 :)
西蒙(ZAP 项目负责人)
【讨论】:
听起来 Zap 充满了误报。我刚刚被分配修复反 MIME 嗅探和 XSS 保护,并且知道这两个问题都已通过引入适当的标头得到解决,但 Zap 仍然显示出相同的漏洞。响应显然包含X-Content-Type-Options=nosniff
和X-XSS-Protection=1; mode=block
,但 Zap 仍在寻找不同的东西。听起来它需要一些改进才能被认为是可靠的。
所以让我们知道问题所在 - 我们无法在没有反馈的情况下改进它。您很可能遗漏了一些东西,因此非常值得与我们联系(通过问题或上述开发组),然后我们可以查看它们。
不,它不是“全部”。我们需要为相关 URL 返回的标头的精确副本(任何敏感信息都经过混淆处理),以便了解发生了什么。警报中提供的信息也会有所帮助 - 它们通常会解释为什么标记了漏洞。
那么,你只是为了一个免费的项目而胡扯吗?保持建设性的方式。抱怨误报,但拒绝以任何方式、形式或形式为减少误报做出贡献。以上是关于OWASP ZAP - 如何“证明”误报?的主要内容,如果未能解决你的问题,请参考以下文章
如何在 Azure DevOps 的 OWASP ZAP 扫描中使用 XSLT 文件添加误报?
为啥/如何将 `value="javascript:alert(1)"` 视为 OWASP 的 ZAP 工具中的 XSS 漏洞?