
Google DeepMind推出AI代理CodeMender,可自动修复代码安全漏洞
Google DeepMind公开其研究中的人工智能代理CodeMender,可自动找出并修补软件漏洞,并能重写现有代码以移除风险。官方表示,过去6个月已对多个开源项目提交72项安全补丁,涵盖规模可达450万行代码。
研究团队指出,传统自动化手段如模糊测试(Fuzzing)虽有一定帮助,但在大型代码库中仍耗时费力。DeepMind此前通过Big Sleep与OSS-Fuzz展示了人工智能发现零日漏洞的潜力,但随着人工智能发现漏洞的速度越来越快,人工修补与审核已难以跟上节奏。
因此,DeepMind开发了CodeMender,使其不仅具备及时生成并应用漏洞补丁的能力,还能主动重写存在风险的接口与数据结构,尽可能从源头消除常见缺陷类别。
CodeMender由Gemini Deep Think模型驱动,会先对程序行为与语义进行推理,再决定修改策略。系统在提出补丁前会经过自动验证,仅将符合条件的高质量补丁交由人工审核。自动验证重点关注补丁是否真正解决了问题根源、是否保持程序功能的正确性、是否避免出现回归(Regression)问题,并确保遵循原始项目的代码风格规范。
CodeMender整合了一组程序分析工具,包括静态分析、动态分析、差异测试、模糊测试与SMT求解器,同时辅以可查看程序行为的调试器与代码浏览工具。系统采用多代理架构,其中包含基于大语言模型构建的分析工具,能够逐文件比对原始与修改后的差异,识别潜在的回归点并触发自我修正。
官方举例说明CodeMender处理一则程序崩溃报告的过程:虽然表面现象是堆栈缓冲区溢出,但根本原因在于XML元素解析过程中的堆栈管理不当。CodeMender最终仅修改少量代码,便精准解决了根本问题。此外,该代理也能处理较复杂的对象生命周期问题,甚至修改项目内部自定义的C语言代码生成系统,提出可验证的修复方案。
DeepMind研究团队还展示了CodeMender的主动修复能力:代理会优先对存在风险的路径进行重写,改用更安全的数据结构和API。对于仍需重点保护的部分,开发者可使用类似-fbounds-safety的注记,使编译器在标注并通过重新编译的代码路径中自动插入边界检查,最大程度降低堆栈缓冲区溢出的可利用性。
目前CodeMender仍处于研究阶段,现阶段优先与重要开源项目维护者沟通,并逐步扩大补丁提交量,持续收集社区反馈以优化流程与工具。DeepMind表示,将在数月内发布相关技术论文与报告,后续也将在质量和流程稳定后向开发者开放使用。