6个版本 (2个稳定版)

1.0.1 2020年2月7日
1.0.1-rc.22020年1月31日
1.0.0 2019年11月29日
1.0.0-rc.32019年11月28日
1.0.0-rc.22019年11月27日

#1257 in 解析器实现

BSD-3-Clause

385KB
9K SLoC

什么是libcvss?

libcvss是CVSS规范的Rust实现。

它为Rust用户提供了操作CVSS格式漏洞数据的本地方式。

libcvss利用Rust提供了一种专注于性能和正确性的CVSS实现。

什么是CVSS?

官方CVSS网站这样描述CVSS

通用漏洞评分系统(CVSS)提供了一种方法来捕捉漏洞的主要特征,并生成反映其严重程度的数值分数。然后,可以将数值分数转换为定性的表示(如低、中、高和关键)以帮助组织正确评估和优先处理其漏洞管理流程。

特性

  • 支持CVSS的所有非已弃用版本(2.0、3.0、3.1)。
  • CVSS向量可以从字符串切片解析,或程序化构建。
  • 解析可以是严格或非严格模式:严格模式要求向量字符串内部的所有字段都按规范顺序存在。在非严格模式下,解析器将尽最大努力从输入中构建CVSS向量:字段可以重复,顺序错误等。
  • 可以计算与CVSS向量关联的基线、时间或环境向量的分数。
  • libcvss每秒可以解析数千个CVSS向量。

测试基础设施和可靠性

正确性和可靠性是libcvss的重要关注点。

  • 所有版本的CVSS规范中的所有官方示例都被实现为集成测试。我们承诺这些测试始终在master上通过。
  • 一个可选的集成测试下载自2007年以来披露的每个CVE漏洞的NVD数据,解析相关的CVSS向量(在可用时同时解析V2和V3版本),计算相关的严重程度分数,并将其与NVD提供的分数进行比较。我们承诺在所有libcvss版本上通过此测试。

如何贡献

libcvss在BSD-3许可证下发布。

欢迎提交错误报告和拉取请求。请使用 Inria的Gitlab 进行这两项。

在提交拉取请求之前,请考虑使用我们的pre-commit钩子。您可以使用以下命令激活它

ln -s hooks/pre-commit .git/hooks/pre-commit

我们的pre-commit钩子将检查以下内容

  • 代码编译正确。
  • 测试通过。
  • 代码格式正确(使用rustfmt)。

如果您的拉取请求很重要,请考虑启动我们的集成测试套件。这些测试会从NVD数据库下载过去的安全漏洞数据,并对真实的安全漏洞元数据进行解析。这需要一个网络连接以及以下可执行文件:shwgetgunzipjq

cargo test -- --ignored --nocapture

感谢您对libcvss的兴趣。

依赖关系

~0.4–1MB
~24K SLoC