BoaThor/CVE-Resources
GitHub: BoaThor/CVE-Resources
聚合免费可靠的 CVE 安全公告与漏洞信息资源列表,并附带数据抓取、变更监控和可用性检查工具,帮助安全团队高效获取和跟踪产品漏洞情报。
Stars: 4 | Forks: 3
# CVE-Resources
这是一个包含安全公告和通用漏洞枚举(CVE)信息 URL 的列表,旨在简化查找关于产品漏洞及相关 OSINT 流程的免费、最新且可靠信息的过程。
## 动机
## 关注点
最初的重点是企业 IT,包括工业自动化、相关软件和免费资源。
## 状态
目前,136 个 CVE-Resources 包含 29 个元数据库(其中 5 个元数据库包含 PoC/Exploit 相关信息,例如,KEV - 已知被利用漏洞),以及 105 个特定于供应商的资源。
## 条目
共有 2 种类型的条目。
来自项目或公司(例如 Ubuntu)的直接资源
(可免费访问的)元 CVE 数据库的次要资源,如 OpenCVE.io
类型由 JSON 对象的“type”字段指示。
## 贡献
欢迎随时添加资源
```
1.) that are meaningful
2.) validated to be not malicious
3.) uptodate and maintain
```
并且满足
```
4.) not already part of the list
5.) reliable and trustworthy
6.) free to access
```
同时,如果发现资源存在以下情况,欢迎移除或替换
```
7.) are malicious
8.) pay-walled
9.) out of maintenance
```
## 结构
初始时,一个对象将提供 4 个字段,分别是:
1. Supplier - 一个必填字符串,用于表示信息提供者和/或产品供应商。
2. Location(URL、RSSFeed 等) - 一个必填字符串,用于指示信息来源。
3. Comments - 一个可选字符串 - 用于描述该资源。
4. Type - 可以是“supplier-specific”或“meta-database”
## 数据格式
初始数据格式为 JSON。该列表是一个对象数组/列表,对象包含上述列出的 4 个属性。
### Schema
数组 [
{Key-Value-Pair1, Key-Value-Pair2, Key-Value-Pair3, Key-Value-Pair4},
{Key-Value-Pair1, Key-Value-Pair2, Key-Value-Pair3, Key-Value-Pair4}
]
### CSV 格式
CSV 版本可在文件 cve_resource_list_alpha.csv 中获取。
CSV 版本以逗号(,)分隔。
CSV 包含头信息。
属性的顺序为 Supplier,location,comment,type。
### HTML 格式
可自动生成的 HTML 格式 CVE 资源集合可在 cveresources_fetched_DD-MM-YYYY.html 中获取。
## 工具
### EUVD-Scraper
File EUVD-Scraper.ps1
#### 概述
此 PowerShell 脚本用于检索并可视化以下机构发布的最新安全漏洞:
EUVD (ENISA)
NVD (NIST)
KEVin(由 GTFKD 提供的 CISA KEV)
Red Hat Security - Security Data Api
从 ENISA 的 EUVD、NVD 和 KEVin 接收的数据可以进行过滤(如果已配置),并按预期严重程度(CVSS)进行排序。
结果将保存在 UTF-8 编码的 HTML 报告中,包含基本的严重性高亮显示以及指向源报告(例如 NVD 和/或 EUVD 中的报告)的可点击链接。
#### 技能要求
具备执行程序的能力,以及关于 CVE、CVSS 和 EPSS 评分的基础知识。
#### 系统要求
操作系统:任何已安装 PowerShell 的系统
PowerShell 版本:7.x 或更高版本(为了正确处理 REST 和支持 UTF-8 所需)
网络连接:需要从 EUVD API、NIST NVD API、KEVin API、Red Hat Security Data API 获取数据。
磁盘空间:极少 - 只需几 KB 的可写空间用于保存 HTML 报告和可选的日志。
#### 配置
在程序顶部提供了一个用于全局配置的代码块:
- 从当前日期起回顾漏洞的天数
$DaysToLookBack = 2 # 默认值:2 天
- 包含的最低 CVSS 分数 (0-10)
$MinimumScore = 5 # 默认值:5(中等严重性及以上)
- 获取漏洞的最大数量(0 表示无限制)
$MaxVulnerabilities = 1000 # 默认值:1000(10 页 * 100 条)用于 ENISA EUVD
- 获取 API 页面的最大数量(每页最多包含 100 条)用于 ENISA EUVD
$MaxPages = 10 # 默认值:10 页
- 每页条数(API 最大值为 100)
$PageSize = 100 # 默认值:每页 100 条
- 仅在网络和 API 性能出现问题时更改此项
- 用于评定为“严重”级别的 CVSS 分数 (0-10)
$MinCritCVSS = 9 # 默认值 9
- 可以映射到您内部的漏洞严重性阈值
- 用于评定为“严重”级别的 EPSS 分数 (0-100)
$MinCritEPSS = 10 # 默认值 10
- 可以映射到您内部的漏洞严重性阈值
- 仅报告已知被利用的漏洞(0 或 1)
$OnlyExploited = 0 #(默认值 0)
- NVD 并不直接提供此信息
- 启用调试日志
$EnableDebugLogging = $true # 默认值:true
- 描述字段的最大长度。(1 - 无限制)
- 截断部分将以“...”标示
$DiscLength = 400 #(默认值 400)
- 作为 CSV 格式的、不区分大小写的文本过滤器,例如 ("cisco;red hat;jenkins;nodejs")
- 用于评估供应商名称、产品名称和描述。
$filterString = "" #(默认值 "")
- 不区分大小写且不区分单词边界的过滤字符串。
$priorityString = "" #(默认值 "")
#### 功能
数据检索:
分页(最多 1000 条记录)从 ENISA 的公共 API 获取漏洞数据。
从 NIST 的 NVD 公共 API 获取漏洞数据(目前限制为 2000 条记录)
通过 KEVin 公共 API 从 CISA KEV 获取漏洞数据。
默认行为:过滤出 CVSS >= 5 且发布日期在最近 2 天内的漏洞。
日志记录:
所有操作和响应都将记录在带有时间戳的日志文件(EUVD_Debug_*.log)中。
数据规范化:
将来自(目前)3 个来源的数据统一转换为一种“简单”、易于解析且可扩展的通用对象格式。
HTML 报告生成:
根据严重程度对漏洞进行排序和颜色编码(可配置),并输出 HTML 表格。
显示 ID、CVE 引用、发布日期、分数、供应商、漏洞利用状态和描述。
输出:
将在执行目录中创建 2 个文件
- *.log 包含 JSON 对象、状态和错误信息
- *.html 包含生成的 HTML 代码
该可执行文件会生成一个自包含、易于阅读的 .html 报告文件。
完成后会自动在默认浏览器中打开该报告。
#### 使用方法
Windows 用户:
1. 保存脚本(例如,命名为 euvd-vulnscan.ps1)。
2. 右键单击该脚本并选择“使用 PowerShell 运行”(请确保您使用的是 PowerShell 7)。
3. 等待浏览器打开并显示您的 HTML 报告。
4. 日志将保存在同一目录中,用于调试或审查。
5. 可能需要不时地手动清理旧报告和日志。
#### 故障排除
主要存在 2 个问题:
接口不稳定 - 即使在短短的开发期间,API Endpoints、API 命令和返回的数据结构,以及 API 的访问策略、可用性和性能,都被证明是不稳定的。变更可能在没有任何提前期、警告或文档的情况下发生。
封禁/屏蔽/速率限制 - 如果接口遭到一定数量(通常未定义)的请求或流量冲击,API Endpoints 可能会临时或永久封禁您/您的 IP。
大多数计数器会在 24 小时内重置。
### Scrappi.pl
Scrappi is a minimal web-scraper. The idea behind scrabbi is to identify changes to websites, such as static CVE and Security Advisory link lists.
Scrappi reads the CVE-resources JSON from this repository. Scraps all URLs (from the "location" field). Creates a MD5 checksum of the fetched BLOB than
Stores all of it in a local DB (urls.db), writes error during processing to scrabbi_error.log and detected changes to scrabbi_change.log.
A detected change indicates that the URLs content might have changed e.g., new CVEs added.
This does not work for dynamically created pages (like GitHub hosted Advisory Boards) and web-application DB interfaces (for obvious reasons).
Scrappi 也可用于监控 JSON 格式的静态网页列表的任何类型变更,例如,网页篡改、劫持,或者仅仅是为了识别您喜欢的博客上的更改。
它还能测量性能 - 获取数据所花费的时间 - 并可以指示性能问题。
Scrappi 可在安装了 Perl 5.38.2 的 Linux 和 Windows 系统上运行,并使用标准的预装 Perl 库,如 DBI 和 Time:HiRes。
如果您想改进 Scrappi,请与我们取得联系。
### CVE-resources-http-status-check.pl
现已提供由 Perl 编写的 HTML 生成器 CVE-resources-http-status-check.pl。该工具会获取最新发布的 cve_resources_list_alpha_sorted.JSON,检查 JSON 文件中列出的所有 location URL,并生成一个包含每个 URL 的 HTTP 响应代码的输出文件 cveresources_fetched_.html。输出文件为纯简单的 HTML 格式。
为了维护最新的资源列表,需要检查 CVE 资源(URL、URI)的可用性、可访问性和变更情况。
本项目将不定期生成并提供该状态生成器输出文件的更新版本。
状态代码 404 和 500 表示资源位置存在问题。状态 200 表示正常。状态 403 表示可能需要授权。
要执行此工具,需要最新版本的 Perl 5 解释器。请下载文件 JSON2HTM_Formatter.pl 并
执行“perl CVE-resources-http-status-check.pl”。已通过 Strawberry Perl 5.38.2 测试。应该可在 Windows 和 Linux 上运行。
Perl 及其包含的库应包含在 path 环境变量中。
### JSON2HTM_Formatter.pl
现已提供由 Perl 编写的 HTML 生成器 JSON2HTM_Formatter.pl。该工具会获取最新发布的 cve_resources_list_alpha_sorted.JSON 并生成纯简单的 HTML 格式输出文件 cveresources_fetched_.html。
要执行此工具,需要最新版本的 Perl 5 解释器。请下载文件 JSON2HTM_Formatter.pl 并
执行“perl JSON2HTM_Formatter.pl”。已通过 Strawberry Perl 5.38.2 测试。应该可在 Windows 和 Linux 上运行。
Perl 及其包含的库应包含在 path 环境变量中。
### 更多格式
欢迎添加其他机器可读的格式,例如 YML、XML、书签
甚至是数据库表导出,如 MySQL、MariaDB、PostgreSQL、MongoDB 和其他 Key-Value 存储系统。
## 行动倡议
欢迎大家随时贡献、维护并保持信息的更新。欢迎任何形式的帮助。
感谢,Boa
File EUVD-Scraper.ps1
#### 概述
此 PowerShell 脚本用于检索并可视化以下机构发布的最新安全漏洞:
EUVD (ENISA)
NVD (NIST)
KEVin(由 GTFKD 提供的 CISA KEV)
Red Hat Security - Security Data Api
从 ENISA 的 EUVD、NVD 和 KEVin 接收的数据可以进行过滤(如果已配置),并按预期严重程度(CVSS)进行排序。
结果将保存在 UTF-8 编码的 HTML 报告中,包含基本的严重性高亮显示以及指向源报告(例如 NVD 和/或 EUVD 中的报告)的可点击链接。
#### 技能要求
具备执行程序的能力,以及关于 CVE、CVSS 和 EPSS 评分的基础知识。
#### 系统要求
操作系统:任何已安装 PowerShell 的系统
PowerShell 版本:7.x 或更高版本(为了正确处理 REST 和支持 UTF-8 所需)
网络连接:需要从 EUVD API、NIST NVD API、KEVin API、Red Hat Security Data API 获取数据。
磁盘空间:极少 - 只需几 KB 的可写空间用于保存 HTML 报告和可选的日志。
#### 配置
在程序顶部提供了一个用于全局配置的代码块:
- 从当前日期起回顾漏洞的天数
$DaysToLookBack = 2 # 默认值:2 天
- 包含的最低 CVSS 分数 (0-10)
$MinimumScore = 5 # 默认值:5(中等严重性及以上)
- 获取漏洞的最大数量(0 表示无限制)
$MaxVulnerabilities = 1000 # 默认值:1000(10 页 * 100 条)用于 ENISA EUVD
- 获取 API 页面的最大数量(每页最多包含 100 条)用于 ENISA EUVD
$MaxPages = 10 # 默认值:10 页
- 每页条数(API 最大值为 100)
$PageSize = 100 # 默认值:每页 100 条
- 仅在网络和 API 性能出现问题时更改此项
- 用于评定为“严重”级别的 CVSS 分数 (0-10)
$MinCritCVSS = 9 # 默认值 9
- 可以映射到您内部的漏洞严重性阈值
- 用于评定为“严重”级别的 EPSS 分数 (0-100)
$MinCritEPSS = 10 # 默认值 10
- 可以映射到您内部的漏洞严重性阈值
- 仅报告已知被利用的漏洞(0 或 1)
$OnlyExploited = 0 #(默认值 0)
- NVD 并不直接提供此信息
- 启用调试日志
$EnableDebugLogging = $true # 默认值:true
- 描述字段的最大长度。(1 - 无限制)
- 截断部分将以“...”标示
$DiscLength = 400 #(默认值 400)
- 作为 CSV 格式的、不区分大小写的文本过滤器,例如 ("cisco;red hat;jenkins;nodejs")
- 用于评估供应商名称、产品名称和描述。
$filterString = "" #(默认值 "")
- 不区分大小写且不区分单词边界的过滤字符串。
$priorityString = "" #(默认值 "")
#### 功能
数据检索:
分页(最多 1000 条记录)从 ENISA 的公共 API 获取漏洞数据。
从 NIST 的 NVD 公共 API 获取漏洞数据(目前限制为 2000 条记录)
通过 KEVin 公共 API 从 CISA KEV 获取漏洞数据。
默认行为:过滤出 CVSS >= 5 且发布日期在最近 2 天内的漏洞。
日志记录:
所有操作和响应都将记录在带有时间戳的日志文件(EUVD_Debug_*.log)中。
数据规范化:
将来自(目前)3 个来源的数据统一转换为一种“简单”、易于解析且可扩展的通用对象格式。
HTML 报告生成:
根据严重程度对漏洞进行排序和颜色编码(可配置),并输出 HTML 表格。
显示 ID、CVE 引用、发布日期、分数、供应商、漏洞利用状态和描述。
输出:
将在执行目录中创建 2 个文件
- *.log 包含 JSON 对象、状态和错误信息
- *.html 包含生成的 HTML 代码
该可执行文件会生成一个自包含、易于阅读的 .html 报告文件。
完成后会自动在默认浏览器中打开该报告。
#### 使用方法
Windows 用户:
1. 保存脚本(例如,命名为 euvd-vulnscan.ps1)。
2. 右键单击该脚本并选择“使用 PowerShell 运行”(请确保您使用的是 PowerShell 7)。
3. 等待浏览器打开并显示您的 HTML 报告。
4. 日志将保存在同一目录中,用于调试或审查。
5. 可能需要不时地手动清理旧报告和日志。
#### 故障排除
主要存在 2 个问题:
接口不稳定 - 即使在短短的开发期间,API Endpoints、API 命令和返回的数据结构,以及 API 的访问策略、可用性和性能,都被证明是不稳定的。变更可能在没有任何提前期、警告或文档的情况下发生。
封禁/屏蔽/速率限制 - 如果接口遭到一定数量(通常未定义)的请求或流量冲击,API Endpoints 可能会临时或永久封禁您/您的 IP。
大多数计数器会在 24 小时内重置。
### Scrappi.pl
Scrappi is a minimal web-scraper. The idea behind scrabbi is to identify changes to websites, such as static CVE and Security Advisory link lists.
Scrappi reads the CVE-resources JSON from this repository. Scraps all URLs (from the "location" field). Creates a MD5 checksum of the fetched BLOB than
Stores all of it in a local DB (urls.db), writes error during processing to scrabbi_error.log and detected changes to scrabbi_change.log.
A detected change indicates that the URLs content might have changed e.g., new CVEs added.
This does not work for dynamically created pages (like GitHub hosted Advisory Boards) and web-application DB interfaces (for obvious reasons).
Scrappi 也可用于监控 JSON 格式的静态网页列表的任何类型变更,例如,网页篡改、劫持,或者仅仅是为了识别您喜欢的博客上的更改。
它还能测量性能 - 获取数据所花费的时间 - 并可以指示性能问题。
Scrappi 可在安装了 Perl 5.38.2 的 Linux 和 Windows 系统上运行,并使用标准的预装 Perl 库,如 DBI 和 Time:HiRes。
如果您想改进 Scrappi,请与我们取得联系。
### CVE-resources-http-status-check.pl
现已提供由 Perl 编写的 HTML 生成器 CVE-resources-http-status-check.pl。该工具会获取最新发布的 cve_resources_list_alpha_sorted.JSON,检查 JSON 文件中列出的所有 location URL,并生成一个包含每个 URL 的 HTTP 响应代码的输出文件 cveresources_fetched_标签:AI合规, Homebrew安装, 后端开发, 多模态安全