CVE Prioritizer 是一款评估漏洞修复优先级的开源工具。它集成了 CVSS、EPSS 和 CISA KEV 的数据,根据漏洞被利用的可能性以及漏洞危害程度判断漏洞修复优先级。
原理简介
CVE Prioritizer 的开发者 Rojas 认识到仅依赖CVSS评分确定漏洞修复优先级的局限性,尽管CISA的KEV(已知可利用漏洞库)已经进一步优化,但 Rojas 结合EPSS开发了更全面可靠的评估工具。该工具利用 CVSS 和 EPSS 评分的关联来优化漏洞修复—— CVSS 提供漏洞特征相关信息,而 EPSS(Exploit Prediction Scoring System 漏洞利用概率评分系统) 则提供漏洞被利用的风险信息。
CVE Prioritizer 的亮点功能是漏洞优先级阈值支持自定义,使得安全团队能够灵活调整工具输出,匹配所在单位的风险承受能力,适应不同的安全需求,实现决策最优化。
工具运行界面
CVSS、EPSS 和 CISA KEV整合的意义
国际网络安全应急联盟在其《EPSS 用户指南》中很好地解释了为什么需要将 CVSS 和 EPSS 结合起来。以下内容摘自这份文档。
下图显示了 2021 年 5 月 16 日 EPSS 和 CVSS 评分的相关性。EPSS 的评分区间为 0 到 1(0 到 100%),分数越高表明被利用的可能性越大。每个点代表一个或多个CVE。
EPSS与CVSS评分点图(颜色越深代表该位置重叠的漏洞数越多)
从整体趋势来看,CVSS评分越高,漏洞被利用的可能性越大,两者呈正相关。但我们也发现大多数漏洞集中在底部,只有小部分漏洞的EPSS评分超过0.5。攻击者不仅关注影响最大的漏洞,也关注更容易被利用的漏洞(例如未经身份验证的远程代码执行)。
这一发现推翻了一个常见的思维假设:攻击者只寻找和利用最严重的漏洞。那么,安全人员在决定优先修复哪些漏洞时该如何选择?
参考下图:
-
左下角的漏洞代表那些被利用可能性较低,且严重性较低的漏洞——降低优先级
-
左上角的漏洞代表被利用可能性高但不会对信息系统造成严重影响的漏洞(但应展开后续研究,以免成为未来的攻击突破点)
-
右下角的漏洞代表虽然对信息系统影响大,但被利用的可能性要小得多的漏洞(发生安全事件、威胁形势发生变化时仍应予以关注)
-
右上角的漏洞是最严重的、更容易被利用的漏洞,因此修复优先级最高
以上示例说明了EPSS在漏洞修复决策中的重要性。安全人员不再需要面对数千或数万个漏洞,而是花费更少的精力和资源修复更多更有价值的漏洞。
CVE Prioritizer是如何做的
-
CVE Prioritizer纳入了 CISA 的KEV漏洞库,优先考虑 KEV 中发现的 CVE。
-
CVSS 阈值设置为 6.0,代表CVSS评分的加权平均值。
-
EPSS 阈值设置为 0.2,重点关注高于此阈值的相关性较高的漏洞。
此方法将漏洞分为五个优先级别。
级别 |
说明 |
优先级1+(最高) |
KEV中的CVE |
优先级1 |
右上角的CVE |
优先级2 |
右下角的CVE |
优先级3 |
左上角的CVE |
优先级4 |
左下角的CVE |
下图是应用该方法后的版本。
注:用户可以在运行该工具时根据自身风险偏好确定相应阈值。
安装
- Python 3 (https://www.python.org/downloads/)
- Git (https://git-scm.com/downloads)
git clone https://github.com/TURROKS/CVE_Prioritizer.git
cd ./CVE_Prioritizer/
pip3 install -r requirements.txt
如何使用
1. 向 NIST NVD 请求 API 密钥,避开限流。可以在这里(https://nvd.nist.gov/developers/request-an-api-key)获取密钥,并将其添加到 .env 文件中。
sed -i 's/NIST_API=[^ ]*/NIST_API=your-key-here/' .env
2. 选择以下一种输入方式:
- 单个 CVE:使用 -c 或 --cve,后跟 CVE ID。
- CVE 列表:使用 -l 提供以空格分隔的 CVE 列表。
- 包含 CVE 的文件:使用 -f 导入包含 CVE ID(每行一个)的文件。
3. 按需定制输出:
- 使用 -v 或 --verbose 获取详细信息,包括 EPSS 分数、CVSS 基本分数、CVSS 版本、CVSS 严重性和 CISA KEV 状态。
- 使用 --cvss 和/或 --epss 确定自定义阈值,使结果与用户风险偏好一致。
- 使用 -t 或 --threads 确定并发线程的数量,默认和建议的数量为 100(避开限流)。
举例
单个 CVE
python3 cve_prioritizer.py -c CVE-2020-29127
CVE列表
python3 cve_prioritizer.py -l CVE-2020-29127 CVE-2017-16885
包含CVE的文件
python3 cve_prioritizer.py -f ~\Desktop\CheckThisCVEs.txt
输出
默认情况下,CVE_Prioritizer输出评估结果,包括 CVE-ID 及其优先级。用户也可启用verbose模式来获取其它信息。
以下是输出选项:
评估结果(默认): CVE-ID 及其优先级。
Verbose模式:输出每个 CVE包含EPSS评分、CVSS 基础分数、CVSS版本、CVSS 严重性、CISA KEV 状态(TRUE or FALSE)的详细信息。
CSV 文件
使用 -o 或 --output 将结果保存为 CSV 文件
python3 cve_prioritizer.py -c CVE-2020-4343 -o ~/Desktop/results.csv
PS:虽然此工具使用 NVD API,但未获得 NVD许可。
未来计划
Rojas 表示CVE Prioritizer的下一步开发计划是使其从常见的漏洞扫描器中提取报告,以 JSON 格式导出结果,简化整个漏洞管理工作流程,最终实现与其它安全工具和平台的无缝集成,成为安全团队的必要“装备”。
参考来源
CVE Prioritizer: Open-source tool to prioritize vulnerability patching
https://github.com/TURROKS/CVE_Prioritizer?tab=readme-ov-file
4A评测 - 免责申明
本站提供的一切软件、教程和内容信息仅限用于学习和研究目的。
不得将上述内容用于商业或者非法用途,否则一切后果请用户自负。
本站信息来自网络,版权争议与本站无关。您必须在下载后的24个小时之内,从您的电脑或手机中彻底删除上述内容。
如果您喜欢该程序,请支持正版,购买注册,得到更好的正版服务。如有侵权请邮件与我们联系处理。敬请谅解!
程序来源网络,不确保不包含木马病毒等危险内容,请在确保安全的情况下或使用虚拟机使用。
侵权违规投诉邮箱:4ablog168#gmail.com(#换成@)
API 密钥获取不了哇,该怎么半呢