6个版本 (2个稳定版)
1.0.1 | 2020年2月7日 |
---|---|
1.0.1-rc.2 | 2020年1月31日 |
1.0.0 | 2019年11月29日 |
1.0.0-rc.3 | 2019年11月28日 |
1.0.0-rc.2 | 2019年11月27日 |
#1257 in 解析器实现
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数据库下载过去的安全漏洞数据,并对真实的安全漏洞元数据进行解析。这需要一个网络连接以及以下可执行文件:sh、wget、gunzip和jq
cargo test -- --ignored --nocapture
感谢您对libcvss的兴趣。
依赖关系
~0.4–1MB
~24K SLoC