3. CVE与内部漏洞编号映射表构建

CVE与内部漏洞编号映射表构建 学习卡片

映射表要解决的核心问题

内部扫描器通常使用自己的漏洞编号(如 SCAN-2024-0001),而漏洞公告、厂商通告和修复建议普遍以 CVE 编号为通用标识。构建映射表的目标,是把同一漏洞在不同来源中的编号对齐,并明确哪些内部编号能映射、哪些不能映射。

映射关系并不总是简单的一对一,实际会出现三类情况:

  • 一对一:一个内部编号对应一个 CVE,直接写入映射表。
  • 一对多:一个内部扫描结果实际覆盖多个 CVE,需要拆成多行,每行一个 CVE。
  • 多对一:多个内部编号指向同一个 CVE,需要保留全部内部编号,避免丢失扫描来源。
  • 无法映射:扫描器未提供 CVE、CVE 尚未分配或匹配失败,需要标记为 UNMAPPED 并记录原因。

映射表字段设计

映射表至少应包含以下字段,才能支撑后续覆盖率统计和漏洞治理:

字段含义示例
internal_id内部扫描器漏洞编号SCAN-2024-0001
cve_idCVE 编号,无法映射时填 UNMAPPEDCVE-2024-1234
map_type映射类型1:1 / 1:N / N:1 / UNMAPPED
source映射依据来源scanner / nvd / vendor
confidence映射置信度high / medium / low
reason无法映射或低置信原因no_cve_in_scanner / cve_pending

映射处理流程

处理时先按内部编号分组,再对每个内部编号提取候选 CVE 集合。若候选集合为空,标记为 UNMAPPED;若候选集合只有一个 CVE,标记为 1:1;若候选集合有多个 CVE,则拆分为多行并标记为 1:N。随后反向检查同一 CVE 是否被多个内部编号引用,若是则将这些行标记为 N:1。

CVE 与内部漏洞编号映射关系 内部扫描器编号 SCAN-2024-0001 SCAN-2024-0002 SCAN-2024-0003 SCAN-2024-0004 SCAN-2024-0005 SCAN-2024-0006 映射类型 1:1 1:N N:1 1:1 UNMAPPED UNMAPPED CVE 编号 CVE-2024-1234 CVE-2024-5678 CVE-2024-1234 CVE-2024-9012 UNMAPPED UNMAPPED 1:1 映射 1:N 映射 N:1 映射 UNMAPPED

覆盖率统计与输出

映射完成后,按内部编号维度统计覆盖率:

覆盖率 = 已映射内部编号数 / 内部编号总数 × 100%

以图中示例为例,6 个内部编号中有 4 个成功映射,覆盖率为 4/6 ≈ 66.7%。同时应分别统计 1:1、1:N、N:1 和 UNMAPPED 的数量,便于判断扫描器与 CVE 数据源的匹配质量。

若覆盖率偏低,优先检查扫描器是否输出了 CVE 字段、CVE 数据源是否及时更新,以及匹配规则是否过于严格。不要为了提升覆盖率而强行给无法确认的漏洞分配 CVE。

可执行的映射表样例

以下映射表可直接作为输出模板使用,每行代表一个内部编号与一个 CVE 的对应关系:

internal_idcve_idmap_typesourceconfidencereason
SCAN-2024-0001CVE-2024-12341:1scannerhigh
SCAN-2024-0002CVE-2024-56781:Nnvdhigh
SCAN-2024-0002CVE-2024-56791:Nnvdhigh
SCAN-2024-0003CVE-2024-1234N:1scannerhigh
SCAN-2024-0004CVE-2024-90121:1vendormedium
SCAN-2024-0005UNMAPPEDUNMAPPEDscannerlowno_cve_in_scanner
SCAN-2024-0006UNMAPPEDUNMAPPEDscannerlowcve_pending
映射表构建完成后,应保留原始扫描记录与映射结果的关联,确保后续漏洞优先级排序、修复跟踪和复测都能追溯到同一个内部编号和 CVE 编号。