关于安全:实操指南如何为-SAST-工具设置误报基准

37次阅读

共计 2279 个字符,预计需要花费 6 分钟才能阅读完成。

许多 SAST 工具都无奈防止误报的问题。这些工具常常报告一些理论不存在的破绽,这种不准确性让平安团队消耗大量工夫来对误报进行分类和解决,这时设置误报基准就显得十分必要。

通过设置误报基准,平安团队能够确定一个参考的点或者规范来掂量平安工具的有效性。

为什么要对误报进行基准测试

执行应用程序平安测试(Application Security Test)是辨认歹意攻击者可能利用的应用程序缺点的重要办法。如果平安工具可能精确辨认破绽,开发人员就可能及时修复,从而进步应用程序的安全性。

SAST 工具扫描的后果通常分为四类:

  • True Positive ——正确辨认存在破绽。
  • True Negative —— 正确辨认破绽不存在。
  • False Positive ——谬误地辨认出理论不存在的破绽。
  • False Negative ——未辨认到存在的破绽。

任何 SAST 工具的指标应该是最大化 true positivetrue negative 的数量,同时最小化 false positivefalse negative。产生过多的误报会让开发人员得空应答,而对该工具产生的扫描后果缩小关注,甚至导致他们不违心应用该工具。当这种状况产生时,企业的平安程序就会受到影响,蕴含破绽的应用程序就极有可能被部署到生产环境中。

因而在应用 SAST 工具时,设置误报基准十分重要,这样企业就能够避免浪费大量工夫来寻找实际上不存在的破绽。

如何掂量 SAST 工具扫描准确率

掂量 SAST 工具的扫描后果是否精确的一种简略形式就是从其 true positive 率中减去对应的 false positive 率。如果通过计算该工具取得 100% 的完满准确度分数,则意味着 SAST 工具的 true positive 率为 100%,false positive 率为 0%。咱们通过上面三个例子来了解这些概念。

假如应用三种不同的 SAST 工具扫描应用程序中的破绽会生成以下后果:

工具 #1

什么都不做。它不会检测到任何破绽,也不会产生误报。它的 true positive 率是 0%,false positive 率也是 0%。所以,它的准确率分数是 0%,这个是没什么意义的。

工具 #2

报告应用程序中的每一行代码都存在破绽。因而,它的 true positive 率为 100%,因为它完满地检测到了每一个破绽。然而,如果它检测到许多有害的、生效的、有效的或不重要的 true 后果,就阐明这个工具的误报率很高。例如,如果该工具总共辨认出 1000 个破绽,但其中 800 个不构成威胁,则其误报率为 80%,其准确度得分仅为 20%,这对测试后果的意义也不大。

工具 #3

通过抛硬币的形式来确定一行代码是否易受攻击,这样 TP 率和 FP 率各为 50%。它的准确度分数也将是 0%。

OWASP 基金会建设了一个收费和开源的 Benchmark Project,用于评估自动化软件破绽辨认工具的速度、覆盖范围和准确性。Benchmark Project 是一个示例应用程序,其中蕴含数千个可利用的破绽,有些是真的,有些是误报。企业能够依据此对 SAST 工具的后果进行评分,并在下图中标记 SAST 工具的分数。

图片起源:MEND

现实状况下,平安工具的最佳后果应位于左上角——示意最小误报和最大true positive

深刻理解误报基准

在上文提到,掂量 SAST 工具精确与否的一种简略办法是从其 true positive 率中减去其 false positive 率。但这个算法自身是不够欠缺的,因为没有到思考其余重要因素。

以这两个不同的 SAST 工具为例,每个工具都针对 OWASP 我的项目进行了评分:

SAST 工具 #1

辨认出 10 个 true positive 和 3 个false positive,准确度得分为 70%。

SAST 工具 #2

辨认出 100 个 true positive 和 30 个false positive,准确度得分为 70%。

尽管这两种不同工具对应的准确度分数是雷同的,但在做抉择的时候,企业还须要参考一些额定的指标,比方:

  • 完整性(Completeness)——完整性是指检测到的实在破绽(true positive)的数量与存在的实在破绽总数的比拟。更高的完整性分数(实践最大值为 1)表明 SAST 工具辨认出应用程序中更多的现有破绽。一个残缺度很高的工具能够帮忙企业更好地理解其代码,并帮忙精确辨认更多破绽,以交付更平安的产品。
  • 深度(Depth)——在 SAST 测试中,深度是指工具检测各种破绽的能力。反对大量编程语言并具备来自多个最新渠道的综合破绽数据库的工具,可能进行有深度的扫描工作,帮忙企业精确发现更多安全漏洞。如果一个工具的笼罩深度无限,则将产生大量的误报,并且还会在不同的破绽和语言之间产生不统一的后果。因而,在应用 SAST 工具设置误报基准时,也该当将这个因素思考进去。

结 论

为 SAST 工具设置适当的基准须要各个团队合作实现,因为不同的团队的指标各不相同。平安团队心愿每个应用程序引入尽可能低的平安危险,所以他们须要完整性等级得分十分高的平安工具。相同,开发团队心愿将更多的工夫放在性能开发上,解决误报等非生产性的工作对于他们来说将会是极大的困扰。

此外,基准也可能因企业正在测试的应用程序而异。某些应用程序可能比其余应用程序更有价值,或者更容易受到攻打。对于这些敏感的应用程序,企业可能会偏向于抉择具备更多误报的工具以取得更高的完整性。

所有这些准确度分数只是 SAST 工具的一个维度。当然还有一些其余重要维度,包含工具运行的速度、开发人员应用后果的便当水平,以及作为工作流程的一部分部署和自动化工具的难易水平,企业须要依据本身需要来去调整基准以抉择最佳平安工具。

正文完
 0