图片来源: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生成的补丁。未来数月内,团队将发布技术论文详细说明实现方法,并最终将该工具开放给全体开发者使用。
参考来源:
Google DeepMind launches an AI agent to fix code vulnerabilities automatically
本文为 独立观点,未经授权禁止转载。
如需授权、对文章有疑问或需删除稿件,请联系 FreeBuf
客服小蜜蜂(微信:freebee1024)