BadRandomness-SWC120-Dataset
收藏github2026-01-09 更新2026-01-20 收录
下载链接:
https://github.com/HadisRe/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.
创建时间:
2026-01-08
原始信息汇总
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倍,并且是首个包含具有函数级验证的风险等级分类的数据集。
搜集汇总
数据集介绍

构建方式
在区块链安全研究领域,构建高质量的数据集对于评估智能合约漏洞检测工具至关重要。BadRandomness-SWC120-Dataset的构建遵循一套严谨的五阶段流水线方法。初始阶段通过关键词过滤从SmartBugs-Wild集合的47,398份合约中筛选出17,466份候选合约,这些合约包含如`block.timestamp`等可能用于生成弱随机数的区块属性。随后应用58个正则表达式模式进行模式标注,识别出9种语义组别的漏洞使用模式。第三阶段依据检测到的缓解机制对合约进行风险分级,分为高风险、中风险、低风险和安全四个等级。关键的第四阶段进行了函数级验证,确保缓解措施实际保护了易受攻击的代码,这一步骤揭示了大量初始分类需要修正。最终阶段通过上下文感知分析,区分了挖矿代币等合法使用场景与彩票合约等真正易受攻击的场景,确保了数据集的精确性。
使用方法
研究人员可利用该数据集对智能合约坏随机数漏洞检测工具进行基准测试与评估。数据集以结构化形式提供,用户可从项目发布页面下载按风险等级分组的压缩包或包含完整元数据的JSON文件。配套的Python脚本支持重现数据集的整个构建流程,包括关键词过滤、模式标注、风险分类、函数验证及上下文分析等各阶段,便于进行方法复现或扩展研究。对于工具评估,用户可以将待测工具在数据集上运行,通过对比其输出与数据集中标注的风险等级和漏洞位置,计算精确率、召回率等指标。数据集还提供了用于测试的真实案例合约,有助于验证分析工具在真实场景下的有效性。
背景与挑战
背景概述
在区块链安全研究领域,智能合约的漏洞检测一直是核心议题。BadRandomness-SWC120-Dataset由研究人员HadisRe等人于2025年创建,旨在针对以太坊智能合约中的不良随机性漏洞(SWC-120)构建一个大规模、风险分层的基准数据集。该数据集从SmartBugs-Wild集合中提取了17,466份合约,并依据可被利用的风险程度进行了四级分类,涵盖了高风险、中风险、低风险及安全合约。其核心研究问题聚焦于如何准确识别和评估因使用可预测的区块链属性(如区块时间戳或哈希)而引发的随机数生成缺陷,这些缺陷常被攻击者利用以操纵博弈或抽奖结果。该数据集的发布显著提升了漏洞检测工具的评估标准,为智能合约安全分析提供了更为精细和可靠的实证基础。
当前挑战
该数据集致力于解决智能合约安全中不良随机性漏洞检测的挑战,其核心在于如何从海量合约代码中精准识别出真正可被利用的脆弱模式,而非仅依赖表面关键词匹配。构建过程中的主要挑战体现在多方面:首先,在模式标注阶段,需设计58个正则表达式模式以覆盖9种语义组别,确保能够捕捉多样化的漏洞表现形式;其次,在风险分类时,必须区分不同缓解机制的实际保护效果,例如研究发现49%初始被标记为低风险的合约因访问控制修饰符未应用于脆弱函数而实属高风险,这突显了函数级验证的必要性;此外,上下文感知分析也至关重要,需将挖矿代币等合法使用区块属性的场景与脆弱性用例区分开来,以避免误报。这些挑战共同推动了数据集构建方法学的深化与完善。
常用场景
经典使用场景
在区块链安全研究领域,BadRandomness-SWC120-Dataset为检测以太坊智能合约中的不良随机性漏洞提供了基准评估平台。该数据集通过分层风险分类,精准捕捉了合约中利用可预测区块属性生成随机数的脆弱模式,广泛应用于自动化漏洞检测工具的效能验证与比较研究。研究者可依据其标注的17,466份合约,系统评估工具在识别高风险、中风险及低风险漏洞方面的准确性与鲁棒性,从而推动智能合约安全分析技术的标准化进程。
解决学术问题
该数据集有效解决了智能合约安全研究中不良随机性漏洞评估数据稀缺且标注粒度不足的学术难题。通过引入四级风险分层与函数级验证机制,它能够区分不同缓解措施的实际防护效果,例如揭示仅所有者修饰符与脆弱函数分离导致的误分类问题。这不仅提升了漏洞检测模型的训练质量,还为量化漏洞可利用性提供了实证基础,对构建更精细的智能合约安全评估框架具有重要理论意义。
实际应用
在实际应用层面,该数据集可直接服务于区块链安全审计与开发实践。安全公司可基于其风险分类结果,优先排查高风险合约中的随机数生成逻辑,防范针对彩票、赌博等场景的预测攻击。同时,开发者能参照数据集中的安全范例,如Chainlink VRF或提交-揭示方案,设计抗操纵的随机数生成机制,从而降低智能合约部署后的资金损失风险,增强区块链生态的整体安全性。
数据集最近研究
最新研究方向
在智能合约安全领域,随机数生成漏洞(SWC-120)因其对去中心化应用资金安全的直接威胁而备受关注。BadRandomness-SWC120-Dataset的推出,为检测工具评估提供了大规模、风险分层的基准数据,推动了该方向的前沿研究。当前研究热点集中于利用该数据集开发更精准的漏洞检测模型,特别是结合深度学习技术识别复杂上下文中的伪随机模式,以及验证缓解措施在函数级别的实际有效性。这一进展不仅提升了自动化审计工具的可靠性,也为区块链生态中随机数生成的安全标准制定提供了实证基础,对预防类似DApp攻击事件具有深远意义。
以上内容由遇见数据集搜集并总结生成



