#安全 #解析器 #cvss #cvssv2 #cvssv3

cvssrust

Rust 实现的通用漏洞评分系统 (v2 / v3.0 / v3.1)

4 个版本 (2 个稳定)

1.0.1 2020年6月11日
1.0.0 2020年3月16日
0.1.1 2020年3月12日
0.1.0 2020年3月11日

984解析器实现

Download history 1360/week @ 2024-01-04 1448/week @ 2024-01-11 1720/week @ 2024-01-18 1289/week @ 2024-01-25 1415/week @ 2024-02-01 1886/week @ 2024-02-08 1404/week @ 2024-02-15 2078/week @ 2024-02-22 1876/week @ 2024-02-29 1945/week @ 2024-03-07 2056/week @ 2024-03-14 2138/week @ 2024-03-21 1463/week @ 2024-03-28 2275/week @ 2024-04-04 2452/week @ 2024-04-11 1797/week @ 2024-04-18

每月下载量 8,472

MIT 许可证

94KB
2.5K SLoC

Rust CVSS

Rust Crate

Rust 实现的通用漏洞评分系统 (v2 / v3.0 / v3.1)。

支持 CVSS 向量 v2/v3.0/v3.1 的解析、生成和评分计算(基础、时间性、环境性)

当前 CVSS 版本是 v3.1,但 v3.0 和 v2 仍在使用。

示例

use cvssrust::v3::V3Vector;
use cvssrust::CVSSScore;
use std::str::FromStr;

let cvss_str = "CVSS:3.1/AV:N/AC:L/PR:N/UI:R/S:C/C:L/I:L/A:N/E:P/RL:W/RC:C";
let cvss = V3Vector::from_str(cvss_str).unwrap();

// https://www.first.org/cvss/calculator/3.1#CVSS:3.1/AV:N/AC:L/PR:N/UI:R/S:C/C:L/I:L/A:N/E:P/RL:W/RC:C
assert_eq!(cvss.to_string(), String::from(cvss_str));
assert_eq!(cvss.base_score().value(), 6.1);
assert_eq!(cvss.base_score().severity().to_string(), "Medium");
assert_eq!(cvss.temporal_score().value(), 5.6);
assert_eq!(cvss.environmental_score().value(), 5.6);

CVSS v3.1 规范

https://www.first.org/cvss/v3.1/specification-document

与 3.0 的变化: https://www.first.org/cvss/user-guide#2-6-Formula-Changes

计算器: https://www.first.org/cvss/calculator/3.1

CVSS v3.0 规范

https://www.first.org/cvss/v3.0/specification-document

CVSS v2 规范

https://www.first.org/cvss/v2/guide

已知问题

在 v2 时间性/环境性(但不是基础)评分在某些情况下偏离 0.1 的舍入问题,请参阅 https://github.com/moor84/cvssrust/issues/10

不会影响 v3,因为有一个不同的舍入函数。

依赖项

~180KB