深夜,急诊室大厅灯火通明。救护车送来了一波病人,分诊护士没有按“先来后到”接诊,而是快速量血压、查意识、看呼吸,然后贴上不同颜色的标签:红色立即抢救,黄色尽快处理,绿色稍后再看。决定优先级的不是排队时间,而是危重程度。 AI 系统的漏洞报告,就像一批批涌进急诊室的病人。有些漏洞能让攻击者直接窃取全部训练数据(红色危重),有些只是让模型偶尔答错一个无关紧要的问题(绿色轻伤)。如果安全团队不区分轻重缓急,就会在鸡毛蒜皮上耗尽精力,真正的致命伤却无人问津。CVSS(Common Vulnerability Scoring System,通用漏洞评分系统)就是安全团队的“分诊表”——它用一套标准化的指标,把抽象的漏洞量化为 0 到 10 的分数,帮助安全工程师快速回答三个问题:这个漏洞有多危险?现在多危险?在我们这个环境里多危险? 这篇文章将带你以“急诊分诊”为向导,从分诊表的设计逻辑出发,逐步理解 CVSS 的三个评分组、AI 场景下的特殊考量、向量字符串的构造,以及最终如何把分数变成修复行动。
掌握 CVSS,AI 安全从业者就能用全行业通用的“语言”量化漏洞严重性,在红队测试、漏洞管理和合规审计中做出有依据的优先级决策。
可视化演示
动态演示CVSS影响评估在AI中的应的核心机制,通过基础/核心/应用/扩展四种模式展示关键概念与交互流程。
本节配有交互动效(进入视口后自动加载,约 3KB)。
CVSS影响评估在AI中的应:CVSS CVSS评分体系与AI安全评估 基础评分组的AI场景维度解析 核心机制可视化 CVSS影响评估在AI中的应整体架构与关键组件
CVSS基础认知
急诊分诊台前,分诊护士手里拿着一张标准化的分诊卡,上面写着统一的评估条目:意识是否清醒、呼吸频率多少、血压高不高。无论哪家医院、哪位护士,面对同一个病人都能打出基本一致的分——这就是标准化表的威力。CVSS 之于安全漏洞,正是这样一张“分诊卡”。
CVSS 由 FIRST 组织维护,当前主流是 3.1 版本。它把漏洞的严重程度映射到 0 到 10 的连续刻度上:越接近 10 越危险。更重要的是,它把评估拆成三个先后衔接的评分组:基础评分组(这个漏洞天生有多危险)、时间评分组(随时间推移现在有多危险)、环境评分组(在我们企业环境里实际有多危险)。三组分数逐级精化,像分诊护士先看基础体征,再追问病史演变,最后结合本院条件下结论。
在红队测试中,CVSS 的价值不只是“打分”本身,而是让红队输出的漏洞报告能被蓝队、运维和管理层用同一种语言理解。没有它,一份报告写“模型可被诱导泄露隐私”,另一份写“反序列化漏洞可远程代码执行”,严重性根本无法横向比较;有了它,漏洞列表就变成了一张按分数降序排列的优先级清单。
这张分诊卡,让安全团队从“凭感觉判断谁更急”升级为“用统一刻度排序”,从第一步就避免了抢救室里最危险的混乱——所有人都觉得自己的病人最重。
基础评分组
分诊护士先看的是病人当下的生命体征:伤在哪里、出血多少、意识如何。这类信息不依赖“这个病人是谁”“医院有什么设备”,只描述创伤本身。基础评分组做的正是这件事——它衡量漏洞固有的、与外部环境无关的危险程度。
基础评分组由两大块构成。第一块是影响指标,看漏洞攻破后对保密性(Confidentiality)、完整性(Integrity)、可用性(Availability)的损害,分别记作 C、I、A,取值从 0(无损害)到 1(完全丧失)。第二块是可利用性指标,看攻击者多容易把漏洞变成实际进攻:攻击向量 AV(攻击者从哪条路进来,网络远程最方便)、攻击复杂度 AC(进攻操作复不复杂)、权限要求 PR(攻击前需要什么权限)、用户交互 UI(要不要诱导用户点一下)。四项指标查表得到 0 到 1 之间的系数,代入公式算出“可利用分”。
基础分回答的是“如果这个漏洞被完全利用,最坏能造成多大伤害”。但它就像分诊初判——只看了一眼病人,还没来得及追问既往病史和医院条件,这个分数只是起点,不是终点。
- C、I、A 三个影响变量保密性、完整性、可用性受损程度,取值 0 到 1,越高表示损失越惨重。
- 1-(1-C)(1-I)(1-A)把三个维度的损伤聚合成一个综合损伤值,任何一个维度完全失守都会让该值逼近 1。
- 6.42 × [……]给综合损伤乘上权值,换算成“影响分”,体现漏洞对系统核心资产的伤害规模。
- AV × AC × PR × UI攻击向量、攻击复杂度、权限要求、用户交互四项系数相乘,乘积越大代表攻击门槛越低。
- min(……, 10)把影响分与可利用分相加后的结果封顶在 10 分,避免极端组合溢出刻度。
时间评分组
分诊护士给病人贴完初判标签后,并不会转身就走。她每隔一段时间会复查:那个胳膊骨折的病人虽然指标稳定,但网上刚传出了他的血型稀有且已出现过敏反应的报告——标签该撕下来重贴了。漏洞也一样:一个漏洞刚被披露时可能只有理论分析,一周后攻击者写出了可用的利用工具,一个月后厂商发布了补丁。同一漏洞,危险程度随时间剧烈波动。
时间评分组引入三个修正系数。利用代码成熟度(Exploit Code Maturity,记作 E)描述了漏洞利用代码的公开程度:从“未公开”到“有高度成熟的攻击程序”,系数逐渐逼近 1,分数随之抬高。补丁缓解状态(Remediation Level,记作 RL)描述目前有没有官方补丁或缓解措施:官方补丁已发布,风险下降,系数小于 1 拉低分数。报告置信度(Report Confidence,记作 RC)描述漏洞报告的可信程度:只有民间传闻时置信度低,技术细节被完整验证后置信度达到最高。
回顾分诊现场:同一个病人,昨天贴绿色标签,今天利用代码一公开立刻换成红色。时间评分组的存在,就是为了让安全团队不能“一次评分、终身使用”,必须跟着攻击态势更新判断。
- CE 利用代码成熟度从“无利用代码”到“攻击程序已公开”,取值 0.91 到 1.0,利用代码越成熟、系数越大、分数越高。
- RL 补丁缓解状态从“无官方方案”到“有官方补丁”,取值 0.95 到 1.0,补丁越完善、系数越小、分数越被拉低。
- RC 报告置信度从“未证实传闻”到“细节已验证”,取值 0.95 到 1.0,置信度越高、系数越接近 1。
- 三者连乘作用于基础分三个系数都在 0.9 到 1.0 之间,连乘后相当于对基础分做小幅“打折”,让分数贴合当下的攻防态势。
环境评分组
同样是骨折,在三甲医院可以立刻手术,在偏远诊所只能先固定后转院。分诊结论从来不是绝对的——它取决于这家医院有什么资源、这位病人是什么身份。CVSS 的环境评分组,就是为“我们单位”量身定制的复诊。
环境评分组引入了安全需求概念:机密性需求(Confidentiality Requirement,CR)、完整性需求(Integrity Requirement,IR)、可用性需求(Availability Requirement,AR),每项取值“低、中、高”三档,分别对应 0.5、1.0、1.5 的权重。如果一套系统存着用户隐私数据,CR 就调成高,机密性影响被放大;如果只是公开信息展示,CR 调成低,同样漏洞对这家企业就没那么致命。
环境分的重算思路是:把基础分公式里的 C、I、A 换成“原始值 × 安全需求权重”,其他可利用性指标保持不变,再代入公式重新计算。由于 CR/IR/AR 可以大于 1,环境分可能高于或低于基础分——一个对外暴露且存有敏感数据的系统,环境分可能被推高到 9.0 以上;而一个隔离内网里的开发工具,环境分可能被压到 4.0 以下。
这张“定制化标签”对企业决策至关重要:同一个 CVE 漏洞,在互联网公司和在核电站的优先级天差地别。环境评分组把 CVSS 从“通用刻度”变成了“本院刻度”,让修复排序真正贴合业务风险。
AI维度扩展
分诊护士遇到孕妇会多问一句孕周,遇到老人会多看一眼用药史。通用分诊卡虽然好用,却覆盖不了特殊人群的特殊风险。AI 系统就是这样一群“特殊病人”——通用 CVSS 指标覆盖了传统软件漏洞,却没有回答两个 AI 场景下的关键问题:模型坏了能不能重来?数据被偷了损失多大?
模型可恢复性评估的是模型被攻击破坏后,团队用合理成本重新训练、恢复到原有效果的难度。开源社区的大模型被微调破坏?重新下载权重即可恢复,可恢复性高、加分少;一个耗费千万算力、用了数月私有数据训练出来的医疗诊断模型被投毒,重训成本和业务中断损失巨大,可恢复性低、急需重点防护。数据敏感性则评估训练数据与业务数据的保密价值:公开网页语料被扒走无所谓,用户医疗记录、金融交易数据一旦泄露就是合规事故,数据敏感性高,对应的保密性影响权重应被上调。
在实操中,AI 安全团队通常不会推翻 CVSS,而是在环境评分组或附加评估条目中叠加这两个 AI 维度:对模型可恢复性低、数据敏感性高的资产,上调 CR/IR/AR 权重,或直接在报告里附注“AI 扩展评分”,提示决策者关注通用分数之外的模型特有风险。
给 AI 病人量身定制分诊卡,意味着我们不能照搬通用表格,而是要在标准流程上增加“问诊项”。有了模型可恢复性和数据敏感性这两个补充维度,AI 漏洞评估才从“软件漏洞视角”升级为“模型资产视角”。
向量字符串
急诊病历上写满了简写符号:“BP 120/80,HR 72,T 36.5℃“。医生扫一眼就懂,护士交接时照抄即可,谁也不会把”血压”两个字完整写一遍。CVSS 向量字符串(Vector String)就是漏洞世界的病历缩写——它把评分组涉及的所有指标压缩成一行标准化文本,让机器能读、人能看懂、跨系统可传递。
向量字符串的构造规则是以冒号分隔的键值对序列:开头标注版本号,然后依次列出可利用性、影响、时间等指标。例如下面这行经典向量:
向量字符串的最大价值在于无损传递:一份红队报告只需附上一行向量,漏洞管理平台即可自动解析并重算分数,不必人工转录。就像病历缩写让不同科室的医生无缝协作,向量让“发现漏洞”和“修复漏洞”之间的信息链不再断裂。
- 版本号与作用域
CVSS:3.1声明使用 3.1 版标准,S:U表示作用域(Scope)不变,即漏洞影响范围不会越出当前组件边界。 - 可利用性段
AV:N表示攻击向量为网络远程(Network),AC:L表示攻击复杂度低(Low),PR:N表示无需任何权限(None),UI:R表示需要受害者交互(Required)。 - 影响段
C:H/I:H/A:H代表漏洞一旦被利用,保密性、完整性、可用性都造成高(High)程度损害。 - 时间段(可省略)向量尾部可追加
E:P/RL:W/RC:C表示利用代码成熟度为概念验证(P)、补丁状态为官方临时修复(W)、报告置信度为已确认(C)。
修复优先级
分诊台的终极产物不是一张写满指标的评分卡,而是贴在病人身上的颜色标签——它直接决定抢救顺序。CVSS 分数的归宿同样如此:把 0 到 10 的连续数值映射到离散的修复优先级,让安全团队立刻知道“先修哪个,后修哪个”。
业界通行的分档方式是:9.0 至 10.0 为红色(紧急),通常要求 24 小时内响应;7.0 至 8.9 为橙色(高危),要求一周内安排修复计划;4.0 至 6.9 为黄色(中危),纳入常规迭代修复;0.1 至 3.9 为绿色(低危),记录在案、择机处理。需要注意的是,划分优先级时应以环境分为主要依据,因为环境分已经吸收了企业资产价值和 AI 特有风险,比裸基础分更贴近真实业务。
在红队测试流程中,这套映射机制形成了完整闭环:红队发现漏洞 → 构造 CVSS 向量 → 计算基础分与时间分 → 结合企业环境算出环境分 → 映射优先级 → 推送修复工单 → 修复后复测并更新分数。整个过程可以用自动化平台串联,红队的产出从“一份 PDF 报告”变成“一张可追踪、可排序、可验证的优先级看板”。
分诊台的最后一幕是所有病人各得其所:红色病人已被推进抢救室,黄色病人在观察区等待,绿色病人拿到了口服药回家休养。CVSS 的最终价值也正在于此——它不是让安全团队沉迷于“给漏洞打分”的智力游戏,而是让每一次修复投入都流向最危险的缺口。
AI 应用场景
AI红队测试报告标准化
阶段:红队测试结果输出
解决的问题:传统红队报告用自由文本描述 AI 漏洞,如“模型可被提示注入劫持”,严重程度靠个人经验判断,安全团队无法跨项目比较漏洞优先级。引入 CVSS 后,每个 AI 漏洞都附带标准向量与分数,直接对接漏洞管理平台。
具体案例:红队在一次大模型渗透测试中发现“提示注入可导致系统指令被覆盖”,评估攻击向量为网络远程、复杂度低、无需权限需交互,C/I/A 均高,再叠加模型可恢复性低、数据敏感性高两个 AI 维度,最终环境分 9.2,映射为红色紧急工单,推动模型团队连夜热修复。
企业AI资产漏洞分诊SLA
阶段:漏洞管理
解决的问题:一家公司同时拥有十几个 AI 模型资产,漏洞数量远超修复产能。用统一 CVSS 环境分(含 AI 维度)排序,自动区分“对外服务的金融对话模型”和“内部文档摘要模型”的修复优先级,并生成对应 SLA 工单。
具体案例:某银行 AI 系统出现 12 个漏洞,环境评分组根据数据敏感性自动把涉及客户交易数据的模型漏洞上调两级,把不涉及敏感数据的内部工具漏洞下调一级,修复排期由此前的人工争论变为系统排序。
AI模型上线安全门禁
阶段:模型发布与运维
解决的问题:传统上线流程只检查功能指标,忽略安全评分。把 CVSS 评估嵌入 CI/CD 流水线,新模型发布前自动扫描并计算基础分、时间分与环境分,超过阈值则阻断发布。
具体案例:某智能客服系统更新版本时,流水线检测到新引入的依赖组件存在 CVSS 8.5 分漏洞且利用代码已公开,自动阻断发布并通知安全团队,在代码修复后才放行上线。
Python 演示
def calc_base_score(av, ac, pr, ui, c, i, a): """计算CVSS基础分(简化版CVSS 3.1公式)""" impact_score = 6.42 * (1 - (1 - c) * (1 - i) * (1 - a)) exploit_score = 8.22 * av * ac * pr * ui return round(min(impact_score + exploit_score, 10), 1) def calc_temporal_score(base, ce=1.0, rl=1.0, rc=1.0): """按时间维度调整:利用代码成熟度、补丁状态、报告置信度""" return round(base * ce * rl * rc, 1) def severity_level(score): """分数映射到修复优先级,模拟急诊分诊标签""" if score >= 9.0: return "红色: 立即修复" if score >= 7.0: return "橙色: 尽快修复" if score >= 4.0: return "黄色: 常规修复" return "绿色: 观察即可" def main(): # 模拟某AI客服系统的提示注入漏洞 print("=== AI漏洞CVSS评分演示 ===") base = calc_base_score( av=0.85, ac=0.77, pr=0.85, ui=0.62, # 网络远程/低复杂度/无需权限/需交互 c=1.0, i=1.0, a=0.0 # 保密性和完整性高损失 ) print("基础分: %.1f" % base) # 攻击者已公开利用代码,官方补丁尚未发布 temporal = calc_temporal_score(base, ce=1.0, rl=0.95, rc=1.0) print("时间分: %.1f (利用代码已公开)" % temporal) # 输出分诊结论 print("修复优先级: %s" % severity_level(temporal)) if __name__ == "__main__": main()
impact_score = 6.42 * (1 - (1 - c) * (1 - i) * (1 - a))把 C、I、A 三项损失聚合成影响分,任一维度为 1 时整体迅速升高。exploit_score = 8.22 * av * ac * pr * ui四项可利用性系数相乘,攻击门坎越低系数越大。return round(min(impact_score + exploit_score, 10), 1)两分相加并封顶 10,保留一位小数输出。calc_temporal_score(base, ce, rl, rc)利用代码一公开,CE 变大,时间分立刻被推高。severity_level(temporal)把连续分数落到红/橙/黄/绿四档优先级,模拟分诊标签。
常见误区
误区“这个漏洞 CVSS 评分 9.8,太可怕了,今晚必须通宵修复!”很多初学者看到高基础分就立刻触发最高警报,完全无视系统是否真的暴露在风险中。
正解基础分 9.8 只说明漏洞“天生危险”,但真实风险取决于环境分。如果这个漏洞影响的组件部署在隔离内网、无敏感数据、不可被外部访问,环境分可能被拉低到 4.0 以下。就像急诊室看到一个浑身是血的病人,先检查后判断——血可能只是鼻血,真正的致命伤在别处。正确的做法是优先看环境分。
为何常见:CVSS 分数直观醒目,基础分最容易获取;环境分需要额外收集资产信息,人们容易被最显眼的数字带偏。
误区“漏洞入库时打了 6.5 分,之后就不管了,反正分数写在报告里了。”这是把 CVSS 当成一次性的标签。
正解漏洞利用代码一旦公开、补丁一旦发布,时间评分组会让分数发生显著变化。一个入库时 6.5 分的漏洞,利用代码公开后可能涨到 8.4 分,优先级随之提升。分诊护士不会贴完标签就离开,安全团队也不能评分后就遗忘,需要定期用时间分刷新漏洞状态。
为何常见:传统漏洞管理流程以“入库”为终点,缺乏对时间维度的流程设计;很多人把 CVSS 误解为静态属性而非动态评估。
误区“CVSS 是行业标准,AI 漏洞也是漏洞,直接套用就行,不用额外维度。”这种观点忽视了 AI 资产的独特风险结构。
正解通用 CVSS 覆盖了传统软件的 CIA 三性,但回答不了“模型被破坏后重训成本多高”“训练数据泄露损失多大”这类 AI 特有风险。医疗 AI 模型被投毒,通用分数可能只有 6.0,但加上模型可恢复性低、数据敏感性高之后,环境分可能飙到 9.0。需要像问诊特殊病人一样,为 AI 场景叠加专属评估维度。
为何常见:初学者只看到 CVSS 的“通用”二字,误以为通用等于全面;实则通用是指测量方法标准化,而非覆盖所有场景。
误区“分数就是客观事实,9 分一定比 5 分危险,照着分数排序修就行。”把分数当成终极真理,是评分工具最常见的误用。
正解CVSS 是决策辅助工具,不是风险本身。它只衡量漏洞的技术属性,不包含业务损失金额、攻击者实际动机、防御措施有效性等维度。环境分已经尽力靠近业务,但最终仍需安全专家结合威胁情报和资产重要性做综合判断。4.0 分的核心数据库漏洞可能比 8.0 分的边缘系统更需要优先修复。
为何常见:人脑天然喜欢简单数字,把复杂风险压缩成一个 0-10 的分数很有诱惑力;但压缩过程必然丢失信息,分数只能作为分诊参考。
面试题
Q1. CVSS 的评分范围是多少?
- A.0 到 1 分
- B.0 到 10 分← 正确答案
- C.1 到 100 分
- D.-10 到 10 分
答案:B。CVSS 将漏洞严重程度映射到 0-10 的连续刻度,越接近 10 越危险。A 是概率范围,C 是百分比刻度,D 对称范围,均不符合 CVSS 设计。
Q2. 以下哪个评分组与时间变化无关?
- A.基础评分组← 正确答案
- B.时间评分组
- C.环境评分组
- D.综合评分组
答案:A。基础评分组描述漏洞固有属性,不随时间改变;时间评分组引入利用代码、补丁状态等时效因素;环境评分组按企业环境定制。D 并非标准评分组名称。
Q3. 基础分公式中 min(..., 10) 的作用是什么?
- A.让分数不低于零
- B.让总分封顶在十分← 正确答案
- C.让影响分自动取整
- D.让可利用分翻倍计算
答案:B。min(..., 10) 把影响分与可利用分的和限制在 10 以内,防止极端组合溢出刻度。A 项由公式本身保证,C 项是舍入问题,D 项与封顶逻辑无关。
Q4. 时间评分组中“利用代码成熟度”反映的是什么?
- A.漏洞利用代码的公开程度← 正确答案
- B.漏洞披露报告的时间
- C.攻击者使用的操作系统
- D.漏洞影响的具体版本
答案:A。利用代码成熟度描述攻击程序从“未公开”到“高度成熟”的发展阶段,越高代表实际攻击越迫近。B 是时间要素但非该指标含义,C、D 与时间评分无关。
Q5. 环境评分组主要解决什么问题?
- A.漏洞是否已经被完全修复
- B.不同企业的个性化风险差异← 正确答案
- C.攻击者技术能力的量化评分
- D.漏洞代码的作者身份溯源
答案:B。环境评分组通过 CR/IR/AR 安全需求权重修正基础指标,让同一漏洞在不同企业得到不同分数,贴合各自资产与合规要求。A 属于时间评分组,C、D 超出 CVSS 评估范围。
Q6. AI 模型漏洞评估中,最需要补充的独有维度是?
- A.模型可恢复性与数据敏感性← 正确答案
- B.攻击向量与攻击复杂度
- C.权限要求与用户交互程度
- D.补丁状态与报告置信度
答案:A。通用 CVSS 指标覆盖传统软件漏洞,但模型可恢复性(重训成本)和数据敏感性(训练数据价值)是 AI 资产特有风险。B、C 属于通用可利用性指标,D 属于通用时间评分组。
Q7. 基础评分组中的可利用性指标包含哪些?
- A.攻击向量← 正确答案
- B.攻击复杂度← 正确答案
- C.权限要求← 正确答案
- D.数据敏感性
答案:ABC。可利用性四要素为攻击向量(AV)、攻击复杂度(AC)、权限要求(PR)、用户交互(UI)。数据敏感性属于 AI 扩展维度,不属于基础评分组。
Q8. 时间评分组包含哪些修正指标?
- A.利用代码成熟度← 正确答案
- B.补丁缓解状态← 正确答案
- C.报告置信度← 正确答案
- D.机密性需求
答案:ABC。时间评分组用利用代码成熟度、补丁缓解状态、报告置信度三个系数修正基础分。机密性需求 CR 属于环境评分组的安全需求指标,不应混淆。
Q9. 关于 CVSS 在 AI 安全中的应用,下列说法正确的有?
- A.AI 漏洞可用 CVSS 进行标准化评估← 正确答案
- B.需要补充模型专属评估维度← 正确答案
- C.评分后可映射到修复优先级← 正确答案
- D.CVSS 分数完全决定真实业务风险
答案:ABC。CVSS 为 AI 漏洞提供标准量化框架,叠加模型可恢复性、数据敏感性后可适配 AI 场景,分数映射优先级可落地修复流程。但分数是决策辅助而非充分条件,D 夸大了分数的权威性。
Q10. 向量 CVSS:3.1/AV:N/AC:L/PR:N/UI:R/S:U/C:H/I:H/A:H 中 AV:N 表示什么?
- A.攻击向量为网络远程← 正确答案
- B.攻击向量为本地操作
- C.攻击复杂度为低难度
- D.权限要求为无需权限
答案:A。AV 指攻击向量(Attack Vector),N 代表 Network,即攻击者可远程通过网络利用该漏洞,这是最危险的攻击路径。B 是 AV:L,C 是 AC:L,D 是 PR:N,键名不同。