论文
CodeMechanic:错误属性引导的程序缓解
CodeMechanic: Bug-Property-Guided Program Mitigation
摘要
自动化测试发现漏洞的速度比开发人员调查和修复漏洞的速度要快,从而留下了已知内存损坏仍然可利用的时间间隔。端到端 LLM 修复代理可以缩短此间隔,但它们会综合开放式代码更改,并且通常仅通过重播概念验证 (PoC) 来验证它们。这个弱预言机接受补丁,通过改变不相关的行为来消除观察到的崩溃,从而使意外部署存在风险。我们提出了 CodeMechanic,这是一个错误属性引导的系统,用于生成空间内存损坏的约束缓解措施。 CodeMechanic 不会要求 LLM 生成永久修复,而是从崩溃中重建违反的内存安全属性,验证取消引用的指针及其缓冲区范围,并在危险访问之前插入本地故障停止防护。当边界检查失败时,守卫终止执行。由此产生的缓解措施故意以可用性换取安全性:它可以将潜在的远程代码执行转换为受控终止,同时开发人员调查根本原因并准备永久修复。 CodeMechanic 将二维静态和动态上下文提取器与即时调试知识和逐步验证相结合,以限制 LLM 错误的影响。在 101 个现实世界的 ARVO 错误中,CodeMechanic 的第一次尝试比最佳基线多产生了 47.6% 的合理补丁(即通过 PoC 重播验证的补丁),同时使用的词元少了 91%。手动审核进一步表明,CodeMechanic 生成的补丁在语义上相当于开发人员编写的修复的 3.4 倍 - 4.3 倍。