什么是应用安全风险?
攻击者可能通过应用中的多条路径对你的企业或组织造成损害。每一种路径都代表一种需要调查的潜在风险。

| 威胁主体 | 攻击向量 | 可利用性 | 缺失安全控制的可能性 | 技术影响 | 业务影响 |
| 由环境决定,随场景动态变化 | 由应用暴露面决定(按环境) | 平均加权可利用性 | 按平均发生率和覆盖率加权的缺失控制 | 平均加权影响 | 由业务决定 |
在风险评级中,我们考虑了可利用性的通用参数、某项弱点缺失安全控制的平均可能性,以及它的技术影响。
每个组织都是独特的,该组织面对的威胁行为者、他们的目标,以及任何安全事件造成的影响也各不相同。如果一个公益组织使用内容管理系统(CMS)发布公开信息,而一家医疗系统使用同一个 CMS 存储敏感健康记录,那么同一款软件面对的威胁主体和业务影响可能完全不同。因此,必须基于应用暴露面、场景中的适用威胁主体(包括按业务和位置划分的定向与非定向攻击),以及具体业务影响来理解组织自身的风险。
数据如何用于选择类别并排序
2017 年,我们按发生率选择类别以判断可能性,再由团队基于数十年经验讨论可利用性、可检测性(同样属于可能性)和技术影响后进行排序。2021 年,我们使用国家漏洞数据库(NVD)中 CVSSv2 和 CVSSv3 分数提供的可利用性与(技术)影响数据。2025 年,我们沿用 2021 年建立的方法。
我们下载 OWASP Dependency Check,提取 CVSS Exploit 和 Impact 分数,并按相关 CWE 分组。这需要相当多的研究和处理,因为所有 CVE 都有 CVSSv2 分数,但 CVSSv2 存在一些 CVSSv3 试图修正的问题。某个时间点之后,所有 CVE 也都会分配 CVSSv3 分数。此外,CVSSv2 和 CVSSv3 的评分范围与公式也发生了变化。
在 CVSSv2 中,Exploit 和(技术)Impact 最高都可以达到 10.0,但公式会把它们分别压低到 60% 和 40%。在 CVSSv3 中,理论最高值被限制为 Exploit 6.0、Impact 4.0。按权重计算后,在我们为 2021 Top Ten 进行分析时,CVSSv3 中 Impact 分数平均提高了将近 1.5 分,而可利用性平均降低了将近 0.5 分。
从 OWASP Dependency Check 提取的国家漏洞数据库(NVD)中,大约有 17.5 万条 CVE 记录映射到 CWE(高于 2021 年的 12.5 万条)。此外,有 643 个唯一 CWE 映射到 CVE(高于 2021 年的 241 个)。在提取的近 22 万条 CVE 中,16 万条有 CVSS v2 分数,15.6 万条有 CVSS v3 分数,6000 条有 CVSS v4 分数。许多 CVE 同时有多个分数,因此这些数量相加会超过 22 万。
对 Top Ten 2025,我们按以下方式计算平均可利用性和影响分数。我们将所有带 CVSS 分数的 CVE 按 CWE 分组,然后按拥有 CVSSv3 的数据比例以及剩余 CVSSv2 数据的比例,对可利用性和影响分数进行加权,得到总体平均值。我们把这些平均值映射回数据集中的 CWE,用作风险公式另一半的 Exploit 和(技术)Impact 评分。
为什么不使用 CVSS v4.0?因为它的评分算法发生了根本变化,不再像 CVSSv2 和 CVSSv3 那样容易提供 Exploit 或 Impact 分数。我们会尝试为未来版本的 Top Ten 找到使用 CVSS v4.0 评分的方法,但在 2025 版中未能及时确定可行方式。
对于发生率,我们计算某组织在一段时间内测试的应用群体中,受每个 CWE 影响的应用比例。再次说明,我们不使用频次(即某个问题在一个应用中出现多少次),我们关注的是应用总体中有多少比例被发现存在该 CWE。
对于覆盖率,我们查看所有组织针对某个 CWE 测试过的应用比例。计算出的覆盖率越高,说明发生率的可信度越强,因为样本规模更能代表总体。
本次迭代使用的公式与 2021 年类似,但权重有所调整: (最大发生率 % * 1000)+(最大覆盖率 % * 100)+(平均可利用性 * 10)+(平均影响 * 20)+(发生总数 / 10000)= 风险分数
计算出的分数从“失效的访问控制”的 621.60 到“内存管理错误”的 271.08 不等。
这不是一个完美系统,但对风险类别排序很有价值。
另一个正在加剧的挑战是如何定义“应用”。随着行业转向由微服务和其他比传统应用更小的实现组成的架构,计算会变得更困难。例如,如果一个组织测试的是代码仓库,它把什么视为一个应用?与 CVSSv4 的发展类似,下一版 Top Ten 可能需要调整分析和评分方式,以适应持续变化的行业。
数据因素
每个 Top Ten 类别都会列出一些数据因素,含义如下:
映射的 CWE 数量: Top Ten 团队映射到某个类别的 CWE 数量。
发生率: 发生率是某组织在当年测试的应用群体中,受该 CWE 影响的应用比例。
加权可利用性: 映射到 CWE 的 CVE 所分配的 CVSSv2 和 CVSSv3 Exploit 子分数,经过归一化后放到 10 分制中。
加权影响: 映射到 CWE 的 CVE 所分配的 CVSSv2 和 CVSSv3 Impact 子分数,经过归一化后放到 10 分制中。
(测试)覆盖率: 所有组织针对某个 CWE 测试过的应用比例。
发生总数: 被发现存在该类别所映射 CWE 的应用总数。
CVE 总数: NVD 数据库中映射到该类别所映射 CWE 的 CVE 总数。
公式:(最大发生率 % * 1000)+(最大覆盖率 % * 100)+(平均可利用性 * 10)+(平均影响 * 20)+(发生总数 / 10000)= 风险分数