为什么不只是单纯的统计数据?
数据结果主要受限于我们以自动化方式测试获得的内容。与经验丰富的应用安全专业人士交谈,
他们会告诉我们他们发现尚未出现在数据中的的弱点和他们看到的趋势。人们需要时间为某些缺陷类
型开发测试方法,然后需要更多时间让这些测试自动化并针对大量应用程序运行。我们发现的一切都
是回顾过去,并且可能会遗漏去年的趋势,因为这些趋势在数据中并不存在。
因此,为了完整性,我们只从数据中挑选了10个类别中的8个,其他2个类别来自Top 10 社区调
查。它允许一线从业者投票选出他们认为可能没有在数据中(并且可能永远不会在数据中表达)的最
高风险。
为什么是事件发生率而不是频率?
有三个主要数据来源。我们将它们识别为“人工辅助的工具 (HaT) ”、“工具辅助的人工
(TaH) ”和原始的“工具”。
工具和HaT是高频的缺陷查找生成器。工具将寻找特定的漏洞并不知疲倦地尝试找到该漏洞的每
个实例,并将为某些缺陷类型生成高发现计数。看看跨站脚本,它通常是两种风格之一:它要么是更
小的、孤立的错误,要么是系统性问题。当它是一个系统性问题时,单个应用程序的发现计数可能会
达到数千个。这种高频率淹没了报告或数据中发现的大多数其他漏洞。
另一方面,TaH会发现更广泛的漏洞类型,但由于时间限制,发现频率要低得多。当人们测试应
用程序并看到诸如跨站脚本之类的东西时,他们通常会发现三四个实例并停止。他们可以确定一个系
统性的发现,并用建议将其写下来,以在应用程序范围内进行修复。没有必要(或花时间)找到每个
实例。
假设我们采用这两个不同的数据集并尝试按频率合并它们。在这种情况下,工具和HaT数据将淹
没更准确(但广泛)的TaH数据,这也是为什么跨站脚本之类的东西在许多列表中排名如此之高的原
因,而影响通常是低到中等。这是因为发现的数量庞大。(跨站脚本也相当容易测试,因此还有更多
测试)。
在2017年版中,我们引入了使用发生率来重新审视数据,并将工具和HaT数据与TaH数据干净
地合并。事件发生率是指应用程序总数中至少有一个缺陷类型实例的百分比。我们不在乎它是一次性
的还是系统性的。这与我们的目的无关;我们只需要知道有多少应用程序至少有一个实例,这有助于
更清晰地了解测试结果,而不会淹没在高频结果中的数据。这对应于与风险相关的观点,因为攻击者
只需要一个实例即可通过该类别成功攻击应用程序。