Skip to content

🧮 score ​

🧮 评分 · 🟢 stable

简介 ​

cvss score 从向量字符串计算 CVSS 总评分并打印其严重性等级。使用 --all 可分别输出基础/时间/环境评分,使用 --breakdown 可查看逐指标对评分的贡献。所有模式均支持 --format json。

工作原理 ​

从向量字符串出发,命令解析并隐式校验各指标,把结果交给计算器,随后按要报告的评分组分支——默认为实际可用的最具体评分。

用法 ​

bash
cvss score [vector-string] [flags]

Flags ​

Flag类型默认值说明
--allboolfalse显示所有评分(基础、时间、环境)及其严重性
--breakdownboolfalse显示逐指标的评分贡献
--formatstringtext输出格式:text 或 json
-h, --helpboolfalsescore 的帮助信息

默认输出总评分

不带任何 flag 时,命令只输出单个总评分及其严重性——若包含环境指标则取环境评分,否则取时间评分,再否则取基础评分。

示例 ​

bash
cvss score "CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:C/C:H/I:H/A:H"
text
10.0 (Critical)
bash
cvss score --all "CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:C/C:H/I:H/A:H"
text
Base: 10.0 (Critical)
bash
cvss score --format json "CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:C/C:H/I:H/A:H"
json
{
  "score": 10,
  "severity": "Critical"
}

底层 API ​

用 parser.ParseString 解析向量,再通过 cvss.NewCalculator 包裹为 cvss.Calculator,随后根据 flag 调用 calc.Calculate() / calc.GetAllScores() / calc.GetScoreBreakdown()。

go
import (
    "fmt"

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

cv, err := parser.ParseString("CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:C/C:H/I:H/A:H")
if err != nil {
    log.Fatal(err)
}

calc := cvss.NewCalculator(cv)
score, _ := calc.Calculate()
fmt.Printf("%.1f (%s)\n", score, cvss.GetSeverity(score))

// 所有基础 / 时间 / 环境评分及其严重性
all, _ := calc.GetAllScores()
fmt.Printf("Base: %.1f (%s)\n", all.BaseScore, all.BaseSeverity)

// 逐指标的贡献
bd, _ := calc.GetScoreBreakdown()
_ = bd

相关 ​

基于 MIT 许可证发布。