Boosting Vulnerability Detection of LLMs via Curriculum Preference Optimization with Synthetic Reasoning Data¶
会议: ACL 2025
arXiv: 2506.07390
代码: https://github.com/Xin-Cheng-Wen/PO4Vul
领域: LLM对齐 / 代码安全
关键词: 漏洞检测, 偏好优化, 推理数据合成, 课程学习, 三元组SFT
一句话总结¶
提出 ReVD 框架,通过双向漏洞推理数据合成 + 三元组 SFT(同时学习漏洞代码/修复代码/代码差异的推理)+ 课程化在线偏好优化(COPO),将 LLM 的漏洞检测准确率提升 12-23%,在 PrimeVul 和 SVEN 上达到 SOTA。
研究背景与动机¶
- 领域现状:LLM 在代码相关任务上表现出色,但在软件漏洞检测上仍然有限。CodeBERT/UniXcoder 等 CodePTM 通过微调做漏洞检测,但效果仍不足。
- 现有痛点:(a) 缺乏漏洞推理数据——现有数据只有代码标签没有"为什么是漏洞"的推理过程;(b) 模型学的是语义表示而非漏洞模式——漏洞代码和修复代码语义高度相似(GPT-4 在 78.6% 的配对上无法区分)。
- 核心矛盾:漏洞修复通常只涉及微小的代码变更(调整缓存大小、添加安全检查等),导致漏洞代码和修复代码几乎同义,LLM 基于语义的理解无法捕捉关键差异。
- 本文要解决什么? 让 LLM 学习漏洞的推理模式(为什么有漏洞、怎么修复)而非仅语义表示。
- 切入角度:合成推理数据+三元组对比学习+课程化偏好优化。
- 核心 idea 一句话:用合成推理数据教 LLM "为什么有漏洞",用三元组损失区分漏洞和修复代码,用课程偏好优化聚焦薄弱漏洞类型。
方法详解¶
整体框架¶
三模块流水线:BVD 数据合成 → T-SFT 三元组微调 → COPO 课程偏好优化
关键设计¶
- BVD(双向漏洞数据生成):
- 前向推理:分析漏洞代码 → 生成"为什么这段代码有漏洞"的推理链
- 后向推理:分析修复代码 → 生成"修复了什么、为什么这样修复"
-
利用 CVE/CWE 信息辅助推理,生成 28K 高质量推理数据
-
T-SFT(三元组SFT):
- 三路损失:预代码推理 + 后代码推理 + 代码差异推理
- \(\mathcal{L} = \ell(pre\_code) + \ell(post\_code) + \ell(code\_diff)\)
-
让模型同时学"漏洞模式"、"修复模式"和"差异模式"
-
COPO(课程在线偏好优化):
- 实例级课程:按漏洞类型准确率加权采样——越差的类型越多采样
- 任务级课程:将每条数据分解为 3 个渐进任务(定位漏洞行→分析触发路径→解释根因)
- IPO 优化避免在有限漏洞数据上过拟合
实验关键数据¶
主实验(PrimeVul + SVEN 数据集)¶
| 方法 | PrimeVul Acc | PrimeVul F1 | SVEN VP-Score |
|---|---|---|---|
| CodeBERT | 基线 | 基线 | 基线 |
| GPT-4 (零样本) | 较低 | 较低 | 较低 |
| ReVD | +12-23% | +10.3% | +18.15% |
关键发现¶
- ReVD 全面超越 9 个基线(CodePTM + LLM),在准确率上提升 12-23%
- GPT-4 在 78.6% 的漏洞/修复配对上判断一致——验证了语义相似性是核心挑战
- 课程优化的渐进式训练比一次性训练效果好——弱类型漏洞的检测显著提升
- 推理数据对vu检测至关重要——无推理数据的微调效果大幅下降
亮点与洞察¶
- 双向推理数据合成将隐式的修复逻辑显式化,让 LLM 学到"为什么"而非"像什么"
- 三元组损失巧妙利用了漏洞检测的独特结构(代码-修复-差异三角关系)
- 课程化偏好优化解决了漏洞类型不平衡问题——聚焦薄弱环节
局限性 / 可改进方向¶
- 推理数据由 LLM 合成,质量依赖于模型对漏洞的理解
- 仅测试 C/C++ 代码,未验证多语言适用性
- COPO 的课程设计依赖 CWE 分类,对新型漏洞可能不够灵活
相关工作与启发¶
- vs CodeBERT/UniXcoder:CodePTM 只学语义表示,ReVD 学漏洞推理模式——突破了"语义相似但安全性不同"的困境
- vs GPT-4 零样本:即使是最强商用模型也无法区分微妙漏洞,需要专门训练
- 对代码安全领域的 LLM 应用有重要推进
评分¶
- 新颖性: ⭐⭐⭐⭐ 推理数据合成+三元组SFT+课程PO的组合新颖且针对性强
- 实验充分度: ⭐⭐⭐⭐ 9 个基线对比,两个数据集,消融完整
- 写作质量: ⭐⭐⭐⭐ 问题motivation清晰(GPT-4 的 78.6% 失败率很有说服力)
- 价值: ⭐⭐⭐⭐⭐ 首个漏洞推理数据集+框架,对代码安全 LLM 有直接实用价值