来源笔记
ContraFix: Agentic Vulnerability Repair via Differential Runtime Evidence and Skill Reuse
Automated Vulnerability RepairCode IntelligenceLLM AgentsMulti Agent Software EngineeringRuntime Analysis
摘要
ContraFix 是一个用于自动化漏洞修复的多智能体系统,它使用成对的崩溃执行和安全执行来推断补丁必须满足的条件。它还会保存成功的修复规格和输入变异策略,供后续漏洞复用。
问题
- LLM 修复代理常常修补崩溃报告里显示的症状,而不是根因,因为一次失败执行只能说明程序在哪里出错,不能说明故障点附近哪个变量或状态转移导致了问题。
- 这在真实代码仓库里影响很大:修复方向选错后,代码可能能编译,却没有修好漏洞,或者把崩溃转移到别的位置。
- 现有代理通常会在每个案例后丢掉有用证据,所以相似漏洞必须重新做变异、探测和诊断。
方法
- Mutator 会生成接近原始输入的 PoC 变体,然后把它们分成会崩溃和不会崩溃两组。
- Analyzer 会在故障位置附近插入运行时探针,运行两组样本,并比较记录下来的状态值,找出哪些变量把不安全执行和安全执行区分开。
- Analyzer 会写出一份修复规格,包含源码位置和安全条件,例如在
argc到达边界时,先扩展 VM 栈,再访问regs[]。 - Patcher 会把这份规格转成源码修改,只有在补丁能编译,并且在原始 PoC 和崩溃变体上重新执行都通过时才接受。
- 一个双轨技能库会记录已验证的修复规格和成功的变异策略;检索时先找同仓库匹配,再找同漏洞类型匹配,最后根据净化器报告做嵌入相似度匹配。
结果
- 在 SEC-Bench 上,这个基准包含 200 个 C/C++ CVE 实例,使用 GPT-5-mini 的 ContraFix 解决了 84.0% 的任务。
- 在 PatchEval 上,排除 5 个 Docker 失败后,使用 225 个 Go、Python 和 JavaScript 实例,ContraFix 解决了 73.8% 的任务。
- 论文称,它在 SEC-Bench 和 PatchEval 上都取得了已报告的最佳结果,同时每个任务的成本不到最强可比基线的三分之一。
- 在使用相同 GPT-5-mini 主干的 SEC-Bench 上,ContraFix 比 AgentMem 高 34 个百分点。
- 消融实验显示,基于对比的运行时分析带来 27.0 个百分点提升,技能积累带来 9.0 个百分点提升。
- ContraFix 修复了 25 个 SEC-Bench 实例,这些实例没有任何现有对比方法能修复。