trailofbits/buttercup
GitHub: trailofbits/buttercup
由 Trail of Bits 为 DARPA AIxCC 开发的 AI 驱动漏洞发现与自动修补系统,实现从模糊测试到补丁生成的完整安全闭环。
Stars: 1510 | Forks: 166
# Buttercup 网络推理系统 (CRS)
[](https://github.com/trailofbits/buttercup/actions/workflows/tests.yml)
[](https://github.com/trailofbits/buttercup/actions/workflows/comp-integration.yml)
[](https://github.com/trailofbits/buttercup/actions/workflows/integration.yml)
**Buttercup** 是由 **Trail of Bits** 为 **DARPA AIxCC (AI Cyber Challenge)** 开发的网络推理系统 (CRS)。Buttercup 用于查找并修补开源代码仓库中的软件漏洞,例如 [example-libpng](https://github.com/tob-challenges/example-libpng)。它首先运行 AI/ML 辅助的 fuzzing 活动(基于 oss-fuzz)来测试程序。当发现漏洞时,Buttercup 会对其进行分析,并使用多智能体 AI 驱动的修补程序来修复漏洞。**Buttercup** 系统由以下几个组件组成:
- **Orchestrator**:协调整体任务流程并管理工作流
- **Seed Generator**:创建用于漏洞发现的输入
- **Fuzzer**:通过智能 fuzzing 技术发现漏洞
- **Program Model**:分析代码结构和语义以更好地理解程序
- **Patcher**:生成并应用安全补丁以修复漏洞
## 系统要求
### 最低要求
- **CPU:** 8 核
- **内存:** 16 GB RAM
- **存储:** 100 GB 可用磁盘空间
- **网络:** 稳定的互联网连接(用于下载依赖项)
**注意:** Buttercup 使用第三方 AI 提供商(来自 OpenAI、Anthropic 和 Google 等公司的 LLM),这需要费用。请确保通过使用内置的 LLM 预算设置来管理每次部署的成本。
**注意:** Buttercup 在同时拥有 OpenAI **和** Anthropic 模型访问权限时效果最佳,但也可以在至少拥有一个第三方提供商 API 密钥的情况下运行。您可以组合使用 OpenAI、Anthropic 和 Google 的 LLM。
### 支持的系统
- **Linux x86_64**(完全支持)
- **macOS**(通过 Docker Desktop 或 Colima 支持本地开发)
- **ARM64**(部分支持上游 Google OSS-Fuzz 项目)
### 所需系统软件包
在设置之前,请确保已安装以下软件包:
```
# Ubuntu/Debian
sudo apt-get update
sudo apt-get install -y make curl git
# RHEL/CentOS/Fedora
sudo yum install -y make curl git
# 或
sudo dnf install -y make curl git
# MacOS
brew install make curl git
```
### 支持的目标
Buttercup 适用于:
- **C 源代码仓库**(兼容 OSS-Fuzz)
- **Java 源代码仓库**(兼容 OSS-Fuzz)
- 能够成功构建且具有现有 fuzzing harness 的项目
## 快速开始
1. 使用子模块克隆仓库:
```
git clone --recurse-submodules https://github.com/trailofbits/buttercup.git
cd buttercup
```
1. 运行自动设置脚本(推荐)
```
make setup-local
```
此脚本将安装所有依赖项,配置环境,并引导您完成设置过程。
**注意:** 如果您更倾向于手动设置,请参阅 [手动设置指南](guides/MANUAL_SETUP.md)。
1. 在部署前确保 Docker 正在运行:
```
# Docker Desktop:启动应用程序
# Colima (macOS/Linux 替代方案):
colima start --cpu 6 --memory 10 --disk 80
```
1. 在本地启动 Buttercup
```
make deploy
```
1. 验证本地部署:
```
make status
```
部署成功后,您应该看到所有 Pod 处于 "Running" 或 "Completed" 状态。
1. 向 Buttercup 发送一个简单任务
**注意:** 接到任务后,Buttercup 将开始消耗第三方 AI 资源。
此命令将让 Buttercup 拉取一个带有已知漏洞的示例仓库 [example-libpng](https://github.com/tob-challenges/example-libpng)。Buttercup 将开始对其进行 fuzzing 以查找并修补漏洞。
```
make send-libpng-task
```
1. 访问 Buttercup 的 Web GUI
运行:
```
make web-ui
```
然后在 Web 浏览器中导航到 `http://localhost:31323`。
在 GUI 中,您可以监控活动任务,并查看 Buttercup 何时发现错误并为其生成补丁。
1. 停止 Buttercup
**注意:** 这是一个重要步骤,用于确保 Buttercup 关闭并停止消耗第三方 AI 资源。
```
make undeploy
```
## 访问日志
Buttercup 默认包含本地 SigNoz 部署,以提供全面的系统可观测性。您可以通过 SigNoz UI 访问日志、追踪和指标:
```
make signoz-ui
```
然后在 Web 浏览器中导航到 `http://localhost:33301` 以查看:
- 分布式追踪
- 应用程序指标
- 错误监控
- 性能洞察
如果您在设置期间配置了 LangFuse,您还可以在那里监控 LLM 使用情况和成本。
有关其他日志访问方法,请参阅 [快速参考指南](guides/QUICK_REFERENCE.md)。
## 其他资源
- [快速参考指南](guides/QUICK_REFERENCE.md) - 常用命令和故障排除
- [手动设置指南](guides/MANUAL_SETUP.md) - 详细的手动安装步骤
- [AKS 部署指南](guides/AKS_DEPLOYMENT.md) - 在 Azure 上进行生产部署
- [贡献指南](CONTRIBUTING.md) - 开发工作流程和标准
- [部署文档](deployment/README.md) - 高级部署配置
- [编写自定义挑战](guides/CUSTOM_CHALLENGES.md) - 自定义项目配置和设置
- [不计分轮次](guides/UNSCORED.md) - 运行不计分轮次挑战
- [计分轮次](guides/SCORED.md) - 解析最终轮次后的结果
标签:AIxCC, C2, DARPA, DLL 劫持, Fuzzing, LLM, PyRIT, Python, TLS抓取, Unmanaged PE, 云安全监控, 人工智能, 多智能体系统, 大语言模型, 子域名突变, 无后门, 漏洞修复, 用户模式Hook绕过, 网络安全, 网络安全培训, 网络推理系统, 自动修补, 请求拦截, 软件安全, 逆向工具, 防御性安全, 隐私保护, 静态分析