shaniesadan/cve-trend-analyzer
GitHub: shaniesadan/cve-trend-analyzer
整合 NVD、KEV、EPSS 三大威胁情报源并利用自定义风险公式对 CVE 进行优先级评分与检测覆盖率差距分析的企业级漏洞情报仪表板。
Stars: 1 | Forks: 0
# CVE 趋势分析与告警系统
这是一个实时的漏洞情报仪表板,它从公开的威胁情报源获取 CVE,使用综合风险公式对其进行评分,与公司的检测覆盖率进行交叉对比,并生成 AI 驱动的威胁简报。
## 技能与工具
- **Python** — 后端逻辑、API 集成、数据处理
- **SQL** — 数据仓库批量查询,带有 5 分钟缓存
- **JavaScript** — 具有动态过滤和分类功能的单页仪表板
- **Claude API (Anthropic)** — AI 威胁简报及针对每个 CVE 的“如何修复”分析
- **Flask** — 包含 22 个 API 路由的 Web 服务器
- **SQLite** — 用于存储 CVE、EPSS 分数、KEV 条目、风险分数和简报的本地数据库
- **Chart.js** — 趋势图、严重性分布、供应商明细、风险矩阵
- **NIST NVD API** — CVE 数据源(最近 14 天)
- **CISA KEV Catalog** — 主动漏洞利用检查
- **FIRST EPSS API** — 基于 ML 的漏洞利用概率评分
- **自定义风险引擎** — 综合公式:CVSS × 0.3 + EPSS × 0.4 + KEV × 0.3
- **Excel/CSV 导出** — 带有分类状态的客户端电子表格生成
## 覆盖率表 + 严重性细分

## 为什么开发这个工具
安全团队常常淹没在海量的 CVE 噪音中——每个月都会发布数千个漏洞,但大多数都无关紧要。我需要一个能回答以下问题的工具:**哪些新发布的 CVE 对我们真正重要,以及哪些我们目前还没有检测到?** 该工具将三个公开的威胁信号整合为一个优先级评分,并突出了检测覆盖率中的差距。
## 工作原理
1. **NIST NVD** — 通过 NVD 2.0 API 获取过去 14 天内发布的所有 CVE
2. **CISA KEV** — 将每个 CVE 与已知被利用漏洞目录进行比对检查(在野被主动利用)
3. **FIRST EPSS** — 使用漏洞利用预测评分系统对每个 CVE 进行评分(基于 ML 预测未来 30 天内被利用的概率)
4. **综合风险引擎** — `Risk = (CVSS/10 × 0.3) + (EPSS × 0.4) + (KEV × 0.3)` — EPSS 获得了最高权重,因为被利用的概率比理论上的严重性更重要
5. **公司交叉比对** — 批量查询数据仓库,以找出哪些 CVE 已经被检测到(已覆盖),哪些尚未被检测到(覆盖差距)
6. **EASM 范围过滤器** — 剔除与外部攻击面无关的 CVE(仅限桌面端、本地权限提升、物理访问)
7. **Claude AI 简报** — 生成包含针对每个 CVE 分析的高管威胁情报摘要
## 核心功能
- **风险矩阵** — CVSS 严重性 × EPSS 漏洞利用概率热力图
- **差距分析** — 按综合风险进行过滤和优先级排序的覆盖率差距
- **AI 威胁简报** — 由 Claude 生成的高管摘要及可操作的建议
- **分类工作流** — 将 CVE 标记为新建 / 处理中 / 已忽略 / 不相关
- **Excel/CSV 导出** — 包含分类状态的完整数据导出,用于报告
- **趋势图** — CVE 发布趋势、严重性分布、受影响最大的供应商


## 项目结构
```
cve-trend-analyzer/
├── app.py # Flask server — 22 API routes, EASM scope filter, all endpoints
├── cve_fetcher.py # NIST NVD API integration — CVE parsing, pagination
├── epss_scorer.py # FIRST EPSS API — batch exploit probability scoring
├── kev_checker.py # CISA KEV catalog — active exploitation check
├── risk_engine.py # Composite risk formula (CVSS 30% + EPSS 40% + KEV 30%)
├── ai_analyzer.py # Claude API — threat briefings and per-CVE deep-dives
├── snowflake_connector.py # Data warehouse connector — batch queries, 5-min cache
├── db.py # SQLite database — 7 tables (cves, epss, kev, risk, briefings...)
├── templates/
│ └── index.html # Single-page dashboard (Chart.js, vanilla JS)
├── requirements.txt
└── .env # API keys (not included)
```
标签:Flask, Python, XSS, 威胁情报, 安全, 开发者工具, 数据可视化, 无后门, 漏洞情报, 超时处理, 逆向工具, 风险评分