论文链接: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 分类到指标值。但现有方法有三大缺陷:
- 只给答案不给证据:性能远不完美,人工验证不可避免——而没有支撑证据的分析结果无法高效验证。评估结果直接决定修复排期,可靠性至关重要;
- 处理不了富文本:SVR 不是纯文本——24.0% 的报告含截图(展示攻击步骤/漏洞行为),69.2% 含代码片段(PoC、ASAN 报告);22.1% 的报告内嵌代码超 2000 字符(低信息密度却挤占上下文)。现有方法把截图换成 IMGTAG 占位符——关键细节直接丢弃;
- 忽略项目上下文:报告只说「文件系统同步漏洞」时,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 核心洞察:开卷容易、闭卷难——那就用开卷造闭卷的训练数据
论文预备研究的关键发现链:
- 三个先进 LLM(Llama-3.3-70B/DeepSeek-V3/GPT-4.1)× 四种提示(零样本/few-shot × vanilla/CoT)共 12 种组合,全部大幅落后 proEVA(最好 F1 0.783 vs 0.831);
- 更强的模型与 CoT 都不一定涨分——背景知识不是瓶颈,评估特有知识才是(评估准则、指标值与 SV 特征的关联、历史案例经验);
- 两个典型失败模式: 报告信息不足,需靠历史相似案例定值(如内存类漏洞只给 ASAN 输出,影响指标全靠类比 CVE-2022-27147 这类同项目历史漏洞); 识别不出隐含线索或误读准则——存储型 XSS 的 Scope 恒为 Changed(注入点在服务器、执行点在受害者浏览器,跨了安全权威),但三个 LLM 零样本下 72 题只对 11 题;
- 决定性观察:把正确值「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.819 | 0.495 | 0.572 | 0.359 |
| DeepCVA | 0.832 | 0.512 | 0.549 | 0.298 |
| proEVA | 0.831 | 0.544 | 0.587 | 0.363 |
| 最好通用 LLM | 0.783 | 0.485 | 0.572 | 0.328 |
| EAVA | 0.874 | 0.646 | 0.672 | 0.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.794 | 0.431 | 0.351 |
| w/o 显式推理 | 0.839 | 0.537 | 0.337 |
| w/o RL(仅 SFT) | 0.848 | 0.569 | 0.397 |
| EAVA | 0.874 | 0.646 | 0.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 的根本性改变:
- 知识注入从「稀疏提示」变「稠密参数化」:51,568 条开卷轨迹把准则映射与案例经验写进 8B 模型的权重。因果链:轨迹包含「线索→准则→结论」的完整链条 → SFT 使准则映射成为参数化的条件反射 → w/o 微调消融中 MCC 掉 49.6% 证明该知识只能进参数、RAG 的 top-10 检索密度不够;
- 序数距离奖励改变了错误空间的形状:0/1 奖励把「错一格」与「错三格」同等惩罚,梯度无法区分方向;序数奖励让「Network 误判为 Adjacent(距离1)」明显优于「误判为 Physical(距离3)」——CVSS 指标值天然有序(攻击难度、影响程度),奖励结构与任务的语义结构对齐。MCC 增益(+18.7%/+35.2%)远超 F1(+5.3%/+14.4%)正是类间判别力提升的签名;
- 开卷→闭卷的落差被 RL 显式弥合:SFT 模仿的是「已知答案反推」的轨迹,推理时却要「无答案求解」——GRPO 在闭卷设定下在线探索,用可自动验证的真值距离做奖励,让模型学会在没有提示的情况下走通推理链(w/o RL 掉 13.5% MCC);
- 输入端的信息密度修复:长代码摘要化消除上下文稀释(严重度 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 教它闭卷解题,答案便宜,证据才是交付物。