CVSS 解析器是一个 Go 语言库,用于解析、计算和处理 CVSS (通用漏洞评分系统) 向量。支持 CVSS 3.0 和 3.1 版本,提供了全面的功能以满足漏洞管理和安全评估的需求。
- 支持 CVSS 3.0 和 3.1 向量的解析和计算
- 计算基础、时间和环境评分
- 提供 JSON 输出和格式化功能
- 向量比较和相似度计算
- 严格模式和容错模式解析
- 完整的文档和示例
- 高测试覆盖率
go get github.com/scagogogo/cvss
解析和计算 CVSS 评分:
package main
import (
"fmt"
"log"
"github.com/scagogogo/cvss-parser/pkg/parser"
)
func main() {
vectorString := "CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H"
// 解析 CVSS 向量
cvssVector, err := parser.ParseVector(vectorString)
if err != nil {
log.Fatalf("解析向量失败: %v", err)
}
// 计算 CVSS 评分
score := cvssVector.Calculate()
fmt.Printf("CVSS 评分: %.1f\n", score.BaseScore)
fmt.Printf("严重性: %s\n", score.Severity)
}
更多示例请查看 examples 目录。详细的 API 文档请参考 pkg.go.dev.
库包含一系列详细的示例,展示了不同的功能:
- 基础用法 - 基本的 CVSS 解析和评分计算
- 解析不同类型的向量 - 展示如何解析各种 CVSS 向量字符串
- JSON 输出 - 将 CVSS 对象转换为 JSON 格式
- 时间度量指标 - 使用时间度量指标及其评分影响
- 环境度量指标 - 使用环境度量指标及其评分影响
- 向量距离计算 - 计算两个 CVSS 向量之间的距离
- 向量比较 - 比较 CVSS 向量的方法
- 严重性级别 - 处理 CVSS 严重性级别
- 边缘案例 - 管理各种边缘情况
本项目使用 GitHub Actions 自动运行测试和验证示例代码。CI 流程包括:
- 在多个 Go 版本 (1.19, 1.20, 1.21) 上运行测试
- 捕获和上传测试覆盖率报告
- 编译所有示例代码以确保它们能正确构建
- 运行基本示例以验证功能
您可以在本地运行相同的测试:
make test-ci
欢迎贡献代码、报告问题和提出改进建议!请查看 贡献指南 了解更多信息。
本项目基于 MIT 许可证 - 详情请参见 LICENSE 文件。