CodeMender 介绍:用于代码安全的 AI 代理

Google DeepMind Blog 产品

摘要

Google DeepMind 推出 CodeMender,一个 AI 代理,可以使用先进的推理和验证技术自动检测和修复代码安全漏洞。该系统在六个月内已向开源项目上游贡献了 72 个安全修复。

利用先进的 AI 技术修复关键软件漏洞
查看原文
查看缓存全文

缓存时间: 2026/04/20 08:35

# 介绍 CodeMender:代码安全 AI 智能体 来源:https://deepmind.google/blog/introducing-codemender-an-ai-agent-for-code-security/ 2025 年 10 月 6 日 | 责任与安全 利用先进 AI 技术自动修复关键软件漏洞 今天,我们分享了关于 CodeMender 的早期研究成果。CodeMender 是一个全新的 AI 驱动智能体,能够自动改进代码安全性。 即使使用模糊测试(fuzzing)等传统自动化方法,软件漏洞的发现和修复对开发者来说仍然困难重重且耗时费力。我们的 AI 相关工作,如 [Big Sleep](https://googleprojectzero.blogspot.com/2024/10/from-naptime-to-big-sleep.html?utm_source=&utm_medium=&utm_campaign=&utm_content=) 和 [OSS-Fuzz](https://security.googleblog.com/2023/08/ai-powered-fuzzing-breaking-bug-hunting.html?utm_source=&utm_medium=&utm_campaign=&utm_content=),已经展示了 AI 在发现经过充分测试的软件中全新零日漏洞的能力。随着 AI 驱动的漏洞发现能力不断突破,仅靠人力将变得越来越困难。 CodeMender 通过采取全面的代码安全方法来解决这一问题,既能快速应对(立即修补新漏洞),又能主动出击(重写和加固现有代码,消除整类漏洞)。在过去六个月的 CodeMender 开发中,我们已经向开源项目提交了 72 个安全修复,其中一些项目代码量高达 450 万行。 通过自动创建和应用高质量的安全补丁,CodeMender 的 AI 驱动智能体帮助开发者和维护者专注于他们最擅长的事情——构建优秀的软件。 ## CodeMender 实际应用 CodeMender 通过利用最新 [Gemini Deep Think](https://blog.google/products/gemini/gemini-2-5-deep-think/?utm_source=&utm_medium=&utm_campaign=&utm_content=) 模型的推理能力,打造了一个能够自主调试和修复复杂漏洞的智能体。 为此,CodeMender 智能体配备了强大的工具,使其能够在修改代码之前进行推理,并自动验证这些修改是否正确且不会导致回归问题。 展示 CodeMender 修复漏洞流程的动画。 尽管大型语言模型在快速进步,但代码安全方面的错误可能代价高昂。CodeMender 的自动验证流程通过仅向人工审查呈现高质量补丁,来确保代码修改在多个方面都是正确的,例如修复问题的根本原因、功能正确、不产生回归且遵循代码风格指南。 作为研究的一部分,我们还开发了新的技术和工具,让 CodeMender 能更有效地推理代码和验证修改。这些包括: - **高级程序分析:** 我们开发了基于高级程序分析的工具,包括静态分析、动态分析、差分测试、模糊测试和 SMT 求解器。使用这些工具系统地审视代码模式、控制流和数据流,CodeMender 能够更好地识别安全缺陷和架构弱点的根本原因。 - **多智能体系统:** 我们开发了专用智能体,使 CodeMender 能够处理潜在问题的特定方面。例如,CodeMender 使用基于大型语言模型的批评工具,突出原始代码和修改后代码之间的差异,以验证所建议的更改不会引入回归,并在需要时进行自我纠正。 ## 修复漏洞 为了有效地修补漏洞并防止其重新出现,CodeMender 使用调试器、源代码浏览器和其他工具来精确定位根本原因并设计补丁。我们在下面的视频轮播中添加了两个 CodeMender 修补漏洞的示例。 **示例 #1:识别漏洞的根本原因** 以下是智能体在分析调试器输出和代码搜索工具的结果后,对 CodeMender 生成的补丁根本原因的推理片段。 尽管此示例中的最终补丁仅改动了几行代码,但漏洞的根本原因并不立即显而易见。在这种情况下,崩溃报告显示了堆缓冲区溢出,但实际问题在别处——XML(可扩展标记语言)元素在解析过程中的堆栈管理不正确。 **示例 #2:智能体能够创建复杂的补丁** 在此示例中,CodeMender 智能体能够想出一个处理复杂对象生命周期问题的非平凡补丁。 智能体不仅能够找出漏洞的根本原因,还能够修改项目中完全自定义的 C 代码生成系统。 ## 主动重写现有代码以提高安全性 我们还设计了 CodeMender 来主动重写现有代码,使用更安全的数据结构和 API。 例如,我们部署了 CodeMender 以对广泛使用的图像压缩库 [libwebp](https://github.com/webmproject/libwebp) 的部分代码应用 [-fbounds-safety](https://clang.llvm.org/docs/BoundsSafety.html) 注解。当应用 **-fbounds-safety** 注解时,编译器会向代码添加边界检查,以防止攻击者利用缓冲区溢出或下溢来执行任意代码。 几年前,libwebp 中的堆缓冲区溢出漏洞([CVE-2023-4863](https://www.cve.org/CVERecord?id=CVE-2023-4863))被威胁行为者用作 [iOS 零点击漏洞利用](https://citizenlab.ca/2023/09/blastpass-nso-group-iphone-zero-click-zero-day-exploit-captured-in-the-wild/) 的一部分。有了 **-fbounds-safety** 注解,这个漏洞以及我们应用注解的项目中大多数其他缓冲区溢出,都将永远无法被利用。 在下面的视频轮播中,我们展示了智能体决策过程的示例,包括验证步骤。 **示例 #1:智能体的推理步骤** 在此示例中,CodeMender 智能体被要求解决 **bit_depths** 指针上的以下 **-fbounds-safety** 错误: **示例 #2:智能体自动纠正错误和测试失败** CodeMender 的另一个关键特性是它能够自动纠正自身注解引起的新错误和任何测试失败。以下是智能体从编译错误中恢复的示例。 **示例 #3:智能体验证修改** 在此示例中,CodeMender 智能体修改了一个函数,然后使用配置为功能等价的 LLM 判官工具来验证功能保持不变。当工具检测到失败时,智能体根据 LLM 判官的反馈进行自我纠正。 ## 为所有人提高软件安全性 尽管我们使用 CodeMender 的早期结果令人鼓舞,但我们采取谨慎的方法,专注于可靠性。目前,CodeMender 生成的所有补丁在提交到上游之前都会经过人工研究人员的审查。 使用 CodeMender,我们已经开始向各种关键开源库提交补丁,其中许多已被接受并上游。我们正在逐步推进这一过程,以确保质量并系统地处理开源社区的反馈。 我们还将逐步与感兴趣的关键开源项目维护者联系,提供 CodeMender 生成的补丁。通过迭代此过程中的反馈,我们希望发布 CodeMender 作为一个工具,供所有软件开发者使用,以保持其代码库的安全。 我们将有许多技术和结果分享,计划在未来几个月内作为技术论文和报告发表。通过 CodeMender,我们才刚刚开始探索 AI 在为所有人增强软件安全方面的巨大潜力。 **致谢** 致谢名单(按字母顺序排列): Alex Rebert、Arman Hasanzadeh、Carlo Lemos、Charles Sutton、Dongge Liu、Gogul Balakrishnan、Hiep Chu、James Zern、Koushik Sen、Lihao Liang、Max Shavrick、Oliver Chang 和 Petros Maniatis。

相似文章

Google欲与Anthropic的Mythos竞争

The Verge

谷歌正扩展其用于代码安全的CodeMender AI代理,以与Anthropic的Mythos竞争,瞄准政府和企业,因为AI实验室将网络安全视为关键收入驱动力。

Codex Security:现处于研究预览阶段

OpenAI Blog

OpenAI 推出 Codex Security,这是一款现处于研究预览阶段的自主应用程序安全工具。它能高置信度识别复杂漏洞并提供可操作的修复方案,同时与传统的安全工具相比,显著减少误报和噪音。