关于 cvss-scoring
cvss-scoring 可将纯文本漏洞描述转换为 CVSS v4.0 向量,并生成带该向量的 FIRST.org 计算器链接。它面向安全审计和漏洞分级,不计算数值分数;可利用性信息不清时会先要求澄清。
主要功能
- 01提取安全相关事实
- 02评估 CVSS v4.0 基础指标
- 03标记假设的影响值
- 04按依据纳入可选指标
- 05生成附带向量的计算器链接
- 06拒绝非漏洞描述
适用场景
- 01为审计发现生成向量
- 02比较多个漏洞的相对严重程度
- 03评分前澄清缺失的可利用性信息
安装
复制下面的命令,在终端中运行。
npx skills add https:/ / github.com/ trailofbits/ skills --skill cvss-scoring安装后在 Claude Code 中输入/cvss-scoring确认已加载。
包含的文件
除 SKILL.md 外,安装时一起下载的参考资料和脚本。
.calcifier/recipe.pyreferences/examples.mdmetrics.md详细介绍
CVSS v4.0 向量评分
根据纯文本漏洞描述生成 CVSS v4.0 向量字符串,并附上已应用该向量的 FIRST.org 计算器链接。数值评分以该计算器为准。请勿尝试计算数值评分。
适用场景
- 为安全审计报告中的漏洞发现评分
- 根据错误描述生成 CVSS v4.0 向量
- 比较多个漏洞发现的相对严重程度
- 用户询问“这个的 CVSS 是多少?”或“给这个漏洞评分”
不适用场景
- 明确要求使用 CVSS v3.1(请改用组织的 CVSS v3.1 评分指南)
- 描述过于模糊,无法评估任何指标(请先要求澄清)
- 输入内容并未描述可利用的安全弱点(请参阅下文的输入验证)
- 评估风险(CVSS 衡量固有严重程度,而非特定部署环境下的风险)
- 计算数值评分(请引导用户使用 FIRST.org 计算器)
输入验证
在评估任何指标之前,先运行以下检查。如果任何一项检查未通过,请先处理该问题,再继续。
1. 这是一个漏洞吗? CVSS 向量仅对可利用的安全弱点有意义。如果输入描述的是代码质量问题、设计方面的顾虑,或没有安全影响的发现,请拒绝并回复:
此描述似乎没有说明可利用的漏洞。CVSS 用于衡量安全弱点的严重程度;不适用于 {category}。如果你认为存在可利用的影响,请从攻击者能力的角度重新描述,并重新运行。
不得为了满足请求而捏造指标。
2. 输入是否使用了 CVSS v3.1 术语? 留意 Scope(现已移除)、User Interaction: Required,或未加前缀的 CIA 三要素。如果检测到这些术语,请在输出中明确指出版本不匹配,然后再进行转换:
输入使用了 CVSS v3.1 术语;现将其转换为 CVSS v4.0 语义。已应用以下映射:{list}。
不得在不说明的情况下转换。
应拒绝的错误推理
以下是常见的评分错误。遇到这些推理时应予以拒绝:
- “可通过网络访问就意味着 AV:N” —— AV 衡量的是攻击者能够发起攻击的最远距离,而不是组件是否位于网络上。如果攻击者需要本地 shell 访问权限,那么针对网络服务的权限提升仍然是 AV:L。
- “问题很严重,所以所有影响都是 High” —— 必须分别论证每项影响指标(VC/VI/VA/SC/SI/SA)。能够执行代码的 RCE,其 VI:H(攻击者可以修改任意数据/代码),但不一定是 VC:H(除非数据确实被暴露)或 VA:H(除非攻击者可以使服务崩溃或拒绝服务)。
- “依赖项就是后续系统” —— 组件关系不能定义系统边界。专用数据库或使用了易受攻击库的应用程序,可能都属于同一个易受攻击系统;在 SC/SI/SA 中再次计入这些影响会夸大严重性。
- “没有提及后续系统,就意味着 SC/SI/SA 都是 None” —— 应确定易受攻击系统的边界,并考虑其外部可能受到的影响。如果边界或外部影响不明确,应说明不确定性,并用
[ASSUMED]标记所选值。 - “不确定时默认最坏情况” —— CVSS v4.0 要求的是合理的最坏情况,而不是绝对的最坏情况。不确定时,应选择最有依据的值,并用
[ASSUMED]标记。 - “有前置条件,所以 AC:H” —— 在 v4.0 中,AC 衡量的是规避增强安全机制(ASLR、DEP)的难度。特定配置或竞态条件等前置条件应归入 AT,而不是 AC。这是从 v3.1 迁移到 v4.0 时最常见的错误。
- “UI:R 对应 UI:P 或 UI:A” —— v4.0 将 v3.1 中的 Required 拆分为 Passive 和 Active。Passive 指非自愿交互(例如浏览网页)。Active 指用户必须有意识地执行特定操作(例如安装软件、更改设置、点击确认警告)。不要默认选择 Active。
输入处理
输入是描述漏洞的纯文本,可能包含严重性、利用难度、实现细节、利用场景和修复建议。
在为任何指标评分之前,提取并列出所有与安全相关的事实:
- 易受攻击的组件是什么?(软件、库、服务、设备)
- 如何访问该组件?(网络服务、本地二进制文件、物理设备、邻近网络)
- 攻击者需要什么权限?(未认证、用户级、管理员)
- 攻击者能实现什么?(读取数据、修改数据、执行代码、使服务崩溃、提升权限)
- 易受攻击系统的边界是什么,包括为其功能提供支持的组件?该边界之外的系统是否受到影响?
- 利用是否有前置条件或条件?(特定配置、竞态条件、处于通信路径上)
- 是否需要用户交互?如果需要,属于哪种类型?
- 是否有关于漏洞利用成熟度的信息?(有 PoC、已遭活跃利用、尚未报告)
提取事实可避免被描述中的情绪化措辞影响判断。
如果无法根据描述有把握地确定任何可利用性指标(AV、AC、AT、PR、UI),请先向用户询问上述事实提取问题,再继续评分。这五项指标对大多数评分影响最大,也是错误猜测影响最严重的地方。不要默默地默认某个值并标记。
如果影响指标(VC/VI/VA/SC/SI/SA)存在歧义,应说明歧义,解释哪些值有可能成立及其原因,选择最有依据的默认值,并在输出中用 [ASSUMED] 标记。
评分流程
严格按照以下顺序评估指标。对于每项指标,请阅读 指标参考 中的详细定义。
阶段 1:可利用性指标
根据提取的事实评估以下 5 项指标:
1. 攻击向量(AV): N / A / L / P
- 网络:可通过网络协议栈(HTTP、TCP、DNS)远程利用
- 相邻:需要位于同一局域网、使用蓝牙或 WiFi,或处于同一逻辑子网
- 本地:需要本地访问权限(Shell、文件投放、终端模拟)
- 物理:需要亲自接触或操作设备
2. 攻击复杂度(AC): L / H
- 低(默认):无需绕过安全机制
- 高:必须绕过 ASLR、DEP,或获取特定于目标的机密
- 注意:竞争条件和特定配置归入 AT,而非 AC(v4.0 相较于 v3.1 的变更)
3. 攻击要求(AT): N / P
- 无:无需特殊部署条件
- 存在:需要特定配置、竞争条件、处于链路中间位置,或其他依赖部署的条件
- 此指标在 v4.0 中是新增的——它涵盖了 v3.1 中归入 AC 的条件
4. 所需权限(PR): N / L / H
- 无:无需身份验证
- 低:基本用户帐户
- 高:管理员或提升的权限
5. 用户交互(UI): N / P / A
- 无:无需用户采取任何操作
- 被动:用户执行非自主操作(访问页面、收到消息)
- 主动:用户必须有意识地执行特定操作(安装软件、点击警告以继续、修改设置)
- v4.0 将 v3.1 的“必需”拆分为“被动”和“主动”——请谨慎选择
阶段 2:受影响系统的影响
这些指标衡量漏洞所在系统内部的影响。使用 FIRST 的关注系统模型确定其边界:具有连贯功能和一组安全策略的计算逻辑。专为该系统提供服务而设计的组件属于系统内部,例如专用数据库,或嵌入式库及其调用应用程序。对这些组件的影响应计入 VC/VI/VA。
6. 机密性(VC): H / L / N
- 高:完全丧失——受影响系统中的所有数据都暴露
- 低:部分数据暴露,但攻击者无法控制暴露的数据或数据量
- 无:无机密性影响
7. 完整性(VI): H / L / N
- 高:完全丧失——攻击者可以修改受影响系统中的任何数据
- 低:可以进行有限修改
- 无:无完整性影响
8. 可用性(VA): H / L / N
- 高:持续或永久完全丧失,或部分丧失并造成直接且严重的后果(例如,阻止新连接,同时现有连接仍可用)
- 低:性能降低或可用性中断,但未造成直接且严重的后果;反复利用漏洞也无法完全拒绝服务
- 无:无可用性影响
阶段 3:后续系统影响
这些指标衡量受影响系统边界之外的系统所受影响。此阶段取代了 v3.1 的范围指标。
仅有依赖关系、数据流或信任关系,并不意味着某个组件就是后续系统。请识别边界外的独立系统,以及漏洞利用对该系统造成的影响;不要在 SC/SI/SA 中重复计算同一项系统内影响。受 Web 应用 XSS 影响的用户浏览器,或因 Hypervisor 漏洞而遭入侵的其他来宾系统,都可以是后续系统。
9. 后续系统机密性(SC): H / L / N
10. 后续系统完整性(SI): H / L / N
11. 后续系统可用性(SA): H / L / N
如果描述未指出任何后续系统影响,则默认设为 N,但须标记为 [ASSUMED]。后续影响不为 N 的常见情况:
- XSS:SC:L、SI:L(浏览器是后续系统)。UI 取决于常规浏览是否会触发有效载荷(P),还是用户必须导航到攻击者制作的资源(A)——与存储型还是反射型无关。
- 虚拟机逃逸:SC:H、SI:H、SA:H(主机/其他虚拟机是后续系统)
- DNS 污染:SI:H、SA:H(下游解析器是后续系统)
- 身份验证服务器遭入侵:请考虑受影响的依赖服务位于受影响系统边界外时的 SC:H、SI:H
阶段 4:可选指标
威胁——利用成熟度(E): 仅当描述中提供了相关证据时才纳入。
- 已遭攻击(A):已知存在活跃利用,或已有漏洞利用工具包
- 概念验证(P):存在公开的 PoC 代码,但没有已知攻击
- 未报告(U):没有公开的 PoC,也没有已知攻击
- 未定义(X):没有可用信息(默认情况——从向量中省略)
环境指标: 仅当源描述提供相关背景时才纳入,即审计人员说明了已部署环境的 CIA 要求(CR/IR/AR),或描述了会改变基础指标的补偿控制(修改后的基础指标:MAV/MAC/MAT/MPR/MUI/MVC/MVI/MVA/MSC/MSI/MSA)。否则省略,并注明:“已省略环境指标——如果目标环境的 CIA 要求不同于默认值,请添加。”
补充指标: 仅当源描述提供相关背景时才纳入,即发现项描述了安全影响(S)、恢复特征(R)或自动化潜力(AU)。这些指标仅供参考,不影响数值评分。否则省略,并注明:“已省略补充指标——如有需要,可添加以便沟通。”
纳入这些指标时,请参阅下方的向量字符串部分,了解规范顺序。
输出格式
分三部分呈现输出:
第 1 部分:指标依据表
| Metric | Value | Justification |
|--------|-------|---------------|
| AV | N | Exploitable via HTTP API without local access |
| AC | L | No security mechanisms to evade |
| AT | N | No deployment-specific conditions required |
| PR | N | Unauthenticated endpoint |
| UI | N | No user interaction needed |
| VC | H | Attacker gains read access to all application data |
| VI | H | Attacker can modify arbitrary records |
| VA | N | No availability impact observed |
| SC | N | No evidence of downstream system impact [ASSUMED] |
| SI | N | No evidence of downstream system impact [ASSUMED] |
| SA | N | No evidence of downstream system impact [ASSUMED] |
对任何假设值标注 [ASSUMED]。
第 2 部分:向量字符串
CVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:N/VC:H/VI:H/VA:N/SC:N/SI:N/SA:N
格式:使用 CVSS:4.0/ 前缀,后接按规范顺序排列的全部 11 个基础指标(AV/AC/AT/PR/UI/VC/VI/VA/SC/SI/SA),并以 / 分隔。仅当对可选指标评分时才追加:首先是 E,然后是按规范顺序排列的环境指标(CR/IR/AR/MAV/MAC/MAT/MPR/MUI/MVC/MVI/MVA/MSC/MSI/MSA),最后是补充指标(S/AU/R/V/RE/U)。
在向量下方立即输出计算器链接,并将向量作为 URL 片段,这样用户只需点击一次即可获得数值评分:
https://www.first.org/cvss/calculator/4.0#CVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:N/VC:H/VI:H/VA:N/SC:N/SI:N/SA:N
在 # 后原样追加向量——不要进行 URL 编码,因为 : 和 / 在片段中都合法。计算器加载时会读取该片段,并预先选中每个指标按钮。
只有向量格式正确时,该链接才有效:计算器要求使用字面值 CVSS:4.0 前缀,并会拒绝顺序不符合规范的指标,且不会提示地让相应按钮保持未选中状态。这与上文所述的顺序规则相同,因此符合该规则的向量会生成可用链接。
第 3 部分:校准检查
呈现最终向量前,请阅读示例参考,并找出 2-3 种最相似的漏洞类型。将你的向量与这些校准锚点进行比较。如果你的向量与相似示例存在显著差异,请:
- 说明差异合理的原因(该漏洞具有示例中没有的特定特征);或
- 调整看起来校准不当的指标
说明你比较了哪些示例,以及向量是否一致。
自检清单
呈现最终输出前,请确认:
- 输入描述的是可利用的安全弱点(而非代码质量、设计或信息类发现项)
- 如果输入中出现任何 CVSS v3.1 术语,已在输出中翻译前说明
- 向量中包含全部 11 个基础指标
- 每个指标均使用有效的 CVSS v4.0 值(而非 v3.1 值——例如,UI 使用 N/P/A,而非 N/R;没有 Scope 指标)
- 向量字符串遵循指标规范顺序(基础指标,然后是 E,再然后是环境指标,最后是补充指标)
- 每个指标都有源描述中的文字依据
- 后续系统指标(SC/SI/SA)未与易受攻击系统指标(VC/VI/VA)混淆
- AT 和 AC 未混为一谈(AT = 部署条件;AC = 规避安全机制)
- 已对照示例完成校准检查
- 有歧义的影响指标已标注
[ASSUMED];有歧义的可利用性指标已通过询问用户解决
计算器
数值评分来自官方计算器,Part 2 链接打开的计算器已应用该向量。请勿自行计算评分:CVSS v4.0 使用查找表算法(FIRST.org 上的 cvss_lookup.js),而非公式,因此手动推导的任何评分都只是猜测。
如果用户想使用未应用向量的纯计算器: https://www.first.org/cvss/calculator/4.0