Google DeepMind CodeMender AI 代码安全代理

Google DeepMind 已推出 CodeMender,这是一款 AI 驱动的代理,旨在自动发现并修复软件漏洞。CodeMender 解决了 AI 驱动的漏洞发现速度与人工修补能力之间日益扩大的差距,既提供针对新漏洞的被动修补,也主动重写现有代码,以消除整类安全风险。

自动化漏洞修补

CodeMender 利用 Gemini Deep Think 模型的推理能力,作为能够调试并修复复杂安全漏洞的自主代理。为确保补丁的可靠性,代理采用了严格的验证流程,仅将高质量的补丁呈现给人工审查——这些补丁必须解决根本原因、保持功能正确性、避免回归并遵循代码风格指南。

技术工具与分析

  • 高级程序分析: 代理使用静态分析、动态分析、差分测试、模糊测试和 SMT 求解器来识别架构弱点和安全缺陷的根本原因。
  • 多代理系统: CodeMender 为不同任务部署专用代理。其中包括基于 LLM 的评审工具,用于比较原始代码和修改后代码,以验证更改不会引入回归,并使代理能够自我纠正。

根本原因分析与复杂修补

CodeMender 能够识别崩溃报告中未直接显现的根本原因。例如,在某个案例中,崩溃报告显示堆缓冲区溢出,而 CodeMender 将实际根本原因定位为解析期间 XML 元素的堆栈管理错误。该代理还能够生成非平凡的修补程序,包括修改项目中用于生成 C 代码的自定义系统。

主动代码安全与重写

除了被动修补之外,CodeMender 还主动重写现有代码,以实现更安全的数据结构和 API。

边界安全实现

CodeMender 被用于在 libwebp 图像压缩库中添加 -fbounds-safety 注解。这些注解使编译器能够加入边界检查,从而防止攻击者利用缓冲区溢出或下溢执行任意代码。

DeepMind 指出,若当时已加入这些注解,libwebp(CVE-2023-4863)先前的堆缓冲区溢出——该漏洞曾被用于零点击 iOS 攻击——将无法被利用。

迭代自我纠正

在主动重写过程中,CodeMender 能够自动修正因自身注解导致的编译错误和测试失败。它使用配置为功能等价性的 LLM 判决工具来验证功能是否保持完整;若检测到失败,代理会根据反馈自行纠正。

部署与开源影响

CodeMender 已向开源项目上游提交了 72 项安全修复,其中一些项目的代码量高达 450 万行。

为确保安全性和可靠性,Google DeepMind 正在采用审慎的部署策略:

  • 人机协同: 目前,CodeMender 生成的所有补丁都会在提交上游前由人工研究员审查。
  • 社区参与: 实验室正逐步增加提交量,并主动联系关键开源项目的维护者,以根据社区反馈进行迭代。
  • 未来可用性: 长期目标是将 CodeMender 作为面向所有软件开发者的工具发布,以帮助他们保护代码库。

Sources