mstampfli/cve2detect
GitHub: mstampfli/cve2detect
一款安全漏洞分诊工具,能根据 CVE 编号自动聚合威胁情报并生成 Sigma、Nuclei、Semgrep 检测规则骨架与最小复现脚手架。
Stars: 0 | Forks: 0
# cve2detect
对 CVE 进行分诊,并快速启动检测和复现。只需提供一个 CVE id,它就会从 OSV 和 NVD 获取安全公告,并使用防御者实际需要分诊的数据对其进行丰富,然后生成由这些数据初始化的工件。
**优先分诊(核心指标):**
- **KEV** - 是否在 CISA 的已知被利用漏洞列表中(在野利用)?
- **EPSS** - FIRST 预测其在未来 30 天内被利用的概率,以及百分位数。
- **公开漏洞利用?** - 具体来源:**Metasploit** 模块(rapid7 的模块元数据)、**Exploit-DB** 条目(exploitdb 的 `codes` 映射)、真实的 **Nuclei** 模板,以及 NVD 中标记为漏洞利用的参考链接。
- **CVSS / CWE** - 严重程度和漏洞类别。
因此,在您编写任何检测代码之前,您就会知道是否真的需要这样做。
```
python3 cve2detect.py CVE-2021-44228
python3 cve2detect.py CVE-2021-23337 --ai
```
## 生成内容
输出到 `cve2detect-out//` 目录:
- **`sigma.yml`** - 一个 Sigma 检测规则骨架,预填了标题、参考链接、CWE 标签以及根据严重程度映射的级别。您只需补充日志源和检测指标。
- **`nuclei.yaml`** - 如果存在,会从 projectdiscovery/nuclei-templates 拉取**真实的、社区维护的 Nuclei 检测模板**(这是一个可直接运行的 `nuclei -t nuclei.yaml -u ` 检查,而不是骨架);仅在未发布相关模板时,才会回退到预填数据的骨架文件。
- **`version-checks.sh`** - 针对不同生态系统的命令,用于在项目中(npm/pip/cargo/go/maven/...)查找易受攻击的包,并注明已修复的版本。
- **`repro/`** - 锁定到易受攻击版本的最小脚手架(npm / PyPI / crates.io),包含一个 `run.sh` 和一个待办触发器(TODO trigger)。
- **`semgrep.yml`** - 针对代码级别的 CWE(SQLi、XSS、RCE、反序列化、路径遍历、SSRF 等),提供一个特定语言的 Semgrep 规则,其中内置了针对该 CWE 类别的“查找目标”。
- **`summary.md`** - 完整的分诊报告(KEV/EPSS/漏洞利用/CVSS/CWE),以及受影响的包和参考链接。
## 解析包数据的方式
OSV 的 CVE 级别记录通常只包含 git-commit 区间,因此 cve2detect 会追踪 GHSA / PYSEC / RUSTSEC 等别名,以获取真实的生态系统包和版本范围,并从 NVD 提取 CVSS 和 CWE。例如:`CVE-2021-44228` 会被解析为 `Maven:org.apache.logging.log4j:log4j-core`,引入版本 2.13.0,修复版本 2.15.0。
## `--ai` 标志(可插拔后端)
上述确定性核心无需 LLM。使用 `--ai` 时,cve2detect 会使用您选择的后端,将具体的检测代码和复现步骤生成到 `ai-draft.md` 中:
```
python3 cve2detect.py CVE-2021-44228 --ai # claude CLI (default, no key)
python3 cve2detect.py CVE-2021-44228 --ai --ai-backend ollama --ai-model qwen2.5:3b # local model, no key
OPENAI_API_KEY=... python3 cve2detect.py CVE-2021-44228 --ai --ai-backend openai --ai-model gpt-4o
```
- **claude**(默认)- Claude Code CLI(`claude -p`),无需 API key。
- **ollama** - 本地模型(默认 `--ai-url http://localhost:11434`),无需 key,完全离线。
- **openai** - 任何兼容 OpenAI 的 API(OpenAI、OpenRouter、Groq、本地 llama.cpp 服务器等);设置 `--ai-url` 和 `OPENAI_API_KEY`(或 `AI_API_KEY`)。
`--ai-model` 和 `--ai-url` 会覆盖各后端的默认设置;如果缺少 key 或服务器,则会跳过并给出明确的提示信息。
## 明确范围说明
生成的规则是**预填了基础信息的骨架,而非最终完成的检测规则** - 它们为您提供了真实的元数据、正确的格式和起始结构,这样您就不必从空白文件开始编写样板代码。版本检查和复现锁定(repro pin)是具体且可用的。`--ai` 可以帮您起草其余内容。
## 环境要求
Python 3(仅使用标准库)。需要访问 OSV 和 NVD 的网络权限。`claude` CLI 是可选的,仅用于 `--ai` 功能。
## 路线图
- 当 CWE/PoC 暗示存在代码特征时,提供更丰富的代码模式规则(Semgrep)
- 当不存在社区模板时,从引用的 PoC 中推导生成 Nuclei 匹配器
标签:CISA项目, GPT, 数字取证, 检测规则生成, 漏洞管理, 自动化脚本, 逆向工具