BadRandomness-SWC120-Dataset
收藏资源简介:
该存储库提供了一个基准数据集,用于评估检测以太坊智能合约中坏随机性漏洞的工具。数据集包含从SmartBugs-Wild集合中提取的17,466个合约,每个合约都根据四级风险分类系统进行了标记。坏随机性(SWC-120)发生在智能合约使用可预测的区块链值(如block.timestamp、blockhash或block.difficulty)生成随机数时。攻击者可以利用这一弱点预测结果并窃取资金。
This repository provides a benchmark dataset for evaluating tools that detect bad randomness vulnerabilities in Ethereum smart contracts. The dataset includes 17,466 contracts extracted from the SmartBugs-Wild collection, where each contract is labeled based on a four-level risk classification system. Bad randomness (SWC-120) occurs when a smart contract generates random numbers by utilizing predictable blockchain values, such as block.timestamp, blockhash, or block.difficulty. Attackers can exploit this flaw to predict the outcomes and steal funds.
BadRandomness-SWC120-Dataset 数据集概述
数据集简介
这是一个用于评估以太坊智能合约中不良随机性(SWC-120)漏洞检测工具的基准数据集。数据集包含从SmartBugs-Wild集合中提取的17,466个合约,每个合约均按照四级风险分类系统进行标记。
核心特性
- 规模大:包含17,466个已标记合约,规模显著大于现有数据集。
- 风险分层:基于可利用性进行四级分类。
- 函数级验证:验证缓解措施是否真正保护了易受攻击的代码。
- 上下文感知分析:区分挖矿代币与易受攻击的彩票合约。
数据集统计
| 风险等级 | 数量 | 百分比 | 描述 |
|---|---|---|---|
| HIGH_RISK | 1,543 | 88.3% | 无保护,任何人都可利用 |
| MEDIUM_RISK | 37 | 2.1% | 存在tx.origin检查,仅矿工可利用 |
| LOW_RISK | 172 | 9.8% | 存在onlyOwner修饰符,仅所有者可利用 |
| SAFE | 6 | 0.3% | 使用Chainlink VRF或Commit-Reveal方案 |
易受攻击合约总数:1,752
风险等级定义
- HIGH_RISK:无缓解措施的合约。随机性函数可公开调用,并依赖于可预测的区块属性。任何攻击者都可以部署合约在同一交易内预测结果。
- MEDIUM_RISK:具有
tx.origin == msg.sender检查或未来区块模式的合约。这阻止了基于合约的攻击,但矿工仍可在协议限制内操纵区块属性。 - LOW_RISK:随机性函数上具有
onlyOwner或类似访问控制的合约。外部攻击者无法调用该函数;利用需要所有者恶意操作。 - SAFE:使用Chainlink VRF或Commit-Reveal方案的合约。这些方案提供了无法预测或操纵的密码学安全随机性。
数据集构建方法
数据集构建遵循一个五阶段流程:
- 第一阶段:关键词过滤:过滤包含常用作弱随机性源的区块属性的合约,将47,398个合约减少到17,466个候选合约。
- 第二阶段:模式标记:应用58个正则表达式模式,跨越9个语义组来识别易受攻击的随机性使用。
- 第三阶段:风险分类:根据检测到的缓解机制对合约进行分类。
- 第四阶段:函数级验证:验证缓解措施是否实际保护了易受攻击的代码。此阶段发现最初被归类为LOW_RISK的合约中有49%实际上是HIGH_RISK,因为修饰符未应用于易受攻击的函数。
- 第五阶段:上下文感知细化:区分区块属性的合法使用与易受攻击的随机性使用。
数据集内容与获取
- 智能合约文件可在发布页面获取:https://github.com/HadisRe/BadRandomness-SWC120-Dataset/releases
- 文件包括:
HIGH_RISK.zip、MEDIUM_RISK.zip、LOW_RISK.zip、SAFE.zip、final_dataset.json。 final_dataset.json文件包含元数据、统计信息和合约列表。
与现有数据集的比较
| 数据集 | 易受攻击合约数 | 安全合约数 | 风险等级 | 函数验证 |
|---|---|---|---|---|
| SWC Registry | 2 | - | 否 | 否 |
| SmartBugs Curated | 8 | - | 否 | 部分 |
| RNVulDet | 34 | 214 | 否 | 否 |
| 本数据集 | 1,752 | 1,782 | 是 | 是 |
本数据集提供的易受攻击合约数量是RNVulDet的51倍,并且是首个包含具有函数级验证的风险等级分类的数据集。




