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