freeBuf
主站

分类

漏洞 工具 极客 Web安全 系统安全 网络安全 无线安全 设备/客户端安全 数据安全 安全管理 企业安全 工控安全

特色

头条 人物志 活动 视频 观点 招聘 报告 资讯 区块链安全 标准与合规 容器安全 公开课

官方公众号企业安全新浪微博

FreeBuf.COM网络安全行业门户,每日发布专业的安全资讯、技术剖析。

FreeBuf+小程序

FreeBuf+小程序

CVE Prioritizer:开源的漏洞修复优先级评估工具
2024-03-08 01:29:07

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是如何做的

  1. CVE Prioritizer纳入了 CISA 的KEV漏洞库,优先考虑 KEV 中发现的 CVE。

  2. CVSS 阈值设置为 6.0,代表CVSS评分的加权平均值。

  3. 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 格式导出结果,简化整个漏洞管理工作流程,最终实现与其它安全工具和平台的无缝集成,成为安全团队的必要“装备”。

参考来源

https://www.helpnetsecurity.com/2024/02/19/cve-prioritizer-open-source-vulnerability-patching/

https://github.com/TURROKS/CVE_Prioritizer?tab=readme-ov-file

# 开源安全工具 # 漏洞修复 # 漏洞优先级
本文为 独立观点,未经允许不得转载,授权请联系FreeBuf客服小蜜蜂,微信:freebee2022
被以下专辑收录,发现更多精彩内容
+ 收入我的专辑
+ 加入我的收藏
相关推荐
  • 0 文章数
  • 0 关注者
文章目录