Skip to content

🏗️ build ​

🏗️ 构建 · 🟢 stable

简介 ​

cvss build 把通过 flag 传入的逐项指标取值(--AV=N、--AC=L 等)组装成 CVSS 向量字符串。8 个基础指标全部必填;时间与环境指标可选。使用 --cvss-version 可指定目标版本为 v3.0 或 v3.1。

工作原理 ​

各指标的 flag 取值被收集到一个 map 并交给 FromMap;八个基础指标必填,时间/环境条目可选,结果是一个规范向量字符串。

用法 ​

bash
cvss build [flags]

Flags ​

Flag类型默认值说明
--Astring可用性 (H/L/N)
--ACstring攻击复杂度 (L/H)
--ARstring可用性需求 (X/H/M/L)
--AVstring攻击向量 (N/A/L/P)
--Cstring机密性 (H/L/N)
--CRstring机密性需求 (X/H/M/L)
--Estring利用代码成熟度 (X/U/P/F/H)
--Istring完整性 (H/L/N)
--IRstring完整性需求 (X/H/M/L)
--MAstring修改后可用性 (X/H/L/N)
--MACstring修改后攻击复杂度 (X/L/H)
--MAVstring修改后攻击向量 (X/N/A/L/P)
--MCstring修改后机密性 (X/H/L/N)
--MIstring修改后完整性 (X/H/L/N)
--MPRstring修改后所需权限 (X/N/L/H)
--MSstring修改后范围 (X/U/C)
--MUIstring修改后用户交互 (X/N/R)
--PRstring所需权限 (N/L/H)
--RCstring报告可信度 (X/U/R/C)
--RLstring修复级别 (X/O/T/W/U)
--Sstring范围 (U/C)
--UIstring用户交互 (N/R)
--cvss-versionstring3.1CVSS 规范版本:3.0 或 3.1
-h, --helpboolfalsebuild 的帮助信息

8 个基础指标全部必填

--AV、--AC、--PR、--UI、--S、--C、--I、--A 必须全部给出。时间(E/RL/RC)与环境(CR/IR/AR 及所有 M*)指标可选,未设置时不会出现在输出中。

示例 ​

bash
cvss build --AV=N --AC=L --PR=N --UI=N --S=U --C=H --I=H --A=H
text
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H
bash
cvss build --AV=N --AC=L --PR=N --UI=N --S=U --C=H --I=H --A=H --E=F --RL=T --RC=C
text
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H/E:F/RL:T/RC:C
bash
cvss build --cvss-version=3.0 --AV=N --AC=L --PR=N --UI=N --S=C --C=H --I=H --A=H
text
CVSS:3.0/AV:N/AC:L/PR:N/UI:N/S:C/C:H/I:H/A:H

底层 API ​

把各 flag 取值收集到 map[string]string 中,调用 cvss.FromMap,再打印 cv.String()。

go
import (
    "fmt"

    "github.com/scagogogo/cvss-skills/pkg/cvss"
)

m := map[string]string{
    "AV": "N", "AC": "L", "PR": "N", "UI": "N",
    "S": "U", "C": "H", "I": "H", "A": "H",
    // 可选的时间 / 环境项在缺省时不写入
    "E": "F", "RL": "T", "RC": "C",
}

cv, err := cvss.FromMap(m)
if err != nil {
    log.Fatal(err)
}
fmt.Println(cv.String()) // CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H/E:F/RL:T/RC:C

相关 ​

  • modify — 在已有向量上改动少量指标
  • parse — 验证构建出的向量能被正确解析
  • validate — 校验结果
  • FromMap — Go SDK 参考

基于 MIT 许可证发布。