Sachin-Buluswar/reentbot
GitHub: Sachin-Buluswar/reentbot
一个由 LLM 智能体驱动的 Solidity 智能合约自动化审计框架,整合静态分析、模糊测试和形式化验证等多种技术来发现并验证漏洞。
Stars: 1 | Forks: 0
# ReentBot
自动化智能合约审计工具。它在 Docker 沙箱中运行 LLM 智能体循环,结合 Slither、Foundry、Echidna、Medusa 和 Halmos,以查找 Solidity 代码中的漏洞。
## 快速开始
```
export OPENROUTER_API_KEY=sk-or-...
uv sync
reentbot ./path/to/contracts
```
## 设置
```
# 使用 uv 安装
uv pip install -e .
# 或安装依赖
uv sync
```
### 环境要求
- Python 3.11+
- Docker(运行中)
- OpenRouter API 密钥
### 环境变量
```
export OPENROUTER_API_KEY=sk-or-... # Required
export ETH_RPC_URL=https://eth-mainnet... # Optional, enables on-chain queries
export REENTBOT_MODEL=anthropic/claude-sonnet-4-20250514 # Optional
```
## 使用方法
```
# 基本审计 — 启动交互式设置向导
reentbot ./path/to/contracts
# 带选项 (跳过向导中对已提供值的提示)
reentbot ./contracts --model anthropic/claude-sonnet-4-20250514 --max-time 1800 --capital 5000
# 设置 token 和 turn budgets
reentbot ./contracts --max-tokens 500000 --max-turns 50
# 设置 context window 以匹配你的模型 (例如,Claude Sonnet 4 为 200k)
reentbot ./contracts --context-window 200000
# 跳过交互式 chat
reentbot ./contracts --no-chat
# 自定义 output directory 和 Docker image 名称
reentbot ./contracts --output ./my-audit-results --image my-custom-tools
# 控制 tool output 详细程度
reentbot ./contracts --verbosity full # Complete untruncated output
reentbot ./contracts --verbosity partial # Truncated output (default)
reentbot ./contracts --verbosity off # Tool headers only, no result panels
```
如果任何配置值缺失(未通过 CLI 标志或环境变量提供),设置向导将在开始审计之前交互式地提示您。通过 CLI 标志或环境变量提供的值将跳过相应的提示。
### 详细级别
| 级别 | 行为 |
|-------|----------|
| `off` | 仅显示工具调用头信息(例如 `>> run_command: forge test`),不显示结果面板 |
| `partial` | 截断长结果(显示前/后 350 个字符)。默认值。 |
| `full` | 显示完整的工具输出,不截断 |
无论详细程度如何设置,发现(`submit_finding`)和审计报告始终会完整显示。
首次运行会构建包含所有审计工具的 Docker 镜像(需要几分钟)。后续运行将使用缓存的镜像。
## 输出
每次运行都会在 `./findings/` 下创建一个带有时间戳的目录(例如 `./findings/2025-06-15_14-30-00/`),其中包含:
- `report.md` — 包含攻击合约的完整漏洞报告
- `findings.json` — 机器可读的发现结果
智能体在审计期间编写的利用合约和测试文件将保留在源目录中。
## 预算默认值
| 参数 | 默认值 | 描述 |
|-----------|---------|-------------|
| `--max-tokens` | 2,000,000 | 审计循环的总 token 预算 |
| `--max-turns` | 200 | 最大智能体轮次 |
| `--max-time` | 3600s | 实际运行时间限制 |
| `--context-window` | 128,000 | 模型的上下文窗口大小;控制对话历史记录的保留 |
| 每次响应 | 16,384 | 审计和聊天阶段每次 LLM 响应的最大输出 token |
| 每次响应 | 65,536 | 报告生成阶段每次 LLM 响应的最大输出 token |
## 三个阶段
1. **审计** — 自主进行。智能体探索代码,运行工具,发现并验证漏洞。
2. **报告** — 自动生成。生成包含攻击合约的综合 Markdown 报告。
3. **聊天** — 交互式。提出后续问题,请求更深入的分析,或输入 `keep-auditing` 以恢复审计。
## 免责声明
本工具旨在用于授权的安全测试、教育用途和 CTF 竞赛。它不能替代专业的手动审计。用户有责任确保其拥有测试目标合约的授权。
## 许可证
MIT
标签:C2, Claude, CVE检测, DevSecOps, Docker沙箱, Echidna, Foundry, Halmos, Medusa, OpenRouter, Python, Slither, Solidity, Web3安全, 上游代理, 云安全监控, 以太坊, 区块链安全, 合约验证, 大型语言模型, 形式化验证, 无后门, 智能合约审计, 请求拦截, 逆向工具, 重入攻击检测, 静态分析