「CVSS 10.0」「CVSS 9.8 的 RCE」——这是漏洞新闻里必然出现的数字。它不是凭氛围打的分,而是从既定的评分标准(指标)和公式算出来的。下面从零术语开始讲解它的读法。
先看「分数的对照」
| 分数 | 等级 | 体感 |
|---|---|---|
| 9.0 – 10.0 | Critical(重大) | 立即处理。多为接管级 |
| 7.0 – 8.9 | High(高) | 尽早处理 |
| 4.0 – 6.9 | Medium(中) | 有计划地处理 |
| 0.1 – 3.9 | Low(低) | 观察处理 |
如果说 CVE 是表示「是哪个漏洞」的名字,那么 CVSS 就是表示「它有多严重」的分数。例如「CVSS 10.0 的 RCE」,意味着最高等级的远程代码执行=最坏等级。
评分标准,是实实在在存在的
CVSS 的分数大体由 3 个评估组搭建而成。现实中公布的「CVE-XXXX 是 CVSS 9.8」,绝大多数指的是最上面那一组 基础评估(Base) 的分数。
基础 Base
漏洞本身的性质。公布出来的主体分数。
威胁 Threat
按利用代码的流传程度随时间修正。
环境 Environmental
按你自己的配置・重要度重新计算。
① 易被利用程度
② 影响的大小
基础评估大致由 「① 易被利用程度」×「② 影响的大小」 决定。攻击越简单、危害越大,得分越高。下面两个表就是这些评分项目的内容。
① 易被利用程度(攻击有多容易)
| 指标 | 可取值 | 偏向高分的条件 |
|---|---|---|
| 攻击途径 (AV) | 网络 / 相邻 / 本地 / 物理 | 网络(隔着互联网)最危险 |
| 攻击复杂度 (AC) | 低 / 高 | 低(不需要特殊条件或运气)危险 |
| 所需权限 (PR) | 不需要 / 低 / 高 | 不需要(连登录都不用)危险 |
| 用户交互 (UI) | 不需要 / 需要 | 不需要(受害者什么都不做也能成立)危险 |
如果全部都落在「最危险的那一侧」,那就意味着可以隔着网络、轻松、免认证、无需对方操作地发起攻击,这是最坏的前提。
② 影响的大小(一旦成功会发生什么)
CIA 是信息安全三大支柱 机密性・完整性・可用性 的首字母。
| 指标 | 可取值 | 「高」的含义 |
|---|---|---|
| 影响范围 (S) | 无变化 / 有变化 | 有变化=侵害越过了原有权限的“盒子”波及到其他地方 |
| 机密性 (C) | 高 / 低 / 无 | 能把数据一网打尽地读取 |
| 完整性 (I) | 高 / 低 / 无 | 能随意篡改数据 |
| 可用性 (A) | 高 / 低 / 无 | 能彻底停掉服务 |
“影响范围(S):有变化”会把分数推高
比如,是只在容器内部的危害(无变化),还是从那里侵蚀到宿主机乃至其他服务(有变化),区别就在这里。这个「是否越过盒子」即便在相同条件下也会让分数大幅变动。
向量字符串:分数的“配方”浓缩在一行里
CVSS 的分数必定附带一段叫 向量字符串的短字符串。它记录了「选了哪些指标、各自怎么选的」,是分数的依据,读懂它就能明白分数的来由。
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:C/C:H/I:H/A:H → 10.0 (Critical)把这一行拆开,就能看到所有项目都落在了「最危险的那一侧」。
| 分段 | 含义 | 本例的选择 |
|---|---|---|
AV:N | 攻击途径 = 网络 | 可隔着网络攻击 |
AC:L | 攻击复杂度 = 低 | 轻松成立 |
PR:N | 所需权限 = 不需要 | 免认证即可 |
UI:N | 用户交互 = 不需要 | 无需受害者操作 |
S:C | 影响范围 = 有变化 | 越过盒子波及 |
C:H / I:H / A:H | 机密性・完整性・可用性 = 全部高 | 全被读取・被篡改・被停掉 |
区分“10.0”与“9.8”的关键
上例中如果影响范围变成「无变化(S:U)」,那么即便条件相同,分数也会降到 9.8。是否为 S:C(越过盒子)就是能否摸到最高分 10.0 的分水岭。所以 9.8 和 10.0 可以理解为「两者都是最坏等级,只是危害扩散的方式差了一档」。
v3.1 与 v4.0:如今两者并存
CVSS 有版本之分,现行最新是 v4.0(2023 年公开)。不过现实中的 CVE 大多仍用 v3.1(2019 年) 打分,短期内会并存。
| CVSS v3.1 | CVSS v4.0 | |
|---|---|---|
| 公开 | 2019 年 | 2023 年 |
| 表记 | 分数 + 向量 | 用 CVSS-B / BT / BE / BTE 明示用途 |
| 用户交互(UI) | 不需要 / 需要 的 2 档 | 细分为 不需要 / 被动 / 主动 的 3 档 |
| 影响范围 | Scope(S) 单一项目 | 分开评估「受击系统」和「波及目标系统」 |
| 补充信息 | 无 | 增加是否可自动化・可恢复性・安全性等参考指标 |
别被分数牵着走
懂了评分标准,CVSS 就是个强大的工具。但别忘了分数是 「最坏条件下的理论值」。在实务中,把分数再乘上下面两点来决定优先级,才比较贴近现实。
看是否真的在被利用(KEV)
现实中已观测到攻击的漏洞(KEV=Known Exploited Vulnerabilities),无论分数高低都是最优先。比起理论值,「此刻是否正在挨打」更重。
确认你自己是否在用这个功能
即便是 CVSS 10.0,只要没在用对应的功能或组件,实际危害就很小。反过来,中等分数但在你的生产环境里必然中招,那就是最优先。以「实际在跑的版本」来判定是铁律。
实例:曾有人把已公开的 CVSS 10.0 当作「与我无关」放着不管,结果被踩中而导致非法扣费。分数绝不能成为「可以放着不管的理由」。→ 放任 CVSS 10.0 的故事
接下来阅读
- 术语:CVE 是什么(给漏洞标注的“流水号”) / RCE 是什么(最坏等级的危害)
- 对策:把 CVE/CVSS 纳入运维(依赖的机器化监控)
- 事故:放任已公开的 CVSS 10.0 而被非法扣费的故事
FAQ
QCVSS 有评分标准吗?是凭感觉定的吗?
有明确的标准。选定攻击途径(AV)・攻击复杂度(AC)・所需权限(PR)・用户交互(UI)・影响范围(S)・机密性/完整性/可用性(CIA)这些既定指标,再通过公开的公式算出 0.0~10.0。它被设计成:只要输入相同,谁来评估都会得到相同分数——是一套可复现的机制。
Q分数是谁定的?
规范本身由 FIRST(全球事件响应组织的联盟)制定并公开。每个 CVE 的具体分数,由美国的 NVD(NIST)或厂商(产品提供方)按规范的指标打分并公布。同一个漏洞,不同评估者打出的分数有时会略有差异。
QCVSS 多少分算危险?
大致是 9.0~10.0 为 Critical(最严重),7.0~8.9 为 High(高),4.0~6.9 为 Medium,0.1~3.9 为 Low。不过分数是「最坏条件下的理论值」,所以还要结合你自己的环境里是否真的中招来一起判断。
QCVSS 高就一定要最优先修复吗?
基本上是,但更重要的是「是否真的观测到了被利用(KEV)」和「你自己是否在用这个功能」。CVSS 10.0 但没在用的话,影响也可能为零;反过来,中等分数但正在被利用,就是最优先。
Qv3.1 和 v4.0,该看哪个?
现行最新是 2023 年公开的 v4.0,但现实中大量 CVE 仍然用 v3.1 打分。短期内两者会并存。读法的基本原理(用指标通过公式算出 0~10)是相通的,所以本文的思路对哪个版本都适用。