NeCr00/CVE-Mapper

GitHub: NeCr00/CVE-Mapper

一款具备版本感知能力的 CVE 映射工具,将 Nmap 扫描结果精确关联到真实影响所发现版本的漏洞,并通过独立验证大幅降低误报。

Stars: 6 | Forks: 0

# CVE Mapper

CVE-Mapper

将 Nmap 扫描结果转化为真正影响你所发现版本的 CVE ——
而不是所有仅仅提及该产品的 CVE。

MIT Python 3.9+ tests Vulners conservative

image

安装 · 快速开始 · 工作原理 · 置信度 ·

大多数“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 后端则无法做到。
标签:CVE映射, GPT, Nmap, Python, 安全规则引擎, 插件系统, 无后门, 漏洞管理, 虚拟驱动器, 逆向工具