2023 年 1 月,我们决定使用流行的 SAST 基准来跟踪我们的 SAST 功能的进展,同时对这些基准中应该检测到和不检测到的内容保持透明,以帮助整个 SAST 市场提高标准并带来清晰度并消除歧义。我们将发布 Sonar 在 Java、C# 和 Python SAST 基准测试中的得分以及重现这些数据所需的一切。
今天,我们很高兴与大家分享有关前 3 个 Java SAST 基准测试的更多详细信息,即:
与预期和非预期问题列表相对应的基本事实
Sonar 在这些选定基准上的得分如何
对于那些不熟悉的人,这里有一个关于我们通常在计算基准结果上下文中使用的首字母缩略词的快速提醒:
TP = 真实阳性数量 = 预期和检测到的问题
FP = 误报数 = 未预期但检测到的问题
FN = 假阴性数 = 预期但未检测到的问题
真阳性率 (TPR) = TP / (TP + FN)
错误发现率 (FDR) = FP / (FP + TP)
我们查看了 GitHub 上与 SAST 基准测试相关的 109 个项目。这对应于被视为我们想要应用我们的选择标准的基准的候选项目。其中,我们根据以下标准选择了前 3 名:
主要语言是Java
该项目是一个易受攻击的应用程序,即使它最初不是作为 SAST 基准设计的,因为它通常是我们与之交谈的人(用户、潜在客户、客户)选择评估 SAST 产品成熟度的对象
该项目不应存档
该项目应该具有与代码中的问题相对应的测试用例,并且可以由 SAST 引擎检测到。
项目应该有与Web应用相对应的测试用例
该项目不应与供应商联系起来以避免偏见
最后,排序是根据基准的受欢迎程度进行的,而不考虑其内部质量(没有判断)受欢迎程度由几个因素决定:
GitHub 投票数
潜在客户或客户与我们谈论该问题的次数
基于此,我们选择了这3个Java项目:
OWASP 基准
OWASP WebGoat
OWASP 安全守护程序
在 Sonar,我们认为一个好的 SAST 解决方案应该具有 90% 的真阳性率和低于 10% 的错误发现率。
现在让我们继续分享 Sonar 在这些基准测试中的得分:
正如您亲眼所见,结果非常好。对于 OWASP Benchmark 和 SecurityShepherd 来说甚至超出了我们对 TPR 的预期。对于WebGoat来说,我们非常接近我们自己的内部目标。
在任何情况下,我们都不会放弃,并将继续改进我们的 Java SAST 引擎,以始终提供更准确和可操作的结果。
我们在本博客系列的第一部分中说过,通常 SAST 供应商只是声称但不提供任何内容来重现他们的结果。在 Sonar,我们希望改变这一点。要复制这些结果,请访问sonar-benchmarks-scores存储库中提供的基本事实。建议使用最新版本的 SonarQube Developer Edition 或 SonarCloud。
除了每个基准测试的真实数据文件之外,我们还提供了一个名为ignore-findings.json 的特殊文件。Sonar 具有安全热点这一独特的概念。安全热点检测精确的代码模式,但代码中不包含用于了解是否应修复该发现的信息。这就是为什么我们要求使用我们产品的用户手动检查检测到的热点,以肉眼评估是否确实需要进行更改。该文件用于模拟只有人类才能执行的手动活动,以评估是否没有安全敏感数据泄漏。简而言之,ignoreed-findings.json 包含安全的安全热点列表。
基本事实与 Sonar AppSec 团队对应该检测或不检测的问题的看法相对应。我们承认我们可能会犯错误,因此如果您发现任何错误分类,请随时在此处报告。
通过分享事实真相并展示 Sonar 在这些 Java SAST 基准测试中的得分情况,我们的目标是提高透明度并帮助公司就其 SAST 解决方案做出明智的决策。我们坚信,通过分享我们的 TPR、FDR 和事实真相,用户将更好地了解 Sonar 安全分析器的有效性和准确性。在此处了解有关 Sonar SAST 解决方案的更多信息,并继续关注 Sonar 在 3 个 C# SAST 基准测试中的性能更新。
Copyright © 2022 All Rights Reserved. 地址:上海市浦东新区崮山路538号808 苏ICP123456 XML地图