【文献阅读】BunnyFinder:探寻以太坊共识机制中的激励机制漏洞

BunnyFinder: Finding Incentive Flaws for Ethereum Consensus

BunnyFinder:探寻以太坊共识机制中的激励机制漏洞

会议:NDSS(Network and Distributed System Security Symposium) 2026

原文链接:https://www.ndss-symposium.org/wp-content/uploads/2026-s281-paper.pdf

一、背景

以太坊于2022年9月升级至权益证明(PoS)共识机制,高度依赖激励机制保障系统稳定:诚实验证节点获得区块奖励、交易手续费及证明奖励,拜占庭验证节点则面临罚没与证明处罚。该机制虽已取得巨大成功(超过99%的验证节点正常运行),但并非完美。

现有问题 :已有多种针对激励机制的攻击被发现(如阶梯攻击、重组攻击等),即便不直接威胁安全性,不合理的激励也会打击诚实节点参与积极性,降低系统稳健性。

核心挑战:发现激励漏洞难度大,主要依赖专家知识与大量人工,原因有二:

  • 尚无共识机制在安全定义中纳入激励因素,难以彻底排除漏洞;
  • 攻击策略极为复杂(如拜占庭节点勾结、精准控制消息释放时机),穷举所有恶意行为在技术上不可行。

研究问题 :能否在减少人工的前提下,找出以太坊中的激励机制漏洞?

BunnyFinder方法 :受软件测试(故障注入)启发的半自动框架,聚焦设计缺陷(尤其是激励缺陷)。由四大组件构成:策略生成器(SG)、策略执行器(SE)、状态分析器(SA)、策略优化器(SO)。

主要发现 :在Prysm和Teku两种以太坊实现上生成并执行了9,354个攻击实例,识别出10个有用攻击------5个已知重组攻击、3个新激励缺陷攻击、2个Prysm实现缺陷。

以太坊PoS权益证明和激励机制

工作流程

  1. 该协议以周期为单位运行,每个周期包含32个时隙。在时隙t起始时刻,提议节点viv_ivi生成区块b=(PROPOSE,t,vi,H(head),atts,txs)b = (\text{PROPOSE}, t, v_i, H(\text{head}), \text{atts}, \text{txs})b=(PROPOSE,t,vi,H(head),atts,txs), 其中head为分叉选择规则的输出结果,atts是一组证明消息,txs为交易批次(第1至7行)。
  2. 时隙t开启满4秒后,所有具备证明资格的节点viv_ivi生成证明消息att=(ATTEST,t,vi,H(head),H(cp1),H(cp2))\text{att} = (\text{ATTEST}, t, v_i, H(\text{head}), H(\text{cp1}), H(\text{cp2}))att=(ATTEST,t,vi,H(head),H(cp1),H(cp2)),并将该证明消息发送给同委员会内所有验证节点。 其中head同样为分叉选择规则输出,cp1与cp2为两个检查点区块(第8至14行)。
  3. 验证节点viv_ivi收到其他验证节点发来的消息m后,会将m存入自身本地区块树T中(第15至18行),本地区块树仅服务于分叉选择规则。

激励机制The incentive mechanism

  1. 以太坊的激励机制包含奖励与惩罚两部分。奖励分为区块奖励、交易手续费以及证明手续费。惩罚分为削减惩罚和证明惩罚。
    • 区块奖励block rewards,是每个区块提议者所提议的区块完成最终确认后能够获得的奖励。
    • 交易手续费transaction fees,是用户为完成一笔交易额外支付的费用。
    • 证明手续费attestation fees,每个证明者在其证明完成最终确认后,能够获得的奖励。
    • 削减惩罚slashing condition,惩罚出现双重作证行为的验证者。
    • 证明惩罚Attestation penalties,对未完成证明最终确认的证明者进行惩处。
  2. 证明奖励和证明惩罚都称为证明激励attestation incentives,此项目主要关注证明激励和区块奖励。

二、方法

(一)概述

BunnyFinder由4个部分组成:策略生成器SG、策略执行器SE、状态分析器SA、策略优化器SO,分2个阶段运行。

  1. 攻击识别(Attack identification):策略生成器SG生成攻击实例集合,策略执行器SE将这些攻击引入本地部署的以太坊测试网,让一部分验证节点执行这些攻击;状态分析器SA收集日志并分析攻击实例是否揭示了激励缺陷。这三个组件是自动执行的。
  2. 攻击优化(Attack optimization):发现激励漏洞后,人工核查日志,区分已知类型或全新类型。针对新型攻击,提取通用攻击手段,运行SO算法进行优化,让攻击更易实施或收益更高。优化手段过程中会采用强化学习RL。此项工作需要专业领域知识支撑,无法完全自动化。
难点和解决办法

核心研究难点是从海量攻击实例空间中挖掘有效的攻击策略,并对攻击参数进行微调。拜占庭验证者存在两类恶意行为:顺序操纵 (Order manipulation拜占庭验证者篡改各验证者向其他验证者发送消息的顺序)与内容操纵(篡改消息本身的内容)。恶意行为虽仅两类,但具体攻击场景数量极多:1.攻击者可随意篡改、延迟消息;2.掌控不同比例拜占庭验证节点,掌控节点越多,需篡改的消息队列规模越大,无法穷举所有攻击方案,必须缩减攻击场景范围;3.即便找到存在激励漏洞的攻击,也无法确定其收益最高,微调一下就可能造成更大破坏。为此对策略生成器SG、状态分析器SA、策略优化器SO三大模块进行精心设计。

  1. SG:减少攻击实例的空间,为生成有效攻击实例提出几条规则。

    • (不得提前发布消息)在以太坊的实现机制中,验证节点不会处理槽位编号高于自身当前本地槽位编号的消息。因此,提前发布消息毫无意义。
    • (设置离散延迟时长)离散化设置延迟时长,单个slot的1/3为1个单位,比如4秒。采用该优化方案主要有两点原因:1.每个验证节点会在每个单位时间执行若干操作,比如,每位证明节点attestor会在每个时隙走完4秒后生成对应的证明信息;2.本文采用同步网络假设,所有消息均可准时送达。相较于其他时序模型,该假设的约束条件实际上更为宽松。即若某种攻击在同步网络环境下能够实施,那么在异步网络环境中实施该攻击会更加容易。
    • (审慎选取可篡改内容字段)针对性筛选区块与证明数据结构中可供修改的字段,以此保证各类攻击策略能够生效。

    采用上述原则后,攻击实例的数量大幅减少。共生成9354个攻击实例,有3121个被认定为激励缺陷。

  2. SA:评估攻击实例 ,首先对激励缺陷进行规范定义。完善的激励机制通常需满足:(1)遵守协议的诚实验证节点应当获得奖励;(2)违背协议规范的拜占庭验证节点应当受到惩罚。目前已知的绝大多数研究都聚焦于会触发条件(1)的激励缺陷,因此,还需考量条件(2)是否会被触发,并分析以下可能情形:若诚实验证节点获得的奖励低于其应得份额,拜占庭验证节点的奖励是否也会低于其应得份额,甚至遭受处罚?若诚实验证节点受到处罚,拜占庭验证节点是否会面临更重的处罚?

    设fsf_sfs为诚实验证节点的公平分配奖励fair share of rewards。RBR_BRB与RhR_hRh分别代表拜占庭验证节点、诚实验证节点的净收益net payoffs。为正代表获得净奖励;为负代表遭受净惩罚。当Rh<fsR_h < f_sRh<fs时,此次攻击具备实际影响,即诚实验证节点所得收益<其公平分配奖励。我们根据(RB,Rh)(R_B, R_h)(RB,Rh)将各类场景划分如下:

    • 场景一:两者均获得奖励。此时仅当诚实验证节点的net payoffs < fair share时,攻击具备实际影响,满足条件:RB>0R_B > 0RB>0、Rh>0R_h > 0Rh>0且Rh<fsR_h < f_sRh<fs。
    • 场景二:两者均受到惩罚。此时攻击本身即具备实际影响,原因是诚实验证节点严格遵守协议却仍遭受惩罚,满足条件:RB<0R_B < 0RB<0且Rh<0R_h < 0Rh<0。
    • 场景三:拜占庭验证节点获取奖励,诚实验证节点遭受惩罚。此类攻击会对系统稳定性造成严重冲击,攻击者掌控的质押份额会持续增长,最终可能突破33.3%的临界阈值,满足条件:RB>0R_B > 0RB>0且Rh<0R_h < 0Rh<0。
    • 场景四:拜占庭验证节点遭受惩罚,诚实验证节点获得奖励。同理,仅当诚实验证节点的奖励低于fair share时,攻击具备实际影响,满足条件:RB<0R_B < 0RB<0、Rh>0R_h > 0Rh>0且Rh<fsR_h < f_sRh<fs。

    为量化攻击带来的影响,我们定义拜占庭优势BA=RB−Rh\text{BA} = R_B - R_hBA=RB−Rh。拜占庭优势数值越大,代表攻击者净收益越高、诚实验证节点净收益越低;拜占庭优势越大,攻击效果越强;RB−fsR_B - f_sRB−fs数值越大,则攻击的获利空间越高。

  3. SO:用RL优化攻击 ,在识别出缺陷后,需要判断:通过小幅调整攻击策略并微调攻击参数,是否能够找到收益更高的攻击方案。论文采用强化学习(RL)构建攻击优化方案SO。但需要解决的核心难点在于:系统运行过程中验证节点的收益会发生动态变化,因此难以直接确定"收益函数"。为解决该问题,本文选用延迟奖励强化学习模型,并在执行强化学习算法的过程中对验证节点的收益进行仿真模拟。

    后续将证明,借助RL-based SO,对两种新发现的攻击策略完成优化,分别是自私挖矿攻击与阶梯式二类攻击。针对阶梯式二类攻击,经过优化后其攻击效果大幅提升。相较于原始攻击方案可获得近乎两倍的收益。除此之外,成功概率也从35.0%提升至97.0%。

(二)框架细节

1. 策略生成器SG

主要的策略包括操纵顺序和内容。

  • 顺序操纵,使用消息队列表示每个验证节点应该相互发送的消息,攻击者会任意修改自身消息队列,并决定每条消息发送至其他验证节点的时机。攻击者无法操控诚实验证节点的消息队列;

  • 内容操纵,区分几个可生成有效攻击样本的字段。图3详细展示了区块与证明的数据结构:

    • Block:slot字段代表slot编号,proposer字段代表区块proposer身份,这两个字段无法篡改。parent字段记录父区块哈希值,该字段能够被篡改,现有多种已知攻击均利用了该手段。transactions字段存储一批交易,与证明激励机制无关。attestation字段包含一组证明极其重要------每个验证节点都会依据该字段,在分叉选择规则中判定区块树各分支的权重。综上,可对区块的parent与attestation字段实施篡改。
    • Attestation :head字段为各证明节点主链的哈希值,source与target字段代表两个校验节点。这三类字段均可篡改,多款已知攻击均采用该篡改方式。

    例子:以事前重组攻击(ex-ante reorg attack)为例,攻击中仅需1名proposer为拜占庭节点,但所有拜占庭验证节点都会篡改并延迟其证明信息。该攻击同时需要篡改顺序与内容两类操作,所有拜占庭证明节点均执行同一套攻击策略。相关攻击策略汇总于图4。图6a汇总了未发起攻击时验证节点的消息队列情况,图6b汇总了发起攻击后的消息队列情况。图5所示图例适用于图6及后续所有附图。

    在实现时,定义了一种基于JSON格式的策略规范格式(SSF),SSF在每个slot中定义3要素:slot代表执行攻击操作的时隙,actions则记录各类攻击策略,用于明确每条消息需要延迟的具体时长,以及针对拜占庭验证节点需修改的消息内容。该策略规范格式文件包含两类JSON模板,分别用于时序调整与内容篡改。程序会根据具体攻击策略填充对应模板。单个SSF文件包含1个周期内全部时隙对应的攻击策略。

2. 策略执行器SE

SE主要包含两大组件:攻击调度器(AS)与拜占庭模拟器(BS)。攻击调度器包含两个子组件:策略转换器(ST)和指令分发器(ID)。ST会依据策略规范格式(SSF),解析对应的攻击策略,转换为以太坊实现代码库中可执行的代码。ID与BS交互,在攻击执行过程中向其下发进一步操作指令。BS会在自身客户端中预设一组注入点,运行时从ID获取对应指令,在各注入点执行指令,并将执行结果广播至网络。此外还搭建了策略池用于存储可执行代码,从而能够依据指令发起各类复杂攻击策略。

示例:攻击注入流程如下:①当拜占庭节点(BS)的探测点被触发时(触发位置为.BlockBeforeBroadcast),该探测点向指令调度器(ID)发送请求,同时将拜占庭模拟器的当前线程置为挂起状态。②指令调度器ID收到后续指令后,先解析请求,再检索策略池,判断是否需要为BlockBeforeBroadcast执行本地指令,存在两种结果:

  • 无需执行本地指令时,指令调度器直接向拜占庭节点返回远程空指令CMD_NULL;
  • 检索到对应本地指令时,指令调度器执行该本地指令(例如delayWithDuration),随后向BS下发远程指令。

指令执行完毕后,③BS接收来自ID的指令.④BS执行远程指令,恢复此前挂起的线程。

3. 攻击优化器SO

论文将研究问题形式化为延迟奖励强化学习任务(delayed-reward reinforcement learning task),并采用PPO算法训练actor-critic模型,奖励函数为诚实验证节点获得的奖励与其fair share之间的差值。在以太坊权益证明(PoS)协议中,验证节点的奖励会随时间变化,且仅当若干区块完成最终确认后才能确定。即时反馈会产生误导,甚至起到反作用,因此无法在每一步计算奖励。因此选用actor-critic框架:其中actor网络学习动作选择策略,critic网络预估状态价值,以支撑基于优势函数的学习。此外还在网络结构中增设循环记忆模块(长短期记忆网络LSTM),建立动作与未来才可观测结果之间的关联。LSTM能够保存多slot攻击序列的时序上下文信息,追踪proposer职责、链权重以及证明进度。PPO算法通过约束策略更新幅度、保障高效学习,进一步提升训练过程的稳定性。

在此系统中,Agent为掌控所有拜占庭验证节点的对手。环境则模拟最简以太坊2.0区块链系统,实现与验证节点奖励相关的核心组件。具体而言,重点研究两大模块:Hybrid LMD-GHOST分叉选择规则与Casper FFG确定性工具。从概念层面来说,环境代表由所有诚实验证节点构成的以太坊2.0网络,并规定区块提议、证明发送以及奖励计算的相关规则。

我们对以太坊权益证明协议的运行流程进行抽象处理,以实现与RL框架的融合。首先,将以太坊中的slot概念映射为RL中的时间步step。该协议不再基于时间驱动,而是基于动作驱动,每一个RL step对应一个完整slot。在每一步,环境从agent收到一个动作,更新链的内部状态,并根据上文给出的规范计算输出结果。其次,针对对环境进行攻击定制化修改。通过这些改动,我们能够重点分析调整后的攻击策略如何优化输出结果。

状态与动作空间依据各攻击实例进行定义。总之,SO算法能够提升自私挖矿攻击与阶梯式二代攻击的成功率,减少所需的质押筹码,并提升收益。

BunnyFinder可适配采用提案-投票propose-vote机制的其他区块链。具体而言,只需重新定义攻击空间即可调整SG模块,而SE模块仅需更新注入节点;这类修改需要额外的工程开发工作量。SA模块与SO模块不依赖特定区块链,通用性更强。

三、结果

(一)实验设置

  • 硬件环境:AWS EC2,最多3个c5.4xlarge实例(每个16 vCPU + 32GB内存)
  • 测试网络:本地部署Ethereum 2.0测试网,含beacon节点、execution节点、validator节点三层架构,部分beacon节点被修改为拜占庭节点
  • 实验实现:Prysm和Teku两种以太坊实现
  • 优化措施:将slot时间从12秒缩短至3秒,单次实验时间从19分钟降至4.8分钟,不影响结果正确性
  • 代码开源https://doi.org/10.5281/zenodo.17042549

(二)评估与验证流程

  1. 攻击实例生成与执行:SG生成9,354个攻击实例,SE执行全部实例,实验持续约145小时
  2. 激励缺陷识别 :收集执行日志,通过SQL查询提取验证节点激励数据,按四类Metric分类。在9,354个实例中,3,121个被认定为激励缺陷(占比约33.4%)
  3. 人工分析:每个Metric类别中选取前20%最有利可图的实例,人工分析攻击策略。相似策略归为同类,每类选最优策略应用RL优化后重新评估。共人工评估300个实例,识别出3个新激励缺陷

激励缺陷分布(Table II)

编号 Metric类别 数量 占比 攻击示例
1 Metric-I 2,586 82.86% 自私挖矿攻击
2 Metric-III 2 0.64% 阶梯攻击-II
3 Metric-II 466 17.07% 惨胜攻击
4 Metric-IV 67 --- ---

(三)实验结果

1. 复现5个已知重组攻击

成功复现以下已知攻击(部分在Deneb升级后已缓解,在旧版本上复现):

攻击名称 缺陷类型 策略 诚实节点 拜占庭节点 实现版本
事前重组攻击 I 区块, head 奖励减少 获奖 Prysm 5.2.0; Teku 25.6.0
三明治重组攻击 I 区块, head, 修改parent 奖励减少 获奖 Prysm 5.2.0; Teku 25.6.0
未实现证明攻击 III parent 受罚 获奖 Prysm 4.0.5
证明扣留攻击 III 区块, head 受罚 获奖 Prysm 4.0.5
阶梯攻击 III 区块, source, h, target, 证明 受罚 获奖 Prysm 4.0.5
2. 发现3个新激励缺陷攻击

(1)自私挖矿攻击 --- 以太坊PoS首个已知自私挖矿攻击

  • 攻击机制:拜占庭验证者扣留区块,在最优时机释放,使延迟区块积累更大"权重"(更多证明),在HLMD-GHOST分叉选择规则下替换诚实节点的区块
  • 影响:拜占庭与诚实节点均获奖,但诚实节点奖励低于公平份额(Metric-I)
  • 最低质押要求 :仅需控制**13.4%**的质押份额即可获利(β>2/15\beta > 2/15β>2/15)
  • RL优化后:成功率近100%,质押需求降低超过20%
  • 缓解状态 :已在Prysm v4.0.6中通过REORG_PARENT_WEIGHT_THRESHOLD参数修复
    (2)阶梯攻击-II --- 阶梯攻击的变体
  • 攻击机制:需要两个连续epoch的第一个slot的proposer为拜占庭节点;对手延迟slot 0的区块4秒,使诚实节点证明的target不同;所有拜占庭证明永久延迟;在epoch末尾释放包含拜占庭证明的区块实现justification
  • 影响:诚实节点受罚而拜占庭节点仍获奖(Metric-III)
  • 质押要求:33.3%质押份额,攻击概率1/9
  • 与阶梯攻击区别:不能连续发起,但若对手控制33%质押并在每次可发起时发起,所有诚实节点将在对应epoch受罚
  • 缓解状态 :以太坊对阶梯攻击的缓解方案无法完全消除此变体;目前未被修复
    (3)惨胜攻击 --- 双方均受罚但诚实节点损失更大
  • 攻击机制:拜占庭验证者永久延迟所有证明,降低参与率;诚实节点奖励低于公平份额甚至受罚,拜占庭节点也受罚
  • 基础版本:诚实节点约获公平份额67%,拜占庭损失率约180%(不够有效)
  • 最有效实例:拜占庭损失5.1%激励,诚实节点损失19.9%
  • RL优化后:有效攻击比例从60.78%提升至70.78%
  • 缓解状态:未被修复

RL优化效果对比(Table III,以阶梯攻击-II为例)

策略 诚实节点收益 拜占庭收益 拜占庭优势(BA) 成功率(ASR)
默认策略 -48.1 -34.7 13.4 35.0%
RL优化策略 -56.1 -28.9 27.2 97.0%
  • BA Rate ≈ 2.03(收益翻倍),成功率从35%提升至97%
  • 诚实节点奖励最多比默认策略低30%
  • 对手成本从46.1%降至40.1%(降低13%)
3. 发现2个Prysm实现缺陷

(1)同步模块死锁

  • 触发条件:发起阶梯攻击-II时,所有诚实节点认为自己落后,查询同步模块,但无节点能完成同步
  • 根因:同步模块的实现漏洞(仅Prysm/Golang实现存在,Teku因同步模块实现方式不同不受影响)
  • 状态:已确认,未修复
    (2)日志错误
  • 表现:reorg日志在不存在的重组发生时被触发,产生虚假重组日志
  • 影响:不影响协议正确性,但影响状态分析器组件,可能增加开发者维护复杂度
  • 状态:已确认并修复
4. 漏洞披露状态

所有发现均已通过公开渠道、会议和邮件向以太坊基金会披露并获得确认:

漏洞 已报告 已确认 已修复 披露渠道
自私挖矿 社区网站
阶梯攻击-II 社区网站
惨胜攻击 会议报告
同步模块问题 社区网站
日志错误 会议、邮件
5. 总结

BunnyFinder框架通过模拟9,354个攻击实例,其中32.9%属于激励缺陷,成功覆盖5个已知攻击并发现3个新攻击和2个实现缺陷。新攻击均已验证并报告,部分已被以太坊基金会确认并促成协议版本更新。

相关推荐
阿拉斯攀登2 小时前
Embedding 模型选择与领域适配
人工智能·chatgpt·embedding·agent·ai编程·loop·rag
饼干哥哥2 小时前
用爱马仕多Agent组建跨境电商公司,出海赚美金
openai·agent·ai编程
双缝观察者5 小时前
USDT中电子数据会计鉴定和链上资金认定
区块链
SelectDB5 小时前
阶跃星辰 Agent 可观测实践:为什么 Trace 数据底座选择 SelectDB?
大数据·数据库·agent
i晟5 小时前
Hermes Agent 自进化架构深度解析(二):记忆系统——2200 字符如何成为自我整理的引擎
agent
‿hhh5 小时前
Dify核心模块详解:从文本生成到智能体
人工智能·学习·microsoft·agent·上下文·记忆
leeyi5 小时前
自定义 Workflow:Eino 之上的 Agent 编排
agent·workflow·工作流引擎
不好听6136 小时前
从踩坑到封装:手把手教你写一个 Claude Code Skill
llm·agent
不好听6136 小时前
别再把 Prompt 当一次性筷子用了:Claude Code Skills 入门指南
llm·agent