← 返回 2026-07-29

将CVE映射到MITRE ATT&CK技术:金标准数据集分类器与LLM标签扩展的局限 Mapping CVEs to MITRE ATT&CK Techniques: A Curated Gold-Set Classifier and the Limits of LLM-Assisted Label Expansion

Cédric Bonhomme, Alexandre Dulaunoy 📅 2026-07-28 👍 3 2026-08-03 18:30
LLM弱监督 MITRE ATT&CK RoBERTa 多标签分类 安全漏洞分类 评估方法论

训练CVE→ATT&CK多标签分类器,证明LLM弱标签无法提升金标准集,并揭示评估协议噪声的陷阱

前置知识

CVE (Common Vulnerabilities and Exposures)

CVE是通用漏洞披露的标准化编号体系,每条记录以一段简短自由文本描述软件中的具体缺陷('什么坏了')。但防御者真正关心的是攻击者如何利用这个缺陷——这需要跨到行为层面的语义。论文中处理的语料是 CIRCL vulnerability-scores 服务提供的 CVE 描述,覆盖数十万条已公开漏洞,长尾分布严重、文本风格简练,是本任务的基础输入。

理解CVE只是'缺陷描述'而非'攻击行为描述',才能明白为什么本任务本质上困难且部分主观——这是论文反复强调的核心张力。

MITRE ATT&CK 知识库

ATT&CK是社区共享的对手行为分类体系,把攻击行为组织成tactics(行为的动机)和techniques(具体手法),很多technique进一步细分为sub-technique。它是动态本体:技术会随版本被新增、弃用、撤销并替换。论文针对 Enterprise 域 v19.1 版本,包含 697 个活跃 technique/sub-technique,并通过 ATT&CK STIX 数据中的 revoked-by 关系把所有ID规范化到同一版本,避免同一行为因版本不同被拆成两个标签。

ATT&CK 是本任务的标签空间和评估标尺,理解它是动态本体(会版本漂移)才能理解作者为何要做 ID 规范化、为何要记录 ATT&CK release。

CTID 三槽位映射方法论

MITRE威胁知情防御中心(CTID)定义了一套把CVE映射到ATT&CK的三槽位方法论:exploitation technique(触发漏洞所用手法)、primary impact(直接产生的影响)、secondary impact(前者进一步引发的影响)。论文的金标签全部来自MITRE分析师按这套方法论手工标注的两个产物:2021 attack-to-cve 映射(约840 CVE)和 Mappings Explorer 的 KEV 集(约420 CVE),合并去重后共1,207条金标准。

这套方法论决定了任务的输出schema(三槽位union成flat的multi-label target),也决定了论文的'金标准'信任边界——作者明确不自己标注,只做获取/规范化/合并/切分。

多标签分类(Multi-label Classification)与BCEWithLogitsLoss

一个CVE通常隐含多个ATT&CK技术(exploitation + primary impact + secondary impact),所以不能用单标签softmax,而要把每个technique当作独立的0/1决策。论文用 transformer encoder + sigmoid 分类头,损失为 BCEWithLogitsLoss,即 $\mathcal{L} = -\sum_i [w_i^+ y_i \log \sigma(z_i) + (1-y_i)\log(1-\sigma(z_i))]$,其中正样本权重 $w_i^+$ 按标签频率的反比放大(带上限裁剪),以缓解长尾。

理解multi-label + 不平衡加权是看懂'57个parent technique词汇表''macro-F1作为稀有技术代理'等设计的前提,也是论文评估指标选择(recall@k而非accuracy)的依据。

Checkpoint 选择与评估噪声(select-on-test)

训练深度模型时通常从多个epoch的checkpoint里挑一个'最好'的来报告。如果在测试集上挑最好,就构成select-on-test:报告值实际是几十次噪声评估的极大值。当测试集很小(论文是119个例子)时,单次评估本身方差就大,普通GPU的非确定性(浮点reduction顺序不固定)足以改变'哪个epoch赢'。论文证明这种噪声可以让完全相同的固定seed跑出 recall@5 差 0.05 的结果,足以颠倒实验结论。

这是论文方法论结论的核心——'多seed报告'是必要但不充分的,必须用独立的validation split做checkpoint选择、用重复或确定性运行,否则小数据小效应实验的结论不可信。

研究动机

当前把CVE映射到ATT&CK技术的工作要么完全依赖手工标注(在数十万CVE规模下不可行),要么依赖两条自动化路径,但二者都有严重问题。第一条是确定性跨框架链 CWE→CAPEC→ATT&CK(如 CVE2CAPEC、BRON):作者实测其在 CVE-2024 库(39,156 CVE)上覆盖率虽高达88.3%,但fan-out失控——中位CVE被分配8个技术、均值13.3个,7,381个CVE(19%)拿到≥20个技术;最频繁的T1574.007(PATH环境变量劫持)被贴到53%的CVE上,这与真实的漏洞利用景观完全不符,是'表扩展artifact'而非行为映射。具体例子:CVE-2024-21732(CWE-79 跨站脚本)经由48个CAPEC被映射到T1027、T1574.006/.007等与XSS毫无关系的技术。第二条是用LLM给CVE打标签以扩展训练集,但廉价LLM标签的噪声是否真的能改善有监督模型,缺乏严格验证。

本文的目标是作者的目标有三层:第一,构建一个真正可信的、provenance-tiered的CVE→ATT&CK训练集,严格区分专家金标签与弱自动派生标签,绝不混淆;第二,在此金集上训练一个多标签分类器,并在诚实的、面向分析师的协议下(recall@k、MRR、macro/micro-F1)证明监督学习相比训练-free的语义相似度基线有实质提升;第三,回答一个尖锐的问题——能否用能力强的大语言模型(约0.39与专家一致率)廉价扩展金集、改善稀有技术覆盖,并对'小数据+小效应'这种高风险实验给出可重复的判定与可复用的评估协议。

与已有工作不同的是,本文的独特切入角度有三:其一,坚持只信专家CTID金标签作训练目标,把派生标签严格隔离在 techniques_derived 列、永不进入训练,从源头切断了'表扩展artifact污染训练'的隐患,这一点是 CVE2ATT&CK 等先前工作没做的;其二,把LLM标签扩展做成了一个完整的、多seed多size的证伪实验,而不是简单接受或拒绝;其三,最独特的是把实验过程的'三次自我推翻'当作一等结果发布——单次说有害、五seed说有益、独立复现+规模扫描说无效——并定位到checkpoint选择噪声这一机制,给出修正协议。这种把方法学的post-mortem当核心贡献的态度在同领域极为罕见。

核心方法

整体思路是'信任标签来源、隔离弱标签、严格评估'。直觉上:标签质量设了天花板,所以先建一个干净的、来源分层的金集(Phase 1),再训练一个紧凑的监督分类器并和训练-free的语义相似度基线硬碰硬比(Phase 2a),最后用validate-before-expand协议测LLM能否扩展金集(Phase 2b)。技术路线:金集来自MITRE CTID两个手工标注源(2021 attack-to-cve + KEV Explorer),通过ATT&CK STIX的revoked-by关系把所有ID规范化到 v19.1,三槽位union成flat的multi-label target,最终1,207 CVE(1,086 train / 121 test);分类器用 roberta-base + sigmoid头 + BCEWithLogitsLoss,per-label正样本加权,sub-technique折叠到parent,仅保留训练例≥5的technique,得57类词汇表;评估用 recall@3/5/10、MRR、macro/micro-F1@0.5;LLM labeler支持 Ollama 本地模型与 Claude API 两种后端,validate模式测一致率、expand模式给新CVE打标,结果写入独立的label_sources=[llm] provenance tier。

核心创新不在模型本身(roberta-base + sigmoid头很标准),而在三点与已有方法的本质区别。第一,标签来源的纪律:派生标签永远不进训练目标,只保留作candidate prior/基线/对比列,从数据层消除CWE→CAPEC→ATT&CK链的表扩展artifact。第二,validate-before-expand 闸门:扩展前必须先在与专家已知标签的hold-out上证明labeler的一致率,避免盲目烧钱或盲目扩张。第三,把'多seed报告'升级为'多seed + 多size + 独立复现 + 修正checkpoint协议'的复合证据链,识别出select-on-test是隐藏方差来源——这是本论文方法论意义上的最大贡献,它把'标签扩展是否有效'这一模糊问题变成可被实验否证的命题,并最终给出阴性结论。

方法步骤详情

Phase 1建数据:抓取CTID两个源 → 按ATT&CK STIX revoked-by链规范化ID到v19.1 → 关联CIRCL vulnerability-scores的CVE描述 → 三槽位union成techniques字段 → 固定切分1,086 train / 121 test → 每行记录label_sources与独立的techniques_derived列。Phase 2a训练:输入=CVE标题+描述的拼接;目标=gold techniques;模型=roberta-base;损失=BCEWithLogitsLoss $\mathcal{L} = -\sum_i [w_i^+ y_i \log\sigma(z_i)+(1-y_i)\log(1-\sigma(z_i))]$,$w_i^+$ 按标签频率反比放大并裁剪上限;优化=AdamW,lr=$1\times10^{-5}$,linear schedule,40 epoch,seed=42;正则=sub-technique折叠到parent、仅保留train例≥5的technique;checkpoint选择=max macro-F1(后期改为validation split)。零shot基线=SMET风格,CVE与technique各自embedding(all-MiniLM-L6-v2),按cosine相似度排序。Phase 2b扩展:labeler按三槽位schema提示LLM并强制结构化输出;validate模式在金test上算P/R/micro-F1;expand模式给未在金集中的CVE打标,写入label_sources=[llm];然后把LLM行只拼进train split、gold test不动,重训分类器做配对对比。修复后的协议:checkpoint选在从train切出的validation split(--val-split 0.1为默认),test仅在最终报告时评估一次,可选完全确定性模式(单GPU、串行CUDA kernel)。

技术新颖性

技术新颖性体现在四个层面。数据层:首个公开的、provenance-tiered的CVE→ATT&CK数据集(CIRCL/vulnerability-attack-techniques, DOI 10.57967/hf/9621),金标签与弱派生标签严格分列,并量化了CVE2CAPEC链的fan-out噪声(中位8、均值13.3、T1574.007占53%)——此前BRON/CVE2CAPEC继承了同样噪声却从未被这样测量。模型层:面向分析师的multi-label ranking评估(recall@k而非accuracy),并把CWE→CAPEC→ATT&CK链定位为'不可训练'而非弱信号。实验层:完整的LLM扩展证伪实验(100/300/600/984 nested subsets × 5 seeds),把'规模能否救活0.39一致率标签'变成可量化问题,结论是规模无效、最大size伤尾部。方法学层:定位并修正了checkpoint选择噪声——证明相同seed不同跑可差0.05 recall@5,给出validation-split选择协议使micro-F1的run-to-run std从0.016降到0.006,并开源为默认配置。这种'把方法学反思当代码与可复现产物发布'的态度是同领域稀缺的。

Overview of the pipeline.
Figure 1: Overview of the pipeline.

实验结果

核心发现分四条主线。第一,监督分类器明显优于零shot基线:在相同test split、相同词汇表下,roberta-base把 recall@3 从0.257提到0.482、recall@5 从0.322提到0.686(接近翻倍)、recall@10 从0.491提到0.842、MRR 从0.397提到0.620(Table 1),证明即便只用1,086条金例,监督训练也物有所值;但macro-F1仅约0.20,稀有技术是短板。第二,CVE2CAPEC派生链不可用:39,156 CVE中34,562被标,中位8/均值13.3个technique,T1574.007等表扩展artifact各占~50%(Fig. 2),训练它等于学映射表结构而非对手行为。第三,LLM标签扩展的'三次推翻':单seed(42)说有害(recall@5 -0.050, Table 3);五seed(42-46)说有益(recall@5 +0.030 paired consistent, Table 4);规模扫描(100-984 nested × 5 seeds)说无效(Table 5,recall@5在N=984降-0.031达2.8 SEM,macro-F1在最大size降-0.039达5.6 SEM——整实验最大最一致的效应)。第四,机制是checkpoint选择噪声:相同seed/data/code/hardware三跑recall@5为0.636/0.683/0.685(spread 0.048);修正后(val split选择)金集五seed recall@5=0.673±0.019、micro-F1 std从0.016降到0.006;最终决定性对比(Table 6)下金-only 0.673±0.019 vs +297LLM 0.655±0.027 vs +984LLM 0.651±0.022,macro-F1在984处确认下降至0.151±0.014(~2.9 SEM)。第五,金标签可扩展、LLM不可:金train nested子集(25/50/75/100% × 5 seeds)所有指标单调上升(recall@5从0.556→0.673、macro-F1从0.114→0.177),972行处仍上升中——分类器是label-quality bound而非data bound。第六,基模型鲁棒性(Table 7):ModernBERT-base金-only ranking明显低于roberta(recall@5 0.614±0.018 vs 0.673±0.019,~5 SEM),但macro-F1下降的扩展结论同样复现(0.180→0.152,~3.1 SEM)。

Fine-tuned classifier (roberta-base, 57-technique vocabulary) vs. the zero-shot similarity baseline, on the gold test split under an identical protocol.
Table 1: Fine-tuned classifier (roberta-base, 57-technique vocabulary) vs. the zero-shot similarity baseline, on the gold test split under an identical protocol.
LLM–vs–gold agreement (parent-technique level). Full split = 121 gold test CVEs.
Table 2: LLM–vs–gold agreement (parent-technique level). Full split = 121 gold test CVEs.
The single-run pilot (seed 42) on the gold test split; matched training, LLM rows in train only.
Table 3: The single-run pilot (seed 42) on the gold test split; matched training, LLM rows in train only.
Gold-only vs. gold+LLM over five seeds (42–46), roberta-base.
Table 4: Gold-only vs. gold+LLM over five seeds (42–46), roberta-base.
Expansion-size scaling: gold training data plus the first N rows of an independently sampled, 984-CVE LLM-labeled batch (nested subsets), five seeds per size.
Table 5: Expansion-size scaling: gold training data plus the first N rows of an independently sampled, 984-CVE LLM-labeled batch (nested subsets), five seeds per size.
The decisive contrast re-run under the corrected protocol (validation-split checkpoint selection; five seeds, mean ± std).
Table 6: The decisive contrast re-run under the corrected protocol (validation-split checkpoint selection; five seeds, mean ± std).
Base-model robustness check: the corrected-protocol contrast re-run on ModernBERT-base (five seeds).
Table 7: Base-model robustness check: the corrected-protocol contrast re-run on ModernBERT-base (five seeds).
The scaling sweep of table 5 as a curve.
Figure 3: The scaling sweep of table 5 as a curve.
Gold labels scale; LLM labels do not.
Figure 4: Gold labels scale; LLM labels do not.
The released gold-only checkpoint in production: the ATT&CK tab of CVE-2021-44077 on the public Vulnerability-Lookup instance.
Figure 5: The released gold-only checkpoint in production: the ATT&CK tab of CVE-2021-44077 on the public Vulnerability-Lookup instance.
查看结构化数据
任务指标本文基线提升
CVE→ATT&CK 多标签分类(gold test split) recall@5 / recall@3 / recall@10 / MRR Supervised roberta-base: 0.686 / 0.482 / 0.842 / 0.620 Zero-shot similarity (SMET-style): 0.322 / 0.257 / 0.491 / 0.397 recall@5 +0.364(约翻倍),MRR +0.223,全部指标提升;修正协议后五seed recall@5=0.673±0.019
LLM labeler vs gold 一致率(121 CVE test split) micro-F1(parent-technique级) qwen3.5:122b assertive single: P 0.431/R 0.360/micro-F1 0.392 监督分类器自身一致率(参考线): micro-F1 0.407 最佳本地配置仅略低于分类器自身一致率,落在常见分析师间一致率区间,但仍未足以提升模型
LLM标签扩展(决定性对比,修正协议5 seeds) recall@5 / macro-F1 gold+984 LLM: recall@5 0.651±0.022 / macro-F1 0.151±0.014 gold-only: recall@5 0.673±0.019 / macro-F1 0.177±0.014 无ranking提升(-0.022),macro-F1显著下降(-0.026, ~2.9 SEM)——扩展在最大size伤稀有技术
金标签规模扩展(修正协议5 seeds) recall@5 / macro-F1 972金行: recall@5 0.673 / macro-F1 0.177 243金行: recall@5 0.556 / macro-F1 0.114 随金标签单调提升,972处仍上升中——证明分类器label-quality bound而非data bound
checkpoint选择方差(相同seed相同config) recall@5 spread / micro-F1 std 修正协议(validation split): micro-F1 std 0.006 pre-correction(test split选择): 三跑recall@5 0.636/0.683/0.685,spread 0.048;micro-F1 std 0.016 方差降低近3倍,select-on-test偏置与隐藏噪声同时被移除
基模型鲁棒性(ModernBERT-base, 5 seeds) recall@5 / macro-F1 ModernBERT gold-only: recall@5 0.614±0.018 / macro-F1 0.180±0.014;+984LLM: macro-F1 0.152±0.015 roberta-base gold-only: recall@5 0.673±0.019 / macro-F1 0.177±0.014 ModernBERT ranking明显更低(~5 SEM),但macro-F1下降的扩展结论在第二个encoder上同样复现

局限与改进

作者明确承认的局限包括:(1) 金集仅~1,200 CVE且偏 exploited-in-the-wild(KEV集按构造如此),technique分布偏向远程服务器利用,难以代表大量未被利用的长尾CVE;(2) 金集size限制了标签词汇表——训练例<5的technique被切掉,分类器无法输出ATT&CK矩阵的大部分;(3) 真值稀缺且难以验证——公开CVE→ATT&CK集合常小、常由同样的CWE→CAPEC→ATT&CK表生成,构成循环评估风险;即使是专家标注也不一定穷尽,technique的缺失不等于真负例;(4) 版本与schema漂移——2021 CTID映射用的是旧ATT&CK release,revoked-by规范化无法推断现代sub-technique或重建语义split/merge后的映射;(5) 扩展结论仅对qwen系列、单prompt配置、最多984 CVE、5 seeds成立,不能完全否定扩展本身;(6) 绝对F1低(macro-F1~0.18)是任务本身的主观性使然,模型应被定位为'为分析师提候选'而非权威映射。我额外观察到的局限:金集子集实验为冻结词汇表、词汇表本身依赖金集(被<5阈值过滤),存在隐式耦合;ModernBERT ranking反而更低暗示encoder不是瓶颈但需要更大规模搜索;缺乏对外部独立gold(非CTID来源)的交叉验证;对LLM labeler的高置信度slot筛选策略只在future work提及而未实测。

独立分析的弱点

独立分析后弱点如下。第一,金集偏差未被量化迁移测试:所有实验都在CTID-derived的121 test上,KEV偏 exploited-in-the-wild 的系统性偏差会让recall@5 0.673 在'从未被利用'的长尾CVE上可能显著下降;改进方向是构建一个独立的、按CWE分层采样的外部评估集,报告跨分布generalization gap。第二,词汇表裁剪与金集规模强耦合:technique需≥5训练例才保留,金子集实验虽冻结词汇表,但实际部署中若想覆盖更多尾部technique必然面临词汇表扩张—例数稀释的两难;改进方向是引入label embedding/hierarchical softmax让低资源technique共享parent的统计强度,或用label-description embedding(本就是SMET的思路)做zero-shot补全。第三,LLM labeler的高置信度slot筛选未被实测:作者future work提到'限制到labeler高置信slot'但论文没给出该策略下的一致率与扩展效果;改进方向是按justification长度/置信分/只取primary impact slot等做分层扩展实验,可能让0.39升到可用的0.5+。第四,CWE→CAPEC→ATT&CK链只被定性为不可训练,未尝试作为软先验:改进方向是把它作为inference时的candidate prior限制建议空间,或在训练时作为辅助多任务信号(弱权重)而非完全弃用。第五,encoder搜索仅测了roberta-base与ModernBERT-base,未触及domain-adapted(SecureBERT)或更大模型(roberta-large);既然ranking明显受益于encoder(roberta vs ModernBERT差5 SEM),更大规模或安全领域预训练的encoder值得系统测试。第六,单CVE案例(CVE-2021-44077)虽直观但是单seed单例,作为机制证据偏弱——改进方向是聚合多个test CVE做rank-shift的统计检验。

未来方向

作者明确提出的方向:(1) 更高一致率的标注——更强的模型、人工review的silver label、或仅取labeler高置信slot;(2) 按CWE分层而非随机采样CVE来标注,针对性补尾部;(3) 在更新、更少exploitation偏差的CVE上评估;(4) 更大的domain-adapted encoder(SecureBERT、roberta-large)系统搜索;(5) 扩大curated金集——其scaling曲线在972行仍上升,是唯一有实测回报的干预;(6) 把分类器用于安全修复commit message + patch/diff的多输入变体,端到端支持GCVE/CVE发布流程的自动映射,但需配套新的可公开review的训练集并评估信息泄漏/仓库与编程语言偏差/patch缺失。基于本文成果我延伸出几条:(a) 把revoked-by规范化升级为'语义迁移review工作流',把ATT&CK版本演进当作版本化数据变换来管理;(b) 把三槽位schema扩展为带置信度与证据片段的结构化输出,让分析师可以信任度排序review;(c) 探索active learning——用当前分类器的不确定性主动选择下一个要请专家标注的CVE,最大化金集scaling曲线的斜率;(d) 引入label-correlation结构(多标签间的co-occurrence)作为结构先验,可能提升尾部technique;(e) 把'三次自我推翻'的方法学反思做成可复用的评估工具包,推广到其他小数据弱标签场景。

复现评估

复现性是本文最大的亮点之一,作者明确把'每一张表都能从release的trainer logs重新生成'当作承诺。开源覆盖:(1) 论文与trainer logs—github.com/vulnerability-lookup/cve-attack-mapping-paper;(2) 代码—VulnTrain工具包 github.com/vulnerability-lookup/VulnTrain;(3) 金数据集 CIRCL/vulnerability-attack-techniques (DOI 10.57967/hf/9621, 1,207行);(4) 扩展数据集 ...-attack-techniques-llm-scaling (DOI 10.57967/hf/9622, 984 LLM-labeled行);(5) 模型 CIRCL/vulnerability-attack-technique-classification-roberta-base (DOI 10.57967/hf/9623, gold-only修正协议seed42) 与对比checkpoint ...-roberta-base-llm-expanded (DOI 10.57967/hf/9624);(6) Listing 2给出完整的shell loop复现命令。算力方面,训练roberta-base 40 epoch属中等开销(单GPU可达),但LLM labeling在两块H100 NVL上跑122B Qwen每CVE约1.4分钟、千条CVE约一天批处理;ModernBERT 10次重跑成本可接受。复现难度:数据/模型/代码/命令/超参齐全,主表(Table 1/6)中小团队可复现;唯一门槛是修正协议前的'pre-correction'绝对数(带select-on-test偏置)需用release的旧版日志才能精确复刻,但作者已说明比较两端跑同协议、方向不受影响。综合评价:复现性极高,是同领域少见的'每张表都能从日志重生'水平。