R2Vul: Learning to Reason about Software Vulnerabilities with Reinforcement Learning and Structured Reasoning Distillation

📄 arXiv: 2504.04699v2 📥 PDF

作者: Martin Weyssow, Chengran Yang, Junkai Chen, Ratnadira Widyasari, Ting Zhang, Huihui Huang, Huu Hung Nguyen, Yan Naing Tun, Tan Bui, Yikun Li, Ang Han Wei, Frank Liauw, Eng Lieh Ouh, Lwin Khin Shar, David Lo

分类: cs.SE, cs.AI, cs.CL

发布日期: 2025-04-07 (更新: 2025-08-07)


💡 一句话要点

R2Vul:结合强化学习与结构化推理蒸馏提升代码LLM的软件漏洞检测能力

🎯 匹配领域: 支柱二:RL算法与架构 (RL & Architecture) 支柱九:具身大模型 (Embodied Foundation Models)

关键词: 软件漏洞检测 强化学习 AI反馈 推理蒸馏 代码LLM 安全分析 多语言数据集

📋 核心要点

  1. 现有代码LLM在软件漏洞检测中推理能力不足,难以提供可靠的安全解释。
  2. R2Vul结合RLAIF和结构化推理蒸馏,训练小型代码LLM生成安全意识的漏洞解释,提升检测精度。
  3. 实验表明,1.5B的R2Vul模型超越了32B的教师模型和Claude-4-Opus等商业LLM,并降低了假阳性率。

📝 摘要(中文)

大型语言模型(LLMs)在软件漏洞检测方面表现出潜力,但其推理能力仍不可靠。我们提出了R2Vul,一种结合来自AI反馈的强化学习(RLAIF)和结构化推理蒸馏的方法,旨在训练小型代码LLM在检测漏洞的同时生成具有安全意识的解释。与先前的思维链和指令调优方法不同,R2Vul通过RLAIF奖励有充分根据的漏洞解释,而非看似合理的解释,从而实现更精确的检测和高质量的推理生成。为了支持RLAIF,我们构建了首个用于漏洞检测的多语言偏好数据集,包含C#、JavaScript、Java、Python和C的18,000个高质量样本。我们在五种编程语言上评估了R2Vul,并与四种静态分析工具、八种最先进的基于LLM的基线以及各种微调方法进行了比较。结果表明,一个15亿参数的R2Vul模型超过了其320亿参数的教师模型和领先的商业LLM,如Claude-4-Opus。此外,我们引入了一个轻量级的校准步骤,以降低在不同不平衡数据分布下的假阳性率。最后,通过定性分析,我们表明LLM和人类评估者都一致认为R2Vul模型的推理能力优于其他基于推理的基线。

🔬 方法详解

问题定义:现有基于LLM的软件漏洞检测方法,虽然在一定程度上能够识别漏洞,但其推理能力不足,生成的解释往往不可靠,难以区分合理但错误的解释和真正有根据的解释。这导致检测结果的准确性受到限制,尤其是在复杂漏洞场景下。

核心思路:R2Vul的核心思路是通过强化学习,让模型学习区分“好”的漏洞解释和“坏”的漏洞解释。具体来说,就是通过AI反馈(RLAIF)来奖励那些基于充分证据的解释,惩罚那些看似合理但实际上错误的解释。同时,利用结构化推理蒸馏,将大型模型的推理能力迁移到小型模型上,从而在保证推理质量的同时,降低计算成本。

技术框架:R2Vul的整体框架包含以下几个主要阶段:1) 构建多语言偏好数据集,用于RLAIF的训练。该数据集包含多种编程语言的漏洞样本,并标注了不同解释的质量偏好。2) 使用RLAIF训练小型代码LLM,使其能够生成高质量的漏洞解释。3) 使用结构化推理蒸馏,将大型模型的推理能力迁移到小型模型上。4) 引入轻量级的校准步骤,降低在不平衡数据分布下的假阳性率。

关键创新:R2Vul最重要的创新点在于将RLAIF应用于软件漏洞检测领域,并结合结构化推理蒸馏,有效地提升了小型代码LLM的推理能力和检测精度。与传统的思维链和指令调优方法不同,R2Vul更加注重解释的质量和可靠性,通过奖励有根据的解释,惩罚错误的解释,从而提高模型的判断能力。

关键设计:在RLAIF阶段,设计了合适的奖励函数,用于评估不同解释的质量。奖励函数需要能够区分基于充分证据的解释和看似合理但错误的解释。在结构化推理蒸馏阶段,采用了合适的蒸馏策略,将大型模型的知识迁移到小型模型上,同时保证小型模型的推理效率。此外,轻量级的校准步骤通过调整模型的输出概率,降低了在不平衡数据分布下的假阳性率,具体实现方式未知。

🖼️ 关键图片

fig_0
fig_1
fig_2

📊 实验亮点

R2Vul在五种编程语言上进行了评估,结果表明,一个15亿参数的R2Vul模型超过了其320亿参数的教师模型和领先的商业LLM,如Claude-4-Opus。此外,R2Vul还引入了一个轻量级的校准步骤,以降低在不同不平衡数据分布下的假阳性率。定性分析表明,LLM和人类评估者都一致认为R2Vul模型的推理能力优于其他基于推理的基线。

🎯 应用场景

R2Vul可应用于软件安全分析、代码审计、漏洞挖掘等领域。它可以帮助开发人员更准确地识别和修复代码中的漏洞,提高软件的安全性。此外,R2Vul生成的安全解释可以帮助安全人员更好地理解漏洞的原理和影响,从而制定更有效的安全策略。该研究有望推动软件安全领域的自动化和智能化发展。

📄 摘要(原文)

Large language models (LLMs) have shown promising performance in software vulnerability detection, yet their reasoning capabilities remain unreliable. We propose R2Vul, a method that combines reinforcement learning from AI feedback (RLAIF) and structured reasoning distillation to teach small code LLMs to detect vulnerabilities while generating security-aware explanations. Unlike prior chain-of-thought and instruction tuning approaches, R2Vul rewards well-founded over deceptively plausible vulnerability explanations through RLAIF, which results in more precise detection and high-quality reasoning generation. To support RLAIF, we construct the first multilingual preference dataset for vulnerability detection, comprising 18,000 high-quality samples in C#, JavaScript, Java, Python, and C. We evaluate R2Vul across five programming languages and against four static analysis tools, eight state-of-the-art LLM-based baselines, and various fine-tuning approaches. Our results demonstrate that a 1.5B R2Vul model exceeds the performance of its 32B teacher model and leading commercial LLMs such as Claude-4-Opus. Furthermore, we introduce a lightweight calibration step that reduces false positive rates under varying imbalanced data distributions. Finally, through qualitative analysis, we show that both LLM and human evaluators consistently rank R2Vul model's reasoning higher than other reasoning-based baselines.