Buttercup现已开源!
我们激动地宣布,Trail of Bits在DARPA的人工智能网络挑战赛(AIxCC)中获得第二名!随着比赛结束,我们现在终于可以将我们的网络推理系统Buttercup开源。我们很高兴能让Buttercup广泛可用,并期待安全社区如何使用、扩展并从中受益。
为了让尽可能多的人能够使用Buttercup,我们创建了一个可在普通笔记本电脑上运行的独立版本。我们还调整了这个版本,使其适用于单个项目的AI预算,而不是大规模竞赛。除了发布Buttercup的独立版本外,我们还开源了参加AIxCC半决赛和决赛的版本。
在本文的其余部分,我们将提供Buttercup工作原理的高级概述,如何开始使用它,以及它未来的发展计划。如果您想直接查看代码,请在GitHub上查看。
Buttercup工作原理
Buttercup是一个完全自动化的AI驱动系统,用于发现和修复开源软件中的漏洞。Buttercup有四个主要组件:
-
协调/UI:协调Buttercup其他组件的整体操作,并显示系统发现的漏洞和生成的补丁信息。除了典型的Web界面外,Buttercup还将其日志和系统事件报告给SigNoz遥测服务器,使用户能够轻松查看Buttercup正在执行的操作。
-
漏洞发现:使用AI增强的变异模糊测试来找到在程序中展示漏洞的程序输入。Buttercup的漏洞发现引擎基于OSS-Fuzz/Clusterfuzz,并使用libFuzzer和Jazzer来查找漏洞。
-
上下文分析:使用传统的静态分析工具创建可查询的程序模型,这些模型用于为漏洞发现和修补中使用的AI模型提供上下文。Buttercup使用tree-sitter和CodeQuery构建程序模型。
-
补丁生成:一个多代理系统,用于为Buttercup发现的漏洞创建和验证软件补丁。Buttercup的补丁生成系统使用七个不同的AI代理来创建稳健的补丁,修复其发现的漏洞并避免破坏程序的其他功能。
以下流程图描述了这些组件如何帮助Buttercup发现和修补漏洞:
图1:Buttercup漏洞发现和修补流程的概念概述
当Buttercup启动时,它会等待用户以OSS-Fuzz兼容的源代码仓库形式分配任务。一旦分配任务,Buttercup会检索代码仓库,启用各种清理程序构建程序,并在基于AI的输入生成器的帮助下开始对程序进行模糊测试。当输入触发程序中的清理程序、超时或崩溃时,这些输入会被记录为漏洞证明(PoV)。
接下来,Buttercup的协调器对PoV进行去重,并将唯一的崩溃发送到补丁生成系统进行修补。补丁生成系统使用来自上下文分析系统的信息,迭代创建、测试和改进补丁,直到生成一个能够1)防止PoV及其重复项触发漏洞,2)保持程序其他功能的补丁。最后,Buttercup的协调器保留PoV和补丁,以便向用户报告。
开始使用
我们让个人用户能够轻松在普通笔记本电脑上启动和运行Buttercup。Buttercup在x86-64 Linux系统上运行最佳,但也部分支持像macOS设备这样的ARM64系统。您需要至少8个CPU核心、16 GB RAM、100 GB可用磁盘空间和活跃的网络连接来运行Buttercup。您还需要为至少一个第三方LLM提供商(如OpenAI或Anthropic)提供API密钥。不用担心:我们设置了成本限制,这样Buttercup就不会产生意外的大额账单。
您只需要克隆Buttercup的代码仓库,确保安装了一些常见的系统包,并在终端中运行几个简单的命令:
- 设置:指导用户在系统上安装Buttercup并使用AI API密钥进行配置。
- 部署:创建一个完全本地化的集群,所有Buttercup组件都在pod中运行。以下是Buttercup启动并准备处理新任务时的样子:
图2:Buttercup准备查找和修补漏洞
- 发送任务:向Buttercup发送一个故意插入漏洞的示例代码仓库,以展示Buttercup的能力。Buttercup在不到10分钟的时间内就能找到并修补漏洞。
- 打开UI:启动Buttercup基于浏览器的UI,查看Buttercup发现的PoV和补丁。以下是Buttercup Web UI在发现和修补漏洞时的样子:
图3:Buttercup Web UI在发现和修补漏洞后 图4:Buttercup Web UI中PoV的详细视图 图5:Buttercup Web UI中PoV的详细视图
这些只是基础知识。查看Buttercup的文档以获取更多信息,包括如何在您自己的软件目标上运行Buttercup!
Buttercup的未来发展
在AIxCC期间,我们想要构建到Buttercup中的许多改进和功能由于比赛限制而被搁置。现在比赛结束了,我们可以自由地升级和维护Buttercup的独立版本,使其尽可能强大。如果您有兴趣为Buttercup的成功做出贡献,我们欢迎您加入我们!
请继续关注Buttercup在AIxCC之后生活的更多更新!
如果您对我们提交给AIxCC半决赛(ASC)和决赛(AFC)比赛的Buttercup版本感兴趣,您可以在下面的链接中找到它们。请注意,这些版本设计用于与DARPA的比赛基础设施交互,该基础设施现已关闭。我们没有积极维护这些版本的Buttercup。
- Buttercup 1.0(ASC提交)
- Buttercup 2.0(AFC提交)