欢迎来到OWASP十大应用安全风险(OWASP Top 10)的最新版。OWASP十大应用安全风险是一份带有全新的图案设计的版本,该版本的单页信息图可以通过打印或是在OWASP主页获取。

2021年的Top 10 发生了什么变化?

2021年的Top 10 里出现了3个新主题、4个命名与范围发生变化的主题,此外还进行了一些合并。

A01 :越权访问(2021-Broken Access Control)

从2017年的第5位上升至第1位。超过94%的app都经历过某种形式的越权访问控制测试。对应到越权访问有34个CWE,比任何其它在app中出现的主题次数都多。

A02:加密失败(2021-Cryptographic Failures )

较2017年相比上升1位至第2位。以前被称为敏感数据公开(Sensitive Data Exposure),但只是一种基本症状表现,并不是根本原因。最新版OWASP重新聚焦于与密码学相关的缺陷,这些缺陷通常会导致敏感数据公开或系统受损。

A03:注入(2021-Injection)

较2017版相比下滑至第3位。超过94% 的app都针对各种形式的注入进行了测试。对应到注入有33 个CWE,在app中出现的次数位列第二。跨站脚本攻击(XSS)目前属于现版本中注入的一部分。

A04:不安全设计(2021-Insecure Design)

2021年Top 10的新主题,重点关注了与设计缺陷相关的风险。如果我们真的想作为一个行业发展,就需要更多地使用威胁模型分析、安全设计模式和原则以及参考架构。

A05:安全性错误配置(2021-Security Misconfiguration)

较前版的第6位相比上升1位。90% 的app都需要经过某种形式的错误配置测试。随着更多转向高度可配置的软件,也就不奇怪为什么这个主题排名能够上升了。之前的XXE主题现在也属于A05类别。

A06:易受攻击与过时组件(2021-Vulnerable and Outdated Components)

前版名称是“应用已知漏洞组件”(Known Vulnerabilities),在行业调查中位列第2,并有足够的数据通过数据分析进入Top 10排名。该类别从 2017 年的第9位上升,是一个难以测试和评估风险的已知问题。这是唯一没有任何CVE可以对应到已归结CWE的主题,因此以默认的利用和影响权重5.0计入评分标准。

A07:身份验证与认证失败(2021-Identification and Authentication Failures)

以前称为错误认证(Broken Authentication),从第2位下滑至第7位。现在包括与识别失败更多相关的 CWE。有着标准化框架可用性增加的帮助,该主题仍然是前10的一个组成部分。

A08:软件和数据完整性故障(2021-Software and Data Integrity Failures)

2021 年的一个新主题,着眼于在不验证完整性的情况下,做出与软件更新、关键数据和 CI/CD 管道相关的假设。CVE/CVSS 数据中最高加权影响之一可以对应到A08中的10个CWE。2017年的不安全反序列化(Insecure Deserialization) 现属于A08的一部分。

A09:安全日志记录和监控失败(2021- Security Logging and Monitoring Failures)

以前被称为日志记录和监控不足( Insufficient Logging &Monitoring )。是从行业调查第3位中添加的,从之前的第10位上升。A09被扩大成为一个能够包含更多故障类型的主题,对于我们进行测试有一定的挑战性,而且在 CVE/CVSS 数据中也没有很好的表现。但是,A09类故障会直接影响到可见(visibility)、事件警报(incident alerting)和取证(forensics)的准确性。

A10:服务器端请求伪造(2021-Server-Side Request Forgery)

A10是直接从行业调查第1位中添加的。数据显示,在高于平均水平的测试里,A10的发生率相对较低,但Exploit和潜在的Impact都高于平均水平。这也正表示了行业专业人士在告诉我们,就算目前数据中没有显示出来,服务器请求伪造还是很重要的事实。

评选方式

新版Top 10的评选比以前都看重数据,但并非盲目受数据影响。OWASP从各方贡献的数据中选择了10个主题中的8个,然后从高水平行业调查中选择了剩下的2个。这样做的根本原因是,查看贡献的数据就等于是回顾过去。AppSec研究人员花了大量时间去寻找新的漏洞和测试它们的新方法,但将这些测试运用到实际工具和流程中还需要等待一段时间。等到能够可靠地进行大规模测试时,时间可能已经过去了很久。为了平衡这点,就应该将行业调查利用起来。去询问专业的一线人员,关于他们所发现的可能还尚未在数据中显示出来的漏洞。

这就是OWASP采用的为了使Top 10变得更加成熟的关键变化措施。

怎样归纳出各个主题?

与上一期OWASP Top 10相比,一些主题发生了改变。以下是关于主题变更的高级摘要。以前的数据收集工作集中在大约 30 个CWE的规定子集上,并要求有1个额外发现的领域。OWASP了解到,组织将主要关注那 30 个 CWE,很少添加他们看到的其它CWE。本次迭代中OWASP完全抱着开放心态,只询问数据,对CWE没有设置任何限制。他们查询了从 2017 年开始测试的应用程序数量,以及在测试中发现至少一个 CWE实例的应用程序数量。这种形式使OWASP能够跟踪每个CWE在应用程序群体中的活跃程度。应用程序有4个CWE实例还是4000个实例,都不是影响进入Top 10的因素。在大约30个CWE到近400个CWE的跨度下,对数据集中进行了分析。未来将计划做额外的数据分析作为补充。这种在CWE数量需求上的增加会影响到提炼、归纳主题的方式。

OWASP用了好几个月的时间对 CWE 进行分组和分类,本需要再多花几个月,但他们不得不停下来。CWE可以分为“根本原因(root cause)”和“症状表现(symptom type)”类型,其中根本原因类型如“加密失败”和“错误配置”,可以和“敏感数据暴露”和“拒绝服务”等症状表现类型形成对比。OWASP决定尽可能关注根本原因,因为在提供识别和补救建议方面,根本原因更加重要。关注根本原因而不是症状表现,这并不是一个新概念。Top 10便是症状表现和根本原因的混合体,CWE也同样是症状表现和根本原因的混合体。现版本中每个类别平均有 19.6 个 CWE,A10:2021-服务器端请求伪造(SSRF) 的下限为 1 个 CWE,而 A04:2021-不安全设计中的 CWE 下限为 40 个。现版本更新的归纳法其实提供了额外的培训好处,比方公司可以专注于对语言/框架有意义的 CWE。

在归纳过程中,我们如何使用数据?

2017年,OWASP根据事件发生概率来挑选各种主题,然后通过团队讨论,根据以往数十年的可利用性(exploitability)、可检测性(Detectability,也是可能性)和技术影响(Technical Impact)这三点来进行了排名。对于 2021 年,OWASP选择将数据用于利用(Exploit)和影响(Impact)的统计。

OWASP下载了OWASP Dependency Check,并提取了按相关CWE分组的CVSS 利用和影响的分数。这需要他们用一段时间去研究,因为所有CVE都有 CVSSv2 分数,但CVSSv2中存在CVSSv3应该解决的缺陷。过了段时间,所有CVE都被标上了CVSSv3 分数,并且CVSSv2与CVSSv3的评分范围和公式也进行了更新。

在 CVSSv2 中,利用和影响最大可以达到 10.0分,但公式会将它们的分数降低,利用只剩60%,影响下降至原本的40%。在CVSSv3 中,利用的理论最大分数限制为 6.0,影响的理论最大分数限制为4.0。考虑到权重,影响的评分在 CVSSv3 中平均上升了近1.5,而利用的评分平均下降了0.5。

OWASP Dependency Check提取的NVD数据中,有125000条CVE对应到CWE的记录,对应到CVE的特殊CWE有241条。62000条 CWE有CVSSv3 分数,大约是数据集数量的一半。

对于Top 10,OWASP按以下方式计算平均利用和影响分数。按CWE将所有有CVSS分数的CVE分组,并通过“有 CVSSv3数量的百分比”+“剩余有CVSSv2 的数量”,对利用和影响进行加权,获得了总体平均值。再将这些平均值对应到数据集中CWE,以用作另一半的风险等式的利用和影响评分。

转载于山石网科安全技术研究院