论文链接:arxiv.org/abs/2608.25905 复现包:doi.org/10.6084/m9.figshare.29205035 发表时间:2026年8月(ISSTA 2026,Proc. ACM Softw. Eng. Vol.3, No. ISSTA, Article ISSTA097) 机构:浙江大学 + 华为(加拿大)——企业+高校合作:浙大团队(Shengyi Pan、Xin Xia、Shanping Li 等)主导方法设计、数据构建与实验,华为加拿大 Jiayuan Zhou 参与研究并依托 CCF-华为 Populus Grove 基金与国家重点研发计划支持,体现「高校出方法、企业出场景与资源」的协作 领域标签:cs.SE / 软件安全 / 漏洞评估 / LLM 后训练


一、论文背景

1.1 什么是软件漏洞评估(SV Assessment)?

软件漏洞(SV)数量年年暴涨,漏洞管理的核心问题是:先修哪个? 行业标准(ISO/IEC 30111)要求厂商及时处置关键漏洞,安全 SLA 甚至规定关键漏洞须在 15 天内缓解——想想 Log4Shell 的破坏力就明白优先级为什么致命。

漏洞评估就是排优先级的关键阶段:用 CVSS(通用漏洞评分系统) 给每个漏洞打分。最常用的是 Base 指标组的八项:

类别指标取值
可利用性攻击向量 AV / 攻击复杂度 AC / 所需权限 PR / 用户交互 UI如 AV:网络/邻接/本地/物理
影响机密性 C / 完整性 I / 可用性 A各:无/低/高
范围Scope S不变/改变

八项指标赋值后代入标准公式算出严重度分数(低/中/高/危)。目前评估的输入主要是漏洞报告(SVR)——例如 GitHub issue。

1.2 人工评估的瓶颈与自动化的局限

人工给 CVSS 赋值费时费力,CVE 披露与 NVD 发布 CVSS 值之间的时滞近年快速拉大。于是有了自动化研究:训练 ML/DL 分类器把 SVR 分类到指标值。但现有方法有三大缺陷:

  1. 只给答案不给证据:性能远不完美,人工验证不可避免——而没有支撑证据的分析结果无法高效验证。评估结果直接决定修复排期,可靠性至关重要;
  2. 处理不了富文本:SVR 不是纯文本——24.0% 的报告含截图(展示攻击步骤/漏洞行为),69.2% 含代码片段(PoC、ASAN 报告);22.1% 的报告内嵌代码超 2000 字符(低信息密度却挤占上下文)。现有方法把截图换成 IMGTAG 占位符——关键细节直接丢弃;
  3. 忽略项目上下文:报告只说「文件系统同步漏洞」时,AV 取本地/邻接/网络都说得通;但知道受影响项目是 nextcloud/desktop(云存储应用)后,网络是显然答案。NIST 800-30 等标准明确认定项目信息是评估的必要上下文。

二、论文定位和关联工作

2.1 研究谱系一:自动化 SV 评估

工作思路与 EAVA 的区别
ML 分类器(RF/SVM/XGB 等)特征工程 + 分类无证据、无富文本
DeepCVA (Le et al.)多任务学习:统一编码器预测全部 CVSS 指标DL 分类范式,同样只有答案
proEVA (Pan et al.)prompt-tuning 利用 CVSS 指标间的强关联最强基线,但占位符替换富文本

EAVA 的差异化:第一个系统研究 LLM 用于 SV 评估的工作 + 第一个强调「证据支撑」+ 第一个把 RL 用于该任务。

2.2 研究谱系二:LLM 领域专化

「教师-学生」纯指令微调范式(如各领域的 LLM 数据合成工作)是主流路线;EAVA 的增量是 SFT + GRPO 两阶段——用 RL 在线自探索培养内在推理能力,弥合「开卷标注」与「闭卷推理」的设定落差。GRPO 的组相对优势估计恰好匹配本任务「预测值可自动验证」的特性(无需另训价值模型)。

定位结论:EAVA 站在「漏洞评估自动化」与「LLM 领域专化」的交汇点,核心主张是:通用 LLM 失败的根因是缺评估特有知识,而这个知识可以用「开卷反推」低成本规模化注入。

三、问题定义

3.1 从具体场景出发

具体任务:给定一份 SVR(含富文本)+ 项目信息,对八个 CVSS 指标各选一个正确值,并且给出支撑证据(关键词/短语提取 + 推理过程),使安全分析师能快速验证。

3.2 核心洞察:开卷容易、闭卷难——那就用开卷造闭卷的训练数据

论文预备研究的关键发现链:

  1. 三个先进 LLM(Llama-3.3-70B/DeepSeek-V3/GPT-4.1)× 四种提示(零样本/few-shot × vanilla/CoT)共 12 种组合,全部大幅落后 proEVA(最好 F1 0.783 vs 0.831);
  2. 更强的模型与 CoT 都不一定涨分——背景知识不是瓶颈,评估特有知识才是(评估准则、指标值与 SV 特征的关联、历史案例经验);
  3. 两个典型失败模式: 报告信息不足,需靠历史相似案例定值(如内存类漏洞只给 ASAN 输出,影响指标全靠类比 CVE-2022-27147 这类同项目历史漏洞); 识别不出隐含线索或误读准则——存储型 XSS 的 Scope 恒为 Changed(注入点在服务器、执行点在受害者浏览器,跨了安全权威),但三个 LLM 零样本下 72 题只对 11 题;
  4. 决定性观察:把正确值「Changed」告诉 LLM,它能准确指出「存储型 XSS」就是支撑证据——LLM 有背景知识做证据定位(开卷),只是推理不出正确值(闭卷)。

3.3 形式化定义

开卷标注任务:给定 SVR、真值指标值 $v$、以及从 CVSS 官方规范提取的「区分 $v$ 与其他候选值的关键属性」,生成推理轨迹(线索定位 → 全局推理)。

闭卷评估任务:给定 SVR 与指标定义,自主推理出正确值。

训练目标:$\max_\theta E[\sum \text{CLM loss}]$(SFT 模仿轨迹)+ GRPO 目标(式 2,组相对优势 + clip + KL 正则),奖励函数按序数距离设计:

$$R(o) = \begin{cases} 0 & \text{格式无效} \\ 0.1 & \text{非法指标值} \\ 1.5 - \frac{dis(value_{pred}, value_{gt})}{max\_dis_m} & \text{否则} \end{cases}$$

其中距离 = 预测值与真值在候选值索引上的绝对差(如 AV 的 Network=0 与 Local=2 距离为 2,max_dis=3)。

3.4 抽象的精妙之处

把「昂贵的专家推理标注」问题转置为「便宜的开卷证据列举」问题——前提洞察是验证比生成容易(与人类「事后诸葛亮」的认知特性同构)。序数距离奖励则把「错多少」翻译成「奖多少」,比 0/1 奖励保留了更密的梯度信号。

四、问题解法

EAVA = 信息富化(三个 Agent)+ 专用评估 LLM(两阶段训练)+ 历史检索(事后证据)。

4.1 组件一:专用 LLM Agent 预处理富文本

类比:正式评估前派三个助理——一个读懂截图、一个消化长代码、一个调查项目背景,各自写摘要交给主评估官。

Agent输入处理输出
代码分析正则提取的内嵌代码仅处理超 500 字符的低密度长代码(短代码保留原样防信息损失);逐段分析、带前文上下文、两步 CoT(通读→摘要)简洁摘要替换原代码
截图分析截图 URL → 下载 → Base64多模态 LLM 逐张分析,带前文上下文截图内容描述
项目信息爬取项目主页简介LLM 摘要强调功能与应用场景项目上下文摘要

正确性验证:抽样 50 截图 + 50 代码段双人独立评分——代码 50/50 满分,截图 48 个满分(2 个小失误:混入前图信息、把 RCE 弹出的计算器误认为十六进制编辑器)。

4.2 组件二:「开卷反推」大规模轨迹标注

类比:像考后复盘——拿着标准答案反推解题过程,写出一本「标准解题思路」教材。

prompt 三段式:(1) 被赋值的 CVSS 指标信息(指标介绍 + 区分该值与候选值的关键特征,取自官方规范);(2) 两步指令——先从 SV 信息中定位线索(关键词/短语等局部事实特征),再综合局部证据为全局推理、论证该值如何从漏洞信息推导而来;(3) 严格输出格式(Clues: / Reasoning:)。

「先定位后推理」的两步设计有两个好处:分解让模型聚焦子目标、证据定位更深;先收集表层关键词保证推理起点忠实源于给定信息。prompt 经作者多轮试点-评估(忠实性/完备性)-修订迭代。

规模与质检:对 6,446 份 SVR × 8 指标 = 51,568 个指标级数据点全部标注;随机抽 400 个由两位领域专家按事实性与相关性双标准独立评估(56 人时),Cohen’s κ=0.84,97.8%(391 个)双标准全过。

4.3 组件三:SFT + GRPO 两阶段训练

  • SFT(注入知识):Llama-3.1-8B,指令模板对应三步推理(定位线索→推理→选值),因果语言建模损失,学习率 1e-5,两轮;
  • GRPO(培养推理):每个 prompt 采样 G=5 个输出,组内归一化优势,序数距离奖励(式 1)+ clip + KL 正则,学习率 1e-6,两轮。

为什么 SFT 不够: 开卷标注与闭卷推理存在设定落差; SFT 泛化有限、跨设定迁移弱——GRPO 让模型在可自动验证的任务上通过在线自探索发展内在推理。

4.4 组件四:相似历史漏洞检索(事后证据)

推理轨迹本身(而非原始 SVR)作为检索代理——SVR 噪声大且不针对特定指标,轨迹已是指标条件化的干净证据。混合检索(稀疏 BM25 + 稠密语义)取 top-10,LLM 重排器批量打相关分(比逐个打绝对分更稳——相对排序比绝对一致性更符合模型直觉)。检索只增强证据可信度,不参与预测。

五、评估指标与实验证据

5.1 数据集与指标

自建数据集:NVD+OSV 的 CVE 记录关联 GitHub issue 作为 SVR 代理,排除无 CVSS v3 标签、<100 星项目、CVE 披露后创建(防泄漏)、多 CVE 纠缠的报告,得 6,446 份 SVR / 1,986 个项目,覆盖 54 种语言(含 GitHub Top-10 全部)与 159 个 CWE 类别(覆盖 MITRE Top-25 全部)。时间感知 8:1:1 划分(训练用历史、测试评估未来)——时间切分对 SV 预测任务的可靠评估至关重要。

指标:weighted-F1(受多数类驱动)与 MCC(衡量全类一致性与类间判别、对不平衡更敏感)——双指标互补;报告八指标单项 + 八指标平均 + 严重度等级(由八指标经官方公式合成)。

5.2 RQ1:主实验(vs 11 个基线)

方法平均 F1平均 MCC严重度 F1严重度 MCC
最强 ML(LGBM)0.8190.4950.5720.359
DeepCVA0.8320.5120.5490.298
proEVA0.8310.5440.5870.363
最好通用 LLM0.7830.4850.5720.328
EAVA0.8740.6460.6720.490
  • vs proEVA:平均 +5.3% F1 / +18.7% MCC;严重度 +14.4% / +35.2%;
  • MCC 增益远大于 F1——EAVA 的优势集中在少数类性能与类间判别(这正是序数距离奖励的直接效果);
  • 单指标上 EAVA 除 AC 外全面领先,增益最大处恰是基线最弱的指标(C +9.7%、AV +8.3%、UI +7.9%、I +6.5%);
  • 通用 LLM 全线大幅落后 ML/DL 基线——再次印证缺领域知识是根因。

5.3 RQ2:训练设计消融

变体平均 F1平均 MCC严重度 MCC
w/o 微调(70B + RAG)0.7940.4310.351
w/o 显式推理0.8390.5370.337
w/o RL(仅 SFT)0.8480.5690.397
EAVA0.8740.6460.490
  • 去微调(换 RAG):MCC 掉 49.6%——微调是「稠密方案」(知识进参数),RAG 是「稀疏方案」,领域知识注入上稠密碾压稀疏。最依赖领域知识的 UI/Scope 掉得最狠(F1 −27.6%/−21.3%);
  • 去显式推理:MCC 掉 20.1%——学「怎么推」而非只学「答案」确实重要;
  • 去 RL:MCC 掉 13.5%——GRPO 补足开卷→闭卷的落差。

5.4 RQ3:信息富化消融

去代码预处理:严重度 F1 掉 8.5%(长代码的干扰消除是最大杠杆);去截图:AV/PR 的 MCC 掉 12.7%/16.3%(截图里的攻击步骤直接决定可利用性指标);去项目信息:全线一致下降(严重度 MCC −8.9%)。

5.5 RQ4:用户研究(证据的实用性)

8 名 3-5 年经验安全从业者 × 40 个 SV × 8 指标 = 320 任务:

  • 284 个正确预测中,96.8%(275 个)证据被评为有用(≥4/5),事实性/相关性/完整性均分 >4.6;
  • 87 个被检视的历史 SV 信息中 87.6% 评为有用;「不太有用」的 54 案例中分析师转向更依赖历史信息——证据质量分级与人的置信行为耦合;
  • 36 个错误预测中分析师仍有 12 个选出正确值——不易被误导;错误案例的证据「事实正确但相关性不足」:模型分析对了漏洞但误读 CVSS 准则或给出过于泛化的证据;
  • 剩余 24 个分析师也错的案例中 18 个是公开信息本身不足以定值或 NVD 标注不当(如 CVE-2023-39138,NVD 给 Availability=High 而 Synk 与 EAVA 都给 None)——标签噪声的诚实呈现。

5.6 成本与泛化

单份 SVR 全流程 0.0327 美元、约 106 秒(批处理 8 可压到 1.52 秒评估延迟);换 Qwen3-8B 底座性能相当(F1 0.872 vs 0.874)——方法不绑定特定基座。

为什么实验设计能证明论点:预备研究先证明「通用 LLM 缺领域知识」(12 组合全败 + 两个失败模式的定性归因);主实验在时间感知切分下对比 11 基线;三组消融分别隔离「知识注入方式」「显式推理」「RL」三个变量;用户研究把「证据有用」从指标主张变成人的实测——证据链从动机到落地完整闭合。

六、效果优势的根源解释

对比对象:proEVA(最强 DL 基线)与通用 LLM。它们为何不行?

基线的根本局限:

  • 通用 LLM:缺评估特有知识——不是「不知道 XSS 是什么」,而是不知道「存储型 XSS 的 Scope 恒为 Changed」这类准则-特征映射与「GPAC 项目的 UAF 漏洞影响指标照抄 CVE-2022-27147」这类案例经验。这些知识在预训练分布里太稀疏(零样本 Scope 准确率仅 15.3%),few-shot 给 31 个官方示例也只是杯水车薪;
  • proEVA/DeepCVA:分类器架构只学到「报告表面特征→指标值」的统计映射,没有推理过程,也无法消费截图与项目上下文——信息瓶颈在输入端与表达端双重存在。

EAVA 的根本性改变:

  1. 知识注入从「稀疏提示」变「稠密参数化」:51,568 条开卷轨迹把准则映射与案例经验写进 8B 模型的权重。因果链:轨迹包含「线索→准则→结论」的完整链条 → SFT 使准则映射成为参数化的条件反射 → w/o 微调消融中 MCC 掉 49.6% 证明该知识只能进参数、RAG 的 top-10 检索密度不够;
  2. 序数距离奖励改变了错误空间的形状:0/1 奖励把「错一格」与「错三格」同等惩罚,梯度无法区分方向;序数奖励让「Network 误判为 Adjacent(距离1)」明显优于「误判为 Physical(距离3)」——CVSS 指标值天然有序(攻击难度、影响程度),奖励结构与任务的语义结构对齐。MCC 增益(+18.7%/+35.2%)远超 F1(+5.3%/+14.4%)正是类间判别力提升的签名;
  3. 开卷→闭卷的落差被 RL 显式弥合:SFT 模仿的是「已知答案反推」的轨迹,推理时却要「无答案求解」——GRPO 在闭卷设定下在线探索,用可自动验证的真值距离做奖励,让模型学会在没有提示的情况下走通推理链(w/o RL 掉 13.5% MCC);
  4. 输入端的信息密度修复:长代码摘要化消除上下文稀释(严重度 F1 +8.5%),截图分析把「计算器被弹出」这类视觉证据变成可推理文本(AV/PR MCC +12.7%/+16.3%),项目上下文补上「这是云存储应用所以是 Network」的外部知识——三个 Agent 各自解除一种信息瓶颈。

反事实验证:三组消融分别移除知识注入、显式推理、RL——每个组件拿掉都掉分且掉在不同指标上,各自必要。

如实说明:NVD 标签本身有噪声(不同数据库给同一 CVE 打不同分);Llama-3.1-8B 知识截止与部分测试集重叠(已用时间切分缓解,且通用 LLM 基线同样重叠却大幅落后,反证污染影响有限);仅覆盖 CVSS 标准(EPSS 等未涉及)。

七、必要知识反推

7.1 领域知识层

  • CVSS v3 规范的完整语义:八指标定义、值域、官方公式、以及「区分值与值的关键属性」——开卷标注 prompt 的第一段直接取材于此,不懂规范就无法构造标注任务;
  • 漏洞类型与评估惯例:存储型 XSS Scope 恒为 Changed、UAF 类漏洞的报告形态与影响推断惯例——失败模式分析的前提;
  • SVR 数据生态:NVD/OSV/GitHub issue 的关系、数据清洗规则(为何排除 <100 星项目、披露后创建的报告)——代表性数据集的工程判断。

7.2 方法论知识层

  • 提示工程实证:12 组合的对照设计(模型×提示方式)、few-shot 显著优于 zero-shot 而 CoT 不一定——用实验而非直觉指导设计;
  • CoT 分解与忠实性:locate-and-analysis 两步结构、先表层证据后全局推理的次序保证证据溯源;
  • GRPO 与可验证奖励:组相对优势估计、序数距离奖励设计、clip+KL 正则——把任务可自动验证性转化为 RL 信号;
  • 评估方法论:weighted-F1 与 MCC 的互补性、时间感知切分防泄漏、严重度合成与平均性能的关系(指标影响不同、相反偏差可抵消)。

7.3 工程知识层

  • 富文本预处理管线:正则提取、Base64 编码截图、超长阈值(500 字符)的选择(保留短代码防信息损失);
  • 混合检索 + 批量 LLM 重排:检索代理用推理轨迹而非原始报告的洞察;
  • 标注质检协议:双人独立 + κ 一致性 + 400 样本 56 人时的投入——大规模合成数据的可信度锚点;
  • 成本核算:单报告 0.0327 美元的端到端账目。

7.4 知识融合的关键节点

  • 节点一:「开卷/闭卷」落差的双重利用——发现 LLM 开卷强闭卷弱,一方面用开卷造训练数据(解数据贵),另一方面用 RL 补闭卷能力(解推理弱)——同一诊断导出两个互补的解法,这是全文最漂亮的化学反应。
  • 节点二:奖励结构与领域语义对齐——意识到 CVSS 指标值是有序的(攻击难度/影响程度递进),把「值的距离」编码进奖励——RL 工具与领域结构的嫁接。
  • 节点三:证据的双重角色——推理轨迹既是训练目标(提升准确率)又是交付物(供人验证)又是检索代理(历史案例索引)——一物三用,方法各环节因此咬合成闭环。

八、论文中可以提取的通用性灵感

灵感一:开卷反推——用「已知答案找证据」规模化构造推理数据

核心思想:当模型「有足够背景知识为给定答案找证据、但推理不出答案」时,把标注任务从「闭卷求解」转置为「开卷论证」——真值免费(数据库里有),推理轨迹由 LLM 生成、少量专家抽检把关。 论文证据:51,568 个轨迹 97.8% 双标准合格(κ=0.84);零样本 Scope 15.3% 准确率的 LLM 在给定 Changed 后能准确指出存储型 XSS 证据。 推广场景:(1) 医疗诊断编码的推理数据构造;(2) 法律条文适用的案例标注;(3) 金融合规判定的解释数据;(4) 任何「有大量标签、零解释」的领域知识注入任务。

灵感二:奖励应编码错误的「距离」而非仅对错

核心思想:当输出空间有天然的序结构(等级、程度、优先级)时,序数距离奖励比 0/1 奖励保留更密的优化信号,且效果集中在判别力指标(MCC)上。 论文证据:序数奖励使 MCC 提升 +18.7%/+35.2%,远超 F1 的 +5.3%/+14.4%——类间判别是主要增益来源。 推广场景:(1) 严重度分级/星级预测的 RL 训练;(2) 排序任务的 reward shaping;(3) 医疗分期、信用评级等有序分类;(4) 任何 RLVR 任务输出空间的先验结构利用。

灵感三:稠密知识注入与稀疏检索的适用分界

核心思想:领域特异的「准则-特征映射」类知识(需要条件化反射式调用)适合参数化注入;显式事实查询适合 RAG——两者不是替代关系而是按知识类型分配。 论文证据:w/o 微调(70B+RAG)比 EAVA 的 MCC 低 49.6%,尽管前者模型大 9 倍且 RAG 配了含证据的示例——稀疏检索的覆盖密度撑不起准则类知识。 推广场景:(1) 企业知识库的「制度进模型、文档进检索」分层;(2) 编程助手的语言惯例微调 + 库文档检索;(3) 医学助手诊疗规范微调 + 文献检索。

灵感四:中间产物(推理轨迹)是最好的检索代理

核心思想:结构化的中间表示比原始输入更适合做检索查询——它去噪、指标条件化、且天然携带语义索引信号。 论文证据:用推理轨迹(而非原始 SVR)检索历史 SV,因为「原始报告噪声大、不针对特定指标」。 推广场景:(1) RAG 查询改写用推理链而非关键词;(2) 代码搜索用意图描述而非代码文本;(3) 客服工单路由用诊断摘要而非原始描述。

灵感五:高风险自动化必须交付「可验证的证据」而非仅答案

核心思想:当自动化结果要进入人工决策链(修复排期、诊断、审计)时,「答案+证据+相似案例」三件套才构成可用交付物——证据使用户研究中的纠错成为可能(36 个错误预测中分析师仍对 12 个)。 论文证据:96.8% 证据被评为有用;错误案例的证据「事实正确但相关性不足」——分析师据此识别问题而不被误导。 推广场景:(1) 医疗 AI 的诊断+依据+相似病例;(2) 风控的拒绝原因+类比案例;(3) 司法辅助的条文援引+类案检索;(4) 任何「AI 建议+人最终把关」的工作流设计。


一句话总结:给漏洞打分这件事,通用大模型的失败不是不够聪明而是没背过准则——把「已知答案反推过程」的开卷标注灌进 8B 小模型、再用带距离感的 RL 教它闭卷解题,答案便宜,证据才是交付物。