致力打造国内好用的AI产品导航平台
谷歌DeepMind部署了一款新的人工智能代理,旨在自动发现并修复软件代码中的关键安全漏洞。这个名为CodeMender的系统在过去六个月里,已经为成熟的开源项目贡献了72个安全修复补丁。 识别和修复漏洞是出了名的困难且耗时的过程,即便借助诸如模糊测试等传统自动化方法也是如此。
谷歌DeepMind自身的研究,包括像Big Sleep和OSS-Fuzz这类基于人工智能的项目,已证明在经过严格审核的代码中发现新的零日漏洞方面行之有效。然而,这一成功却带来了新的瓶颈:随着人工智能加速漏洞的发现,人类开发者修复漏洞的负担也日益加重。 CodeMender旨在解决这种不平衡。它作为一个自主的人工智能代理,采用全面的方法来修复代码安全问题。
它既具备被动响应能力,能够立即修补新发现的漏洞,也具备主动预防能力,能够重写现有代码,在安全漏洞被利用之前消除整类安全隐患。这使得人类开发者和项目维护者能够将更多时间投入到构建功能特性和提升软件功能上。 该系统利用谷歌最新的Gemini Deep Think模型的先进推理能力运行。这一基础使得该代理能够高度自主地调试和解决复杂的安全问题。
为现这一点,系实统配备了一套工具,使其在进行任何更改之前能够对代码进行分析和推理。CodeMender还包括一个验证过程,以确保任何修改都是正确的,且不会引入被称为回归问题的新问题。 虽然大型语言模型发展迅速,但在代码安全方面出现错误可能会造成高昂的后果。因此,CodeMender的自动验证框架至关重要。它会系统地检查任何提议的更改是否解决了问题的根本原因、功能是否正确、是否不会破坏现有测试,以及是否符合项目的编码风格指南。只有满足这些严格标准的高质量补丁才会提交给人类进行审核。
为提高代码修复的有效性,DeepMind团队为该人工智能代理开发了新技术。CodeMender采用先进的程序分析方法,利用包括静态和动态分析、差异测试、模糊测试和SMT求解器在内的一系列工具。这些工具使它能够系统地仔细检查代码模式、控制流和数据流,以确定安全漏洞和架构弱点的根本原因。 该系统还采用多智能体架构,部署专门的智能体来处理问题的特定方面。
例如,一个基于大型语言模型的专用评估工具会揭示原始代码和修改后代码之间的差异。这使得主智能体能够验证其提议的更改不会引入意外的副作用,并在必要时自行调整方法。 在一个实际案例中,CodeMender处理了一个崩溃报告显示存在堆缓冲区溢出的漏洞。尽管最终的补丁只需要更改几行代码,但根本原因并非一目了然。通过使用调试器和代码搜索工具,该代理确定真正的问题是在解析过程中可扩展标记语言(XML)元素的堆栈管理不当,问题出在代码库的其他位置。
在另一个案例中,该代理为一个复杂的对象生命周期问题设计了一个不简单的补丁,修改了目标项目中用于生成C代码的自定义系统。 除了对现有漏洞做出反应外,CodeMender还旨在主动强化软件以抵御未来威胁。该团队部署该代理,为广泛使用的图像压缩库libwebp的部分代码添加-fbounds-safety注解。这些注解指示编译器为代码添加边界检查,从而可以防止攻击者利用缓冲区溢出来执行任意代码。
鉴于几年前libwebp中的一个堆缓冲区溢出漏洞(追踪编号为CVE-2023-4863)被威胁行为者用于零点击iOS攻击,这项工作显得尤为重要。DeepMind指出,有了这些注解,该特定漏洞以及注解部分的大多数其他缓冲区溢出漏洞都将无法被利用。 该人工智能代理的主动代码修复涉及一个复杂的决策过程。在应用注解时,它可以自动纠正因自身更改而产生的新编译错误和测试失败。如果其验证工具检测到修改破坏了功能,该代理会根据反馈自行纠正,并尝试不同的解决方案。 尽管早期取得了这些令人鼓舞的成果,但谷歌DeepMind在部署方面采取了谨慎且深思熟虑的方法,高度重视可靠性。
目前,CodeMender生成的每个补丁在提交给开源项目之前都要经过人类研究人员的审核。该团队正在逐步增加提交数量,以确保高质量,并系统地纳入来自开源社区的反馈。 展望未来,研究人员计划向关键开源项目的维护者提供CodeMender生成的补丁。通过反复迭代社区反馈,他们希望最终将CodeMender作为一个可供所有软件开发人员使用的公开工具发布。 DeepMind团队还计划在未来几个月发表技术论文和报告,分享他们的技术和研究成果。这项工作是探索人工智能代理主动修复代码、从根本上提升所有人软件安全性潜力的第一步。