AI协同编程场景:一侧为机器人手臂,一侧为人类手臂


图片来源Gorodenkoff

Google DeepMind近日推出一款名为CodeMender的AI工具该工具能自动发现并修复开源项目中的软件漏洞。在过去六个月里,它已向多个代码库提交了72个安全补丁,其中部分代码库规模高达450万行。

据Google DeepMind高级研究科学家Raluca Ada Popa与安全隐私副总裁Fionn Flynn在博客中介绍,CodeMender基于Gemini Deep Think模型构建,能够自主调试和修复复杂的安全缺陷。"即便使用模糊测试等传统自动化方法,开发者识别和修复软件漏洞仍耗时费力,"他们写道,"随着AI漏洞发现技术不断突破仅靠人力将越来越难应对。"

技术实现原理

CodeMender通过Gemini Deep Think模型的推理能力构建自主Agent,该Agent配备特殊工具组,可在修改代码前进行逻辑推演并自动验证修改结果以确保正确性且不会引发功能回退。

研发团队表示,他们开发了新型技术工具组合,使CodeMender能更高效地进行代码推理与变更验证这些工具包括:

  • 基于静态分析的先进程序分析工具
  • 动态分析系统
  • 差分测试框架
  • 模糊测试工具
  • SMT求解器

这些工具可系统化审查代码模式、控制流和数据流,准确定位安全缺陷的根本原因。CodeMender还采用多Agent系统架构,不同功能Agent分别处理底层问题的特定方面。例如其基于大语言模型的代码审查工具会对比原始代码与修改版本,确保变更不会引入新问题。

研究人员强调:"虽然大语言模型进步迅速但代码安全失误代价高昂。"CodeMender的自动验证流程会从多维度确保补丁质量,仅将符合以下标准的优质补丁提交人工审核:

  • 彻底修复根本原因
  • 功能正确无误
  • 不会导致功能退化
  • 符合代码风格规范

双重防护策略

该工具采用反应式与主动式双重安全策略

  • 反应式防护即时修补新发现漏洞
  • 主动式防护重写现有代码消除整类漏洞

典型案例中,团队使用CodeMender为libwebp图像压缩库添加-fbounds-safety注解。这种编译器级边界检查可有效阻止攻击者利用缓冲区溢出/下溢漏洞执行任意代码博客特别提及libwebp的堆溢出漏洞(CVE-2023-4863),该漏洞曾被用于iOS零点击攻击。若提前部署-fbounds-safety防护,此漏洞将无法被利用。

人工审核机制

尽管初期成果显著,DeepMind仍采取审慎态度,目前所有CodeMender生成的补丁都需经过研究人员人工审核才能提交团队已开始向多个关键开源库提交补丁,其中多数已被采纳。公司表示正逐步扩大应用范围,同时系统收集开源社区反馈。

DeepMind计划逐步联系重点开源项目的维护者,提供CodeMender生成的补丁。未来数月内,团队将发布技术论文详细说明实现方法并最终将该工具开放给全体开发者使用。

Logo

有“AI”的1024 = 2048,欢迎大家加入2048 AI社区

更多推荐