游乐游手机版
首页/AI教程/文章详情

CodeMender AI智能体自动修复代码漏洞

时间:2026-06-06 16:21
推出CodeMender人工智能智能体,利用先进AI自动修复软件漏洞,支持被动修补与主动重写代码。采用多智能体系统和高级程序分析,自动验证补丁质量以确保功能正确且不引发性能衰退。已向上游开源项目提交72个安全修复,未来将正式发布以保障软件安全。

推出CodeMender:一款专注于代码安全的AI智能体

借助前沿人工智能技术,自动修复关键软件漏洞

CodeMender:AI智能体自动修复代码漏洞

今天为大家介绍的是团队在AI代码安全领域的最新探索——CodeMender。该智能体通过先进的人工智能技术,自动增强代码安全性,目前仍处于早期研究阶段。

软件漏洞对于开发者而言无疑是巨大的挑战。即便采用模糊测试等传统自动化手段,漏洞的发现与修复仍然极其耗时且难以察觉。Big Sleep、OSS-Fuzz等基于AI的先行研究已经证明,即使经过充分测试的软件,AI同样能够挖掘出全新的零日漏洞。随着AI驱动的漏洞发现能力日益增强,单纯依靠人工已难以跟上其步伐。

CodeMender的核心理念是从代码安全的全局视角出发,采用更加全面的策略。它不仅能被动地即时修复新发现的漏洞,还能主动重写和保护现有代码,甚至从根源上消除整类漏洞。过去六个月中,团队已利用CodeMender向上游开源项目提交了72个安全补丁,其中部分项目的代码规模高达450万行。通过自动生成并应用高质量的安全修复,CodeMender的AI智能体帮助开发者和维护者解放双手,专注于他们最擅长的事情——构建出色的软件。

CodeMender实际应用

CodeMender的核心机制是借助最新的Gemini Deep Think模型的推理能力,构建一个能够自主调试和修复复杂漏洞的智能体。为此,它配备了一系列强大工具,能够在实际操作前先对代码进行推理分析,随后自动验证修改的正确性,确保不会引发性能退化。

以下动画直观展示了CodeMender修复漏洞的具体过程。

尽管大型语言模型在飞速发展,但代码安全的代价极高,不容任何失误。CodeMender的自动验证流程如同一道安全防火墙——仅将高质量补丁提交人工审核,从多个维度确保代码修改的正确性:根因修复到位、功能正确、不引入性能退化、符合代码风格规范。这些验证环节缺一不可。

作为研究工作的组成部分,团队还开发了一系列新技术与工具,使CodeMender能够更高效地推理代码并验证修改,主要包括:

高级程序分析:借助静态分析、动态分析、差异测试、模糊测试以及SMT求解器等工具,系统性地审查代码模式、控制流与数据流,帮助CodeMender快速定位安全缺陷与架构弱点的根本原因。

多智能体系统:我们开发了多个专用智能体,分别处理底层问题的不同维度。例如,其中一款基于大语言模型的评审工具,能够高亮原始代码与修改后代码之间的差异,专门用于验证修改是否引入性能衰退,一旦发现问题可自动修正。

漏洞修复实战

为了高效修复漏洞并防止复发,CodeMender会调用调试器、源代码浏览器及其他工具,精确定位根本原因,随后设计补丁方案。下面两个视频轮播中的示例,展示了其实际工作流程。

示例一:精准定位漏洞根本原因

该片段展示了智能体在分析调试器输出与代码搜索结果后,对根本原因进行推理的过程。最终补丁仅修改了几行代码,但问题的根源并不容易察觉——崩溃报告指示为堆缓冲区溢出,而实际症结却在于解析XML元素时栈管理出现异常。

示例二:智能体生成非平凡补丁

这个案例更具挑战性:CodeMender智能体提出了一套处理复杂对象生命周期问题的非平凡补丁方案。它不仅找出了漏洞的根本原因,还直接修改了项目中用于生成C代码的自定义系统。

主动重构现有代码,提升安全性

CodeMender的另一核心能力是主动重写现有代码,采用更安全的数据结构与API。具体来说,团队部署CodeMender,将-fbounds-safety注解应用于广泛使用的图像压缩库libwebp的部分代码。这些注解会指示编译器加入边界检查,从而防止攻击者利用缓冲区溢出或下溢执行恶意代码。

数年前,libwebp中的一个堆缓冲区溢出漏洞曾被恶意攻击者用作零点击iOS漏洞利用链的一部分。然而,在引入-fbounds-safety注解后,该漏洞以及项目中应用了注解的大部分缓冲区溢出漏洞,便再无被利用的可能。下方视频轮播展示了智能体的决策流程,包含验证环节。

示例一:智能体推理步骤

在此示例中,CodeMender智能体被要求解决bit_depths指针上的-fbounds-safety错误:

示例二:智能体自动纠正错误与测试失败

CodeMender的另一亮点在于能够自动纠正由其自身注解引发的新错误与测试失败。以下是一个智能体从编译错误中自行恢复的示例。

示例三:智能体验证修改

在该示例中,CodeMender智能体修改了一个函数,随后使用配置为功能等价性检验的LLM评估工具验证功能是否保持一致。一旦发现失败,智能体会根据LLM评估者的反馈进行自我修正。

为所有人守护软件安全

尽管CodeMender的早期成果令人振奋,但团队始终保持审慎,将可靠性置于首位。目前,其生成的所有补丁在提交至上游之前,均需经过人类研究人员的仔细审查。

借助CodeMender,我们已开始向多个关键开源库提交补丁,其中许多已被接受并合并到上游。这一推进过程是渐进的——在确保质量的同时,系统性地处理开源社区的反馈意见。

下一步,团队将逐步向感兴趣的关键开源项目维护者提供CodeMender生成的补丁。通过在这一过程中的反复学习与反馈,最终将CodeMender作为一款正式工具发布,供所有软件开发人员保护其代码库。

还有许多技术成果值得分享,团队计划在未来数月内以技术论文和报告的形式公开发表。通过CodeMender,我们才刚刚开始发掘AI在增强软件安全性方面的巨大潜力——目标是让所有人受益。

致谢

贡献者:FINISHED

来源:https://cloud.tencent.com.cn/developer/article/2682928
上一篇AI编程助手自动化月度财务数据从Excel到在线表格的实践 下一篇宽表与语义层:语义编织对人工智能数据分析的重要性
本站内容用于信息整理与展示,如有侵权或内容问题请及时联系处理。

相关推荐

补充同频道和同主题内容,方便继续浏览更多相关内容。

同类最新

继续查看同栏目最近更新的文章。

更多
Synthesia零基础教程:客户端安装与工作区权限设置
AI教程 · 2026-06-07

Synthesia零基础教程:客户端安装与工作区权限设置

本文介绍了AI视频生成工具Synthesia的入门流程。内容涵盖从官网下载客户端、完成账户注册与登录,到软件安装与启动的完整步骤。详细说明了如何初始化工作区,包括创建首个AI视频项目、选择模板与AI主播。最后,指导用户理解并设置团队协作中的不同权限角色,以便安全高效地共同管理项目。

FramePack新手入门指南:安装启动报错修复导出全流程
AI教程 · 2026-06-07

FramePack新手入门指南:安装启动报错修复导出全流程

本文详细介绍了FramePack工具从下载安装到项目导出的完整流程。内容涵盖软件安装步骤、首次启动设置、常见报错解决方案以及项目打包导出方法。指南旨在帮助用户快速掌握工具核心操作,解决使用过程中可能遇到的技术问题,确保顺利完成AI视频帧处理任务。

FLUX.1保姆级教程:环境安装、显存优化与首次出图测试
AI教程 · 2026-06-07

FLUX.1保姆级教程:环境安装、显存优化与首次出图测试

本文详细介绍了FLUX 1的安装与初步使用流程。内容涵盖从Python环境配置、代码仓库克隆、依赖包安装,到关键的显存优化设置,最后指导用户完成首次文生图测试。教程旨在帮助用户顺利搭建运行环境,解决常见安装问题,并实现基础图像生成功能。

AnythingLLM新手实战:本地大模型部署后知识库接入设置
AI教程 · 2026-06-07

AnythingLLM新手实战:本地大模型部署后知识库接入设置

本文介绍了在本地部署大模型后,如何为AnythingLLM设置知识库。内容涵盖知识库的基本概念、创建与配置步骤、文档上传与处理技巧,以及如何通过问答测试其效果。旨在帮助用户有效整合本地文档资源,构建个性化的AI知识助手,提升信息检索与利用效率。

Aider安装失败排查:扩展冲突与登录异常全解析
AI教程 · 2026-06-07

Aider安装失败排查:扩展冲突与登录异常全解析

本文针对Aider安装过程中常见的扩展冲突与登录异常问题,提供了系统的排查思路与解决方案。内容涵盖如何识别并处理与其他AI工具的兼容性问题,解决因网络或账户设置导致的登录失败,以及通过环境检查、依赖更新等步骤彻底排除安装障碍,帮助用户顺利完成安装与配置。