GoPlusSecurity/ai-auditing-benchmark
GitHub: GoPlusSecurity/ai-auditing-benchmark
基于真实链上攻击事件整理的智能合约漏洞数据集,用于评估和训练 AI 智能合约审计能力。
Stars: 12 | Forks: 3
# ai-auditing-benchmark
一个用于**AI 智能合约审计**的基准测试数据集。它从由智能合约漏洞引发的真实历史攻击事件中整理并提取了**存在漏洞的合约源代码**,旨在用于评估和训练审计能力(例如,与 `ai-auditing-engine` 等工具结合使用)。
## 数据来源与目标
- **来源**:公开的链上/安全事件报告以及代码仓库快照,对应于在每个事件中被攻击或被发现存在缺陷的合约。
- **目标**:
- 提供可复现且可比较的**真实漏洞样本**。
- 支持在两种粒度下评估 AI 审计性能:**完整上下文**和**缩小后的攻击面**。
## 目录结构
数据位于 `dataset/` 目录下,并按事件进行组织。每个事件目录的命名遵循以下格式:`{IncidentDateYYYYMMDD}_{ProjectOrProtocolSlug}`(日期在前,以便于排序和搜索)。
```
dataset/
├── benchmark_complete/ # Full code of the exploited contracts (incl. deps/libs), as close as possible to an auditable/compilable snapshot
└── benchmark_simplified/ # Only vulnerability-related functions + minimal required deps; obviously irrelevant logic removed
```
### `benchmark_complete`
- 包含被攻击合约的**完整源代码树**(包括接口、库、第三方依赖等),适用于:
- 跨合约和跨模块的交互分析
- 需要完整调用图和状态流上下文的审计工作流
### `benchmark_simplified`
- 基于**同一事件**的代码,它**仅保留漏洞函数**(以及编译和语义理解所需的最小依赖),并**移除与漏洞无关的函数**,用于:
- 在与 **ai-auditing-engine** 等引擎集成时**减少输入范围**,从而更容易**精准定位漏洞**
- **降低 token 和计算成本**,加快迭代评估速度
## 事件索引 (CSV)
代码仓库根目录下的 CSV 文件列出了当前包含在 `dataset/` 中的**所有事件**,应将其视为权威的元数据来源:
- 中文:[`ai-auditing-benchmark_cn.csv`](ai-auditing-benchmark_cn.csv)
- 英文:[`ai-auditing-benchmark_en.csv`](ai-auditing-benchmark_en.csv)
两个 CSV 的数据行完全相同;只是字段语言不同。各列含义如下:
- **Attack date**:事件发生日期(`YYYY.MM.DD`)。
- **Project**:被攻击的项目或协议(显示名称可能与目录简称略有不同,例如包含 `@` 或括号内的备注)。
- **Vulnerability**:漏洞类型的简短描述。
- **Vulnerability details**:攻击手法和缺陷描述。
- **Attack transaction**:具有代表性的链上交易哈希。
- **Vulnerable contract address**:相关合约地址(单个单元格内可能包含多行)。
- **Loss (10k USD)**:已报告或估算的损失金额。
**与目录名称的映射关系**:`dataset/benchmark_complete` 和 `benchmark_simplified` 下的事件文件夹名称均使用 `{IncidentDateYYYYMMDD}_{ProjectOrProtocolSlug}`。日期来源于 **Attack date** 转换成的 8 位数字(例如,`2025.05.28` → `20250528`)。`{ProjectOrProtocolSlug}` 对应于 **Project** 列,通常是文件系统安全的小写或驼峰式简称(例如,表中的 `@Corkprotocol` 对应的目录为 `20250528_Corkprotocol`)。如果 **Project** 列包含额外备注(例如括号中的地址),目录名通常仍使用简短的协议标识符;代码仓库中的实际文件夹名称为最终标准。
源代码树路径因事件而异。请在相应目录下按子项目/合约名称进行浏览。
## 快速开始(按事件定位代码)
1. 在 CSV 中找到目标行(通过 **Attack date / Project**)。
2. 将 **Attack date** 转换为 `YYYYMMDD`,并与项目简称组合:`{YYYYMMDD}_{ProjectSlug}`。
3. 选择一种粒度:
- `dataset/benchmark_complete/{dir}/...`:完整上下文(更贴近真实的审计输入)。
- `dataset/benchmark_simplified/{dir}/...`:最小必要切片(消耗 token 更少,回归测试更快)。
示例:`2025.05.28` + `@Corkprotocol` → `dataset/benchmark_simplified/20250528_Corkprotocol/`
## 与 AI 审计引擎结合使用的建议
1. **回归测试与对比**:针对同一事件,在 `benchmark_complete` 和 `benchmark_simplified` 上运行相同的审计 prompt/pipeline,并对比检测率、误报率和成本。
2. **日常迭代**:在开发期间,使用 `benchmark_simplified` 进行快速验证;在发布前,使用 `benchmark_complete` 进行抽查,以获取更贴近生产环境的上下文。
## 许可证与免责声明
- 本代码仓库中的代码片段均来自公开的项目源代码或与事件相关的公开材料;**版权归原作者所有**。它们仅用于安全研究和基准测试评估。
- 漏洞代码可能具有**破坏性**。请勿用于非法用途。如果您在论文或产品中使用此数据集,请引用数据集名称以及版本/commit 信息。
## 贡献与更新
欢迎通过 Issues 和 PR 来添加新事件、修复路径或改进“漏洞函数”的切片规则。对于新增条目,请保持 `benchmark_complete` 和 `benchmark_simplified` 之间的映射关系,**并更新** CSV 元数据([`ai-auditing-benchmark_cn.csv`](ai-auditing-benchmark_cn.csv)、[`ai-auditing-benchmark_en.csv`](ai-auditing-benchmark_en.csv))。在您的 PR 中,请简要描述事件来源和漏洞类型。
标签:AI评测基准, GoPlus, 区块链安全, 智能合约审计, 漏洞样本