来源笔记

VulKey: Automated Vulnerability Repair Guided by Domain-Specific Repair Patterns

Automated Vulnerability RepairCode IntelligenceLLM Code GenerationSoftware SecurityProgram Repair

概要

VulKey 是一个基于 LLM 的自动漏洞修复系统,它用筛选后的修复模式引导补丁生成,而不是直接使用原始 CWE 标签或完整示例补丁。文中报告它在 PrimeVul 上的修复准确率为 31.5%,比摘要中的最佳基线高 7.6 个百分点。

  • 自动漏洞修复很重要,因为公开漏洞数量很高:NVD 在 2024 年列出 40,009 个已披露漏洞,较去年增加 38.83%。
  • 现有的 LLM 修复方法对 CWE 知识的使用很弱。加入 CWE 前缀后,StarCoderBase-15B 的 Exact Match 从 23.9 降到 23.6,Qwen2.5-Coder-32B 从 23.2 降到 22.5。
  • 完整的 few-shot 修复示例会带来项目特定噪声。在 435 个 PrimeVul 实例上,随机示例把 EM 降到 11.9 和 12.9,而 BM25 检索得到 17.9 和 16.8,仍低于基础微调。
  • VulKey 用三个字段表示每个修复模式:CWE 类型、语法动作和语义关键元素。
  • 语法动作描述编辑形状,例如插入范围检查或方法调用。语义关键元素描述安全相关的代码线索,例如 mutex_lockget_net 或边界条件。
  • 这些模式从覆盖 3,789 个真实漏洞的历史漏洞修复 diff 中抽取。
  • 一个基于 CodeT5p 的匹配器接收有漏洞的代码和 CWE 上下文,然后预测 top-k 的动作和关键元素模式。
  • 一个经过微调的代码生成模型接收有漏洞的函数和选中的模式,然后生成修复后的代码。
  • 在 C/C++ 的 PrimeVul 上,VulKey 报告的修复准确率为 31.5%。
  • 31.5% 这一分数比最佳基线高 7.6 个百分点;该基线是一个在 bug-fix 和 vulnerability-fix 数据上微调过的 StarCoder 模型。
  • 论文称,VulKey 在 PrimeVul 上比 VulRepair 高 8.5 倍,比 VulMaster 高 3.6 倍,比 GPT-5 高 3 倍。
  • 在 Java 基准 Vul4J 上,VulKey 修复了 18 个案例;VulMaster 为 9 个,VulRepair 为 4 个。
  • 论文的初步研究显示,具体示例会拖累性能:StarCoderBase-15B 的 EM 在随机示例下从 23.9 降到 11.9,在 BM25 检索下降到 17.9。