shenyimings/FORGE-Artifacts

GitHub: shenyimings/FORGE-Artifacts

一个LLM驱动的自动化框架,从真实审计报告中大规模构建智能合约漏洞数据集并配套评估结果。

Stars: 30 | Forks: 8

# FORGE: 一个用于大规模智能合约漏洞数据集构建的LLM驱动框架 [![论文](https://img.shields.io/badge/Paper-arXiv-b31b1b)](http://arxiv.org/abs/2506.18795) ![访问者](https://visitor-badge.laobi.icu/badge?page_id=shenyimings.FORGE-Artifacts) ![Python](https://img.shields.io/badge/Python-3.11+-blue) 本仓库包含在[ICSE'26](http://arxiv.org/abs/2506.18795)上接收的论文的 artifacts(制品)。 具体来说,它包含: - [源代码](src/) 的 FORGE 框架 - 由 FORGE 构建的[数据集](dataset/) - [评估结果](evaluation/) ## 最新动态 - **[2026-02-11] 🔥 我们已发布 [FORGE-Curated](https://github.com/shenyimings/FORGE-Curated):一个中等规模、高质量且更具可行性的智能合约漏洞精选数据集!** - **[2025-06-20] 🎉 我们的 [论文](http://arxiv.org/abs/2506.18795) 已直接入选 ICSE'26 第一轮(直接接受率:9.2%,60/646)。期待在里约热内卢相见!** - **[2025-03-12] ✨ 我们发布了最大的智能合约漏洞数据集 FORGE-Dataset,以及 FORGE 源代码——首个自动化的漏洞数据集构建框架。** ## FORGE 框架 ### 概述

FORGE banner

FORGE 是一个从真实世界审计报告中构建全面智能合约漏洞数据集的自动化框架。通过利用大语言模型(LLM)和通用弱点枚举(CWE)标准,FORGE 解决了现有漏洞数据集的关键挑战:劳动密集且易出错的手动构建、不一致的分类标准以及有限的可扩展性。FORGE 框架包含四个主要模块: - **语义分块器(Semantic Chunker)**:将审计报告切分为有意义且自包含的块 - **MapReduce 提取器(MapReduce Extractor)**:从报告块中提取并聚合漏洞信息 - **分层分类器(Hierarchical Classifier)**:通过树状思维(tree-of-thoughts)推理将漏洞分类到 CWE 层级 - **代码获取器(Code Fetcher)**:检索并整合相应的智能合约项目源代码 ### 安装与设置 我们推荐使用 [uv 包管理器](https://docs.astral.sh/uv/) 来安装和配置 FORGE: ``` # 克隆仓库 git clone https://github.com/FOGRE-security/FORGE-Artifact.git cd FORGE-Artifact/src # 使用 uv 安装依赖 uv sync # 配置模型设置 vim config.yaml # Configure LLM and provider API Baseurl # 设置 API 密钥 cp .env-example .env vim .env # Configure API-key ``` 或者,你可以使用 pip: ``` # 使用 pip 安装依赖 pip install -r requirements.txt ``` ### 快速开始 在示例文档上运行 FORGE 以提取、分类并获取源代码: ``` # 使用 uv(推荐) uv run main.py forge -t sample/sample.pdf -o sample # 或直接使用 python python main.py forge -t sample/sample.pdf -o sample ```

FORGE banner

An example of dataset generated by FORGE

### 用法 FORGE 提供多个命令以运行管道的不同部分: ``` # 从安全文档中提取漏洞和项目元数据: uv run main.py extract -t path/to/documents -o output/directory # 或:python main.py extract -t path/to/documents -o output/directory # 将提取的漏洞分类为 CWE 类别: uv run main.py classify -t path/to/extracted/json # 或:python main.py classify -t path/to/extracted/json # 根据 *Github*、*Etherscan*、*Bscscan*、*Polygonscan* 和 *Basescan* 的项目元数据获取源代码。 uv run main.py fetch -t path/to/project/json # 或:python main.py fetch -t path/to/project/json ``` #### 基准构建 FORGE 的一个潜在用途是通过编辑 [src/core/invoker.py](src/core/invoker.py) 中的提示,为特定漏洞构建小规模基准数据集。 #### 额外选项 所有命令支持以下选项: - `--log, -l`:日志目录路径(默认:"logs") - `--config, -c`:配置文件路径(默认:"config.yaml") 运行 `python main.py COMMAND --help` 获取特定命令的帮助。 ## 数据集 我们已以下列方式提供数据集: - **漏洞信息**:可在该仓库的 `dataset/results` 目录中获取。 - **Solidity 代码文件**:可在该仓库的 `dataset/contracts` 目录中获取。 - **审计报告**:由于 GitHub 存储限制,审计报告可通过两种方式下载: - **选项 1 - Cloudflare R2**:使用你偏好的方法通过 API 令牌下载。请参阅 [dataset/access_reports.ipynb](dataset/access_reports.ipynb) 了解使用示例。 - **选项 2 - Google Drive**:直接从 [https://drive.google.com/file/d/10u9DrWvtzw8Bo-7jig2KWmua2bS8NPq9](https://drive.google.com/file/d/10u9DrWvtzw8Bo-7jig2KWmua2bS8NPq9) 下载。 ## 评估 ### RQ1 FORGE 构建的数据集是迄今为止最全面的智能合约漏洞集合,源自真实世界的审计报告。以下是数据集统计概览: | **统计项** | **数值** | |------------|----------| | 总审计报告数 | 6,454 | | 总 DApp 项目数 | 6,579 | | 总 Solidity 文件数 | 81,390 | | 每个项目的平均 Solidity 文件数 | 12 | | 每个项目的平均代码行数 | 2,575 | | **编译器版本** | ---- | | 0.4+ 版本编译器 | 270 | | 0.5+ 版本编译器 | 478 | | 0.6+ 版本编译器 | 1,524 | | 0.7+ 版本编译器 | 360 | | 0.8+ 版本编译器 | 3,791 | | 其他版本编译器 | 31 | | **漏洞** | ---- | | 总漏洞发现数 | 27,497 | 该数据集包含 81,390 个 Solidity 文件和 27,497 个漏洞,涵盖 296 个 CWE 类别。59.0% 的项目使用最新的 Solidity 编译器版本(0.8+)。每个项目平均有 2,575 行代码,代表了现实世界的复杂性。 你可以使用 `RQ1/statistic.ipynb` 来分析和汇总数据集的相关信息。 ### RQ2 `evaluation/RQ2/` 目录包含我们用于评估信息提取能力的手动标注结果。你可以通过运行命令 `python calculate_metrics.py results.json` 来计算精确率、召回率和 F1 分数。 ### RQ3 `evaluation/RQ3/results.csv` 文件包含随机采样的漏洞发现信息,以及由两名人类独立标注和 LLM 标注的 CWE 类别。`evaluation/RQ3/k-alpha.csv` 文件是格式化后的 CSV 模板,用于满足 [Krippendorff's Alpha 计算器](https://www.k-alpha.org/) 的要求,可用于计算三位标注者之间的评分者间信度。 此外,FORGE 的分层分类器所使用的 $CWE_s$ 分类信息存储在 `evaluation/RQ3/CWE_s.json` 中。 ### RQ4 13 种检测工具的漏洞分类结果存储在 `evaluation/RQ4/tool_classifications.csv` 中。`evaluation/RQ4/results.csv` 文件展示了使用 [SmartBugs](https://github.com/smartbugs/smartbugs) 框架在数据集上运行我们分析工具的结果。此外,`evaluation/RQ4/details` 目录包含每个 CWE 类别对应的每个工具的详细指标。 ## 参考文献 有关数据集和研究发现的更多信息,请参考我们被 **ICSE 2026** 接收的论文: ``` @misc{chen2025forgellmdrivenframeworklargescale, title={FORGE: An LLM-driven Framework for Large-Scale Smart Contract Vulnerability Dataset Construction}, author={Jiachi Chen and Yiming Shen and Jiashuo Zhang and Zihao Li and John Grundy and Zhenzhe Shao and Yanlin Wang and Jiashui Wang and Ting Chen and Zibin Zheng}, year={2025}, eprint={2506.18795}, archivePrefix={arXiv}, primaryClass={cs.CR}, url={https://arxiv.org/abs/2506.18795}, } ``` ## 贡献 如果你发现数据集存在问题或有疑问,请联系 [shenym7@mail2.sysu.edu.cn](mailto:shenym7@mail2.sysu.edu.cn) 或提交问题以描述问题。我们会尽快响应并解决。你也可以通过创建新的 pull request 来为改进我们的代码做出贡献。
标签:arXiv, C2, DLL 劫持, DNS解析, FORGE, ICSE 2026, LLM 框架, MapReduce 提取, Python, Solidity, T1499, 代码安全, 区块链安全, 大规模漏洞数据, 大语言模型, 开源项目, 数据集构造, 无后门, 智能合约安全, 智能合约审计, 漏洞数据集, 漏洞枚举, 网络安全研究, 自动化构建, 语义分块, 逆向工具