CVE Correlation Graph(CVE 关联网)
目标:把高难度 CTF 中“版本指纹 -> CVE -> 可利用链”从单点查询升级为关系分析,快速找出同源组件、同类 CWE、同一参考域名/PoC、KEV/EPSS 高优先级目标。
1. 数据来源
- NVD CVE API 2.0:CVE 元数据、CVSS、CWE、CPE、参考链接。
- FIRST EPSS:漏洞被利用概率与百分位。
- CISA KEV:已知在野利用漏洞、厂商/产品、处置期限。
- GitHub Security Advisories:适合补充生态包、GHSA、补丁 PR。
ReverseLab 的 cve_lookup.py 先生成单个 CVE 报告,cve_graph.py 再聚合为关联网。
2. 标准流程
powershell
# 单点查询
python scripts\ctf-website\cve_lookup.py CVE-2024-36401
# 多 CVE 聚合为关系图
python scripts\ctf-website\cve_graph.py --from-dir reports\ctf-website\cve --out reports\ctf-website\cve-graph输出:
reports/ctf-website/cve-graph/cve_graph_<timestamp>.jsonreports/ctf-website/cve-graph/cve_graph_<timestamp>.md
3. 关系类型
| Edge | 含义 | CTF 用途 |
|---|---|---|
has_cwe | CVE 属于某 CWE | 推测漏洞模式与 payload 方向 |
affects | CVE 影响某产品 | 将版本指纹映射到攻击面 |
vendor | CVE 关联厂商 | 找同厂商组件链 |
referenced_by | CVE 被某域名引用 | 快速定位 PoC / advisory / patch |
in_kev | CVE 在 CISA KEV | 优先验证,通常 exploit maturity 高 |
epss_bucket | EPSS 风险桶 | 排序攻击优先级 |
same_cwe | 两个 CVE 同 CWE | 可迁移 payload 技巧 |
same_product | 两个 CVE 同产品 | 可能形成链式利用 |
same_reference_domain | 共享参考来源 | 可能同 PoC 作者/同公告链 |
4. 高级 CTF 使用策略
- 版本指纹先落地:从 header、JS bundle、错误页、favicon、package lock、Dockerfile、banner 中提取产品名和版本。
- 单 CVE 查询:每个候选版本用
cve_lookup.py拉 NVD/EPSS/KEV。 - 关联网聚类:用
cve_graph.py找同产品/同 CWE/高 EPSS/KEV。 - 链式组合:
- auth bypass -> SSRF / file read
- file read -> config/secret leak
- deserialization/SSTI -> RCE
- XSS/admin bot -> credential/API token
- 只验证架构上可能成立的链:不要因为某 CVE 热门就盲打;必须与目标组件、版本、暴露路由、默认配置相匹配。
5. 证据记录模板
md
## CVE Evidence
- Fingerprint:
- Candidate CVE:
- Version Range:
- EPSS:
- KEV:
- CWE:
- Product/CPE:
- References:
- Local Reproduction:
- Target Validation:
- Chain Hypothesis:MCP 工具映射
AI Agent 可调用以下 MCP 工具自动完成或加速上述攻击步骤:
| 攻击步骤 | MCP 工具 | 说明 |
|---|---|---|
| CVE 关联分析 | kb_router | 按 CVE 关联信号搜索相关知识库技术 |
| 知识库文件读取 | kb_read_file | 读取知识库技术文件内容 |