NeCr00/CVE-Mapper
GitHub: NeCr00/CVE-Mapper
一款具备版本感知能力的 CVE 映射工具,将 Nmap 扫描结果精确关联到真实影响所发现版本的漏洞,并通过独立验证大幅降低误报。
Stars: 6 | Forks: 0
# CVE Mapper
大多数“Nmap → CVE”工具仅通过产品名称进行搜索并倾倒所有结果。**CVE-Mapper
具备版本感知能力**:对于每个发现的服务,它会向 [Vulners](https://vulners.com)
查询匹配确切产品*和*版本的 CVE,随后在报告之前,使用其自带的比较器**独立重新验证
每一个受影响的版本范围**。每个结果都附带置信度以及通俗易懂的理由说明 —— 包括为什么某些结果被拒绝。
## 为什么使用
- **版本精确。** 支持语义化、部分、OpenSSH `7.2p2`、Debian/Ubuntu、
RHEL、epoch、预发布以及 Tomcat-milestone 版本。
- **设计上偏于保守。** `Apache httpd` ≠ `Apache Tomcat`;向后移植的发行版
包和粗略版本会被降级处理,绝不盲目确认。
- **证据支撑。** 每项发现都会说明受影响范围及其判定理由。
- **仅依赖 Vulners 情报**,通过官方 SDK(可清除 Cloudflare 拦截)并提供原始 HTTP
后备方案 —— 外加缓存、重试和速率限制处理。
- **输出**至终端、JSON、CSV 和独立的 HTML。
## 安装
```
pip install -e . # installs the cve-mapper command + the vulners SDK
#OR
pipx install git+https://github.com/NeCr00/CVE-Mapper.git
```
## 快速开始
```
# 1 — 使用 service/version detection 进行扫描
nmap -sV -sC -oX scan.xml
# 2 — 将发现的版本映射到 CVE
cve-mapper --input scan.xml --min-cvss 7.0 --only-exploitable
```
## 用法
```
cve-mapper --input scan.xml [options]
```
| Flag | 用途 |
| --- | --- |
| `--input` / `--input-dir` | 单个 Nmap 报告,或递归扫描的目录 |
| `--json-output` / `--csv-output` / `--html-output` | 输出机器可读 / 电子表格 / 可共享的报告 |
| `--min-cvss 7.0` | 保留 CVSS 评分达到或超过指定值的 CVE |
| `--only-exploitable` | 根据 Vulners 仅保留具有公开漏洞利用的 CVE |
| `--severity` · `--year-from` · `--year-to` | 按严重程度或 CVE 年份过滤 |
| `--confidence Confirmed,Likely` | 仅保留选定的置信度级别 |
| `--strict` | 要求具备 CPE 级别的证据才能将发现标记为 *Confirmed* |
| `--confidence-threshold high` | 将低信任度的 Nmap 检测结果上限设为 *Needs manual verification* |
| `--vulners-api-key` · `--no-cache` · `--debug` | 认证、缓存和诊断 |
运行 `cve-mapper --help` 获取完整列表。
## 工作原理
```
Nmap XML ─▶ normalize service ─▶ query Vulners (CPE + version) ─▶ re-validate range ─▶ grade
```
对于每一对 `(service, CVE)`,CVE-Mapper 在得出结论之前会检查**产品标识**(拒绝
外观相似且厂商无关的项目)、**版本**(检测到的版本是否可证明在受影响范围内?)以及**平台**(OS 兼容性)。
### 置信度级别
| 级别 | 含义 |
| --- | --- |
| **Confirmed** | 标识明确,具体版本确证在范围内,且平台兼容 |
| **Likely** | 在范围内,但存在附加说明(例如向后移植的发行版包) |
| **Possible** | 在范围内,但标识较弱或子版本不明确 |
| **Needs manual verification** | 标识匹配,但版本范围无法可靠比较 |
| **Rejected** | 产品不匹配、版本超出范围或平台冲突 |
## 输出格式
默认提供 `--json-output`(完整的结构化 schema)、`--csv-output`(每次发现一行,
适合电子表格)、`--html-output`(独立且经过转义)以及带颜色的终端
报告。
## 测试
```
pip install pytest && pytest # 127 offline tests — Vulners is fully mocked
VULNERS_API_KEY=… pytest # also runs an opt-in live smoke test
```
## 故障排除
**`HTTP 403` / “Vulners rejected the request”** —— 这几乎总是 Cloudflare 机器人
防护所致,**而**非 API key 失效。这意味着 `vulners` SDK 不可用,因此该
工具回退到了原始 HTTP 后端。请通过以下方式修复:
```
pip install vulners
```
SDK 可以通过 Vulners 的 Cloudflare 验证;而原始 HTTP 后端则无法做到。
将 Nmap 扫描结果转化为真正影响你所发现版本的 CVE ——
而不是所有仅仅提及该产品的 CVE。
大多数“Nmap → CVE”工具仅通过产品名称进行搜索并倾倒所有结果。**CVE-Mapper
具备版本感知能力**:对于每个发现的服务,它会向 [Vulners](https://vulners.com)
查询匹配确切产品*和*版本的 CVE,随后在报告之前,使用其自带的比较器**独立重新验证
每一个受影响的版本范围**。每个结果都附带置信度以及通俗易懂的理由说明 —— 包括为什么某些结果被拒绝。
## 为什么使用
- **版本精确。** 支持语义化、部分、OpenSSH `7.2p2`、Debian/Ubuntu、
RHEL、epoch、预发布以及 Tomcat-milestone 版本。
- **设计上偏于保守。** `Apache httpd` ≠ `Apache Tomcat`;向后移植的发行版
包和粗略版本会被降级处理,绝不盲目确认。
- **证据支撑。** 每项发现都会说明受影响范围及其判定理由。
- **仅依赖 Vulners 情报**,通过官方 SDK(可清除 Cloudflare 拦截)并提供原始 HTTP
后备方案 —— 外加缓存、重试和速率限制处理。
- **输出**至终端、JSON、CSV 和独立的 HTML。
## 安装
```
pip install -e . # installs the cve-mapper command + the vulners SDK
#OR
pipx install git+https://github.com/NeCr00/CVE-Mapper.git
```
## 快速开始
```
# 1 — 使用 service/version detection 进行扫描
nmap -sV -sC -oX scan.xml 标签:CVE映射, GPT, Nmap, Python, 安全规则引擎, 插件系统, 无后门, 漏洞管理, 虚拟驱动器, 逆向工具