3、CVSS评分机制:CVSS v3.1基础指标详解
CVSS评分,说白了就是给漏洞定个「危险等级」。我见过不少团队拿着CVSS 10分的漏洞就慌得不行,结果发现攻击条件极其苛刻;也见过7分的漏洞被忽视,最后被利用得千疮百孔。所以,理解基础指标到底在衡量什么,比只看最终分数重要得多。
CVSS v3.1的基础指标(Base Metrics)是整个评分的根基。它衡量的是漏洞本身的固有属性,不依赖环境、不依赖时间。说白了,就是假设最坏情况下,这个漏洞能造成多大破坏。
3.1 攻击向量(Attack Vector, AV)
攻击向量描述的是攻击者「从哪里」发起攻击。这个指标直接决定了漏洞被利用的难易程度。
| 取值 | 缩写 | 含义 | 评分权重 |
|---|---|---|---|
| 网络 | AV:N | 攻击者可以从远程网络发起攻击,无需物理接触 | 0.85 |
| 相邻网络 | AV:A | 攻击者需在同一广播域或物理相邻网络 | 0.62 |
| 本地 | AV:L | 攻击者需拥有本地系统访问权限 | 0.55 |
| 物理 | AV:P | 攻击者需物理接触设备 | 0.20 |
3.2 攻击复杂度(Attack Complexity, AC)
攻击复杂度衡量的是攻击者需要具备多少「特殊条件」才能成功利用漏洞。这个指标经常被误解。
- 低(AC:L):攻击者不需要任何特殊条件,每次攻击都能成功。比如,直接发送一个恶意数据包就能触发。
- 高(AC:H):攻击者需要依赖特定时机、特定配置或特定环境。比如,需要用户恰好处于某个状态,或者需要绕过某些随机化机制。
3.3 权限要求(Privileges Required, PR)
这个指标衡量的是攻击者在利用漏洞之前,需要拥有什么级别的权限。
| 取值 | 缩写 | 含义 | 评分权重 |
|---|---|---|---|
| 无 | PR:N | 攻击者无需任何权限即可利用 | 0.85 |
| 低 | PR:L | 攻击者需要普通用户权限 | 0.62(影响范围不变)/ 0.68(影响范围改变) |
| 高 | PR:H | 攻击者需要管理员或root权限 | 0.27(影响范围不变)/ 0.50(影响范围改变) |
这里有个细节:当影响范围(S)改变时,PR的权重会调整。为什么?因为如果漏洞能突破权限边界(比如从普通用户提权到系统级),那么即使需要高权限,其危害也更大。
3.4 用户交互(User Interaction, UI)
用户交互衡量的是漏洞利用是否需要受害者「主动配合」。
- 无(UI:N):攻击者不需要受害者做任何操作。比如,一个自动触发的远程代码执行漏洞。
- 需要(UI:R):受害者需要执行某个操作,比如点击链接、打开文件、安装应用等。
关键点: UI:R的漏洞虽然需要用户配合,但千万别低估。我见过一个钓鱼邮件,用户只要点一下链接,整个域就被拿下了。UI:R只是增加了利用门槛,不代表漏洞不危险。
3.5 影响范围(Scope, S)
影响范围是CVSS v3引入的一个新概念,也是很多人容易搞混的地方。它衡量的是漏洞是否「跨越了安全边界」。
- 不变(S:U):漏洞只能影响同一个安全组件或权限域。比如,一个Web应用漏洞只能影响该应用本身,无法影响底层操作系统。
- 改变(S:C):漏洞可以跨越安全边界,影响其他组件或权限域。比如,一个容器逃逸漏洞,能从容器内部影响到宿主机。
为什么这个指标重要?因为S:C的漏洞往往意味着「连锁反应」。一个看似不起眼的漏洞,如果影响范围是改变,就可能成为整个系统的突破口。
3.6 三个影响指标(C/I/A)
这三个指标衡量的是漏洞对机密性(Confidentiality)、完整性(Integrity)、可用性(Availability)的破坏程度。
| 指标 | 高(H) | 低(L) | 无(N) |
|---|---|---|---|
| 机密性(C) | 所有数据完全泄露 | 部分数据泄露或非敏感信息泄露 | 无影响 |
| 完整性(I) | 所有数据可被完全篡改 | 部分数据可被修改 | 无影响 |
| 可用性(A) | 完全拒绝服务 | 部分降级或资源消耗 | 无影响 |
3.7 基础指标评分公式
CVSS v3.1的基础评分不是简单的加权平均,而是一个复杂的公式。我直接给出核心逻辑:
基础评分 = 影响子评分 × 可利用性子评分 × 范围调整因子
其中:
- 影响子评分 = 1 - [(1 - C) × (1 - I) × (1 - A)]
- 可利用性子评分 = 8.22 × AV × AC × PR × UI
- 范围调整因子:S:U 为 1.0,S:C 为 1.08
嗯,这个公式看起来有点绕。但核心思想是:影响越大、越容易被利用,分数越高。而且,影响范围(S)的改变会放大整体分数。
3.8 知识体系图
下面这张图展示了CVSS v3.1基础指标的整体结构,以及它们如何共同决定最终评分。
3.9 实战中的优先级判断
理解了每个指标后,怎么用?我个人的优先级判断逻辑是这样的:
- 先看影响范围(S):S:C的漏洞,优先级直接提升一级。因为一个漏洞可能引发连锁反应。
- 再看攻击向量(AV)和攻击复杂度(AC):AV:N + AC:L的组合,基本就是「高危预警」。
- 然后看权限要求(PR)和用户交互(UI):PR:N + UI:N,意味着攻击者可以「无门槛」利用。
- 最后看C/I/A:结合业务场景,判断哪个影响最致命。
举个例子: 一个漏洞的CVSS基础评分是9.8(AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H)。虽然评分很高,但影响范围是U(不变)。这意味着它只能影响当前组件,不会扩散。而另一个评分7.5的漏洞(AV:N/AC:L/PR:N/UI:N/S:C/C:L/I:L/A:N),虽然评分低,但影响范围是C(改变)。在我的经验里,后者往往更值得优先处理,因为它可能成为整个系统的突破口。
嗯,CVSS评分机制就是这样。它不是万能的,但理解每个指标的含义,能帮你做出更精准的优先级判断。别只看总分,拆开来看,你会发现更多信息。