five

ethereum-vuln-dataset

收藏
github2026-07-03 更新2026-07-09 收录
下载链接:
https://github.com/NyxFoundation/ethereum-vuln-dataset
下载链接
链接失效反馈
官方服务:
资源简介:
一个精选的语料库,包含来自11个生产Ethereum客户端(五个执行层,六个共识层)的历史安全修复。每一行代表一个历史漏洞修复——一个合并的PR、提交、公告或CVE——归一化为单一模式,按安全相关性评分,并根据证据强度分级。该数据集用于训练和评估规范合规性/审计工具。

A curated corpus of historical security fixes sourced from 11 production-grade Ethereum clients, including five execution layer clients and six consensus layer clients. Each entry represents a historical vulnerability fix—either a merged pull request (PR), commit, security advisory, or CVE—normalized into a unified schema, scored for security relevance, and graded based on evidence strength. This dataset is intended for training and evaluating specification compliance and audit tools.
创建时间:
2026-06-30
原始信息汇总

数据集概述:Ethereum Vulnerability Dataset

该数据集是一个精心整理的以太坊客户端历史安全修复语料库,覆盖了11个生产环境客户端(5个执行层,6个共识层)。每一行数据代表一个历史漏洞修复事件。

核心目的

用于训练和评估规范合规性与审计工具。核心问题是:给定修复前的代码状态,工具是否能发现漏洞?

数据规模

类别 行数
原始快照(所有客户端) 18,475
精选后(仅安全相关) 2,225
核心子集(A级 + B级) 1,808
按证据等级划分 A_authoritative: 235 · B_corroborated: 1,573 · C_candidate: 417
按置信度划分 高: 337 · 中: 1,542 · 低: 454
按严重性划分 严重: 3 · 高: 63 · 中: 60 · 低: 21 · 信息: 853 · 未分级: 1,333

数据集构建流程

  1. 原始快照:从11个客户端仓库及规范仓库中抓取公告、隐蔽PR、提交、发布、CVE/OSV/RustSec等,共18,475行。
  2. 去噪:通过确定性规则过滤:
    • T1: 移除发布说明/紧急模板(11行)。
    • T2: 移除CI/文档/依赖升级等元工作(1,417行)。
    • T2b: 移除NVD子串匹配误报(49行),剩余16,998行。
  3. 安全信号门控:保留至少触发一个独立安全信号的行,否则丢弃(丢弃14,665行低信号数据)。
  4. 精选结果:最终得2,225行已精选数据,并划分证据等级。

安全信号门控机制

保留一行记录的条件是任意一个以下独立安全信号被触发。保留后,根据证据强度划分等级:

等级 含义 使用场景
A_authoritative 具有公告ID或公告级别严重性,是已确认的漏洞。 需要真实准确的数据。
B_corroborated 无公告ID,但≥2个独立信号一致。 默认的高精度子集。
C_candidate 仅单一信号触发。 需要最大覆盖范围。

核心子集 = A ∪ B。

隐蔽修复检测

以太坊客户端约98-100%的漏洞是隐蔽修复的。数据集使用两种方法恢复:

  • 补丁反向链接:从已确认的公告开始,提取精确的修复提交。
  • 免训练LLM分类器:对代码差异、开发工件和受影响子系统进行思维链分析。在gemma4:31b模型上F1值为0.872,精确度为0.895。此步骤额外发现了453个隐蔽修复。

严重性分级与范围

严重性遵循以太坊基金会漏洞赏金标准,而非CVSS。严重性反映单个网络数据包或链上交易可达到的网络级影响:

等级 定义
严重 创建/归集无限ETH · 从所有外部账户窃取/销毁ETH · 通过一个交易击垮整个网络 · 罚没超过50%的验证者
影响超过33%的链分裂或宕机 · 罚没超过33%
超过5%的链分裂或宕机 · 罚没超过1%
通过单个数据包/交易造成超过0.01%的链分裂或宕机

注意

  • 约94%的行是“未分级”。大多数修复没有CVE或公告,因此未分级≠低影响。
  • 存在两种严重性模型并存:少数行遵循EF漏洞赏金,部分上游依赖CVE携带CVSS分级,两者在severity_source列中区分。
  • severity_estimated列是可选LLM通过的估计值,不会覆盖已分级的severity

数据来源客户端

客户端 层次 语言 仓库
Geth 执行层 Go ethereum/go-ethereum
Nethermind 执行层 C# NethermindEth/nethermind
Besu 执行层 Java hyperledger/besu
Erigon 执行层 Go erigontech/erigon
Reth 执行层 Rust paradigmxyz/reth
Lighthouse 共识层 Rust sigp/lighthouse
Lodestar 共识层 TypeScript ChainSafe/lodestar
Nimbus 共识层 Nim status-im/nimbus-eth2
Prysm 共识层 Go prysmaticlabs/prysm
Teku 共识层 Java Consensys/teku
Grandine 共识层 Rust grandinetech/grandine

此外,还包括ethereum/consensus-specsethereum/execution-specs的规范差异修复。

数据模式关键字段

字段 描述
id 稳定行ID
source_platform 客户端标识
severity 漏洞赏金等级
title, description 修复文本
source_url 上游修复链接
label 漏洞的协议领域(如fork-choice
root_cause 根本原因(如missing_bounds_check
attack_path 触发方式(如malicious_block
pre_fix_code / post_fix_code 内联的修复前/后代码
authority_tier 证据等级
confidence 置信度

数据访问与使用

python import pandas as pd df = pd.read_parquet("data/ethereum_vulns.parquet")

获取核心子集(1,808行)

df[df.authority_tier != "C_candidate"]

获取高置信度数据

df[df.confidence == "high"]

数据集提供CSV和Parquet格式。原始快照和处理流程完全可复现。

搜集汇总
数据集介绍
构建方式
该数据集系统性地汇聚了来自十一个主流以太坊客户端(五个执行层、六个共识层)的历史安全修复记录。构建过程遵循一条严谨的流水线:首先通过爬取客户端仓库及安全公告,获取原始快照(含18475条记录);继而执行确定性去噪,剔除发布说明模板、CI文档及依赖更新等无关条目;最终经由一道精心设计的“门控”机制,利用CVE/GHSA标识、安全关键词评分、修复动词与崩溃类型组合、以及LLM静默修复分类器等多项独立信号进行筛选与分级,将保留的2225条记录按证据强度划分为权威、佐证与候选三个层级。
特点
数据集的独特之处在于其专门聚焦于以太坊客户端静默修复的痛点——约98%-100%的漏洞在无CVE编号的情况下悄然修复。为此,数据集在确定性补丁回溯之外,创新性地引入基于LLM的训练无关分类器(Gemma4:31b模型,F1达0.872),通过链式推理分析代码差异与开发工件,成功回收453条被传统方法遗漏的静默修复记录。每条记录均包含内联修复前后代码、协议领域标签、根因分类、攻击路径及基于以太坊基金会漏洞赏金模型(而非CVSS)的严重性评估,支持STRIDE与CWE顶级分类标注。
使用方法
用户可通过Pandas直接读取Parquet或CSV格式数据文件。核心操作建议聚焦于权威与佐证层级的并集(1808条记录),或根据置信度字段进一步筛选强证据样本。支持通过n_signals、confidence、authority_tier等列灵活调整召回率与精确率平衡。欲复现完整数据集,可运行明确依赖关系的确定性构建脚本;针对网络敏感的原始快照重采集或LLM分类重运行,参考collection文档即可。计划中的HuggingFace datasets镜像将提供更便捷的远程加载方式。
背景与挑战
背景概述
以太坊作为去中心化区块链生态的基石,其客户端软件的安全性直接关系到整个网络的价值存续与信任根基。然而,绝大多数漏洞修复以‘静默补丁’形式存在,缺乏CVE等公开追溯标识,使得安全审计、工具评估与规约符合性验证长期面临数据荒漠。为填补这一空缺,NyxFoundation研究团队于2024年前后构建了ethereum-vuln-dataset,系统性地从Geth、Nethermind、Lighthouse等11个主流执行层与共识层客户端的公开仓库中,精心筛选并标准化了2,225条历史安全修复记录。该数据集通过多源证据强度分层(权威、佐证、候选)与以太坊基金会漏洞赏金模型对齐的严重性分级,首次为客户端安全工具的训练与评测提供了高精度、可复现的基准语料,对推动区块链安全实证研究具有里程碑意义。
当前挑战
本数据集构建面临的核心挑战之一源于以太坊客户端普遍存在的‘静默修复’现象——约98%至100%的漏洞在修复时既不发布CVE/GHSA编号,亦未在提交信息中明确安全语义。这迫使研究团队研发了补丁反向链接与免训练大语言模型分类器来主动识别被掩盖的修复,但模型在区分高危安全变更与常规重构、依赖升级等噪音时仍存在误判风险。此外,数据收集过程需跨越五种编程语言、多种仓库结构与版本管理惯例,从18,475条原始条目中剔除CI任务、文档更新及误匹配的外部组件CVE(如gethostbyaddr中的‘geth’子串),最终仅保留约12%的高质量条目。而严重性标注更是面临双重模型冲突:基于网络影响范围的本机漏洞赏金分级与上游依赖CVSS分级难以直接转换,加之94%的修复缺乏官方评级,LLM估计方法在精确层级匹配上仅达到约60%的准确率,为下游工具评测引入了不可忽视的噪声与偏差。
常用场景
经典使用场景
在区块链安全研究领域,ethereum-vuln-dataset最经典的使用场景是作为以太坊客户端协议合规性与审计工具的训练与评估基准。该数据集精心整理了来自11个生产级以太坊客户端(5个执行层与6个共识层)的历史安全修复记录,每一行数据均代表一次已合并的拉取请求、提交、安全公告或CVE编号。研究者可基于修复前的代码状态,检验自动化审计工具是否能够成功检测出该漏洞,从而系统性地评估工具的检测能力与召回率,推动安全工具的迭代优化。
实际应用
在实际应用中,该数据集被广泛用于以太坊客户端的安全审计、智能合约漏洞检测与基础设施风险监控。安全团队可借助其中标注的修复前后代码差异与攻击路径描述,构建针对性的模糊测试用例与渗透测试方案。同时,数据集提供的严重性分级体系(遵循以太坊基金会漏洞赏金模型)帮助运维人员优先处理高影响力漏洞,降低网络分叉或资金窃取等灾难性事件的发生概率。此外,该数据集还支持跨客户端的安全对比分析,协助开发者识别共识层与执行层的共性缺陷。
衍生相关工作
该数据集衍生出一系列经典研究工作,包括基于无微调大语言模型的静默修复检测器(F1 0.872),以及利用链式思维推理从代码差异与开发工件中提取漏洞严重性估计的方案。此外,研究者基于该语料库归纳出六大重复性漏洞模式(如边界检查缺失、整数溢出、共识分歧等),并生成了按子系统组织的安全清单与测试计划。这些工作不仅提升了以太坊客户端的安全自动化水平,也为其他区块链平台的漏洞分析提供了可复现的方法论框架,推动了区块链安全研究从经验驱动向数据驱动的范式转变。
以上内容由遇见数据集搜集并总结生成
二维码
社区交流群
二维码
科研交流群
商业服务