一、事件概览
在去中心化金融(DeFi)这一基于区块链运行的链上金融体系中,Balancer 作为核心流动性协议之一,于2025年11月3日发生大规模资金异常提取事件。攻击者围绕 Composable Stable Pools 的计算逻辑,利用 scaling math 中的舍入方向错误(rounding direction error),结合 batchSwap 的多路径交易能力,在短时间内反复执行复杂交换操作,逐步扭曲流动性池的内部状态,并在未触发有效防护机制的情况下完成资金转移,最终造成约 1.16 亿至 1.28 亿美元损失,波及主协议及多个 fork 项目,涉及 WETH、wstETH、osETH 等核心资产。
以2026年的视角回看,这起事件已经不再只是一次“漏洞利用”,而更接近一次对协议运行规则的系统性操控。攻击者没有突破权限边界,也未篡改合约代码,而是在既有机制内,通过精确构造交易路径,持续放大微小计算偏差,最终让系统在逻辑上接受了资金归属的转移。问题的关键不在于单一错误,而在于多个设计假设在对抗性环境中叠加后形成的结构性偏差。
如果用统一的银行系统类比来理解:
- Balancer Pool = 银行的资金池账户
- invariant = 银行账本的平衡规则
- batchSwap = 客户在银行内部进行复杂转账组合
- rounding error = 利息或汇率计算中的微小偏差
- internal balance = 银行内部记账账户
这起事件的关键在于:
攻击者并没有“入侵银行”,而是利用规则,让银行系统在逻辑上“承认”这笔钱属于他。
二、攻击路径:从“数学偏差”到“系统性抽水”
站在2026年回看,这次攻击可以被清晰地拆分为四个阶段,其本质不是单点漏洞利用,而是一个逐步放大的系统操控过程。
攻击起点来自 Composable Stable Pool 中的一个关键实现缺陷:在 _swapGivenOut(EXACT_OUT) 路径中,对输出资产进行 _upscale 时错误地使用了 FixedPoint.mulDown(向下舍入),而非应使用的 mulUp(向上舍入)。
这一舍入方向错误(rounding direction error)导致系统在计算所需输入金额时产生系统性低估,从而使 invariant 在特定路径下被持续压低,并为后续的组合利用提供了基础。该误差在单次计算中影响极小,但在特定路径下会形成稳定的价值偏移方向,并具备被重复利用的条件。
2. 利用放大:批量交换机制形成路径级套利能力
攻击者利用批量交换机制(batchSwap)的组合执行能力,将这一微小偏差转化为可持续放大的套利路径:
- 在单笔交易中执行多步骤交换
- 在多个流动性池之间构造循环路径
- 在每一步中稳定获取 rounding advantage
关键在于,这些操作本身属于协议设计允许的复杂交易能力,而 invariant 校验仅在局部生效,使得系统将这些路径视为“正常套利行为”。
最终结果是,攻击者能够在协议规则范围内,持续积累结构性收益。
3. 状态扭曲:人为制造系统性 deficit
随着循环操作的持续进行,流动性池逐渐进入一种“表面平衡、实际偏移”的状态:
- invariant 在局部仍然成立
- 资产分布逐步偏离初始平衡
- 系统内部形成隐性 deficit
这一阶段标志着系统安全假设开始失效,但仍未触发任何有效检测机制。
4. 收割阶段:internal balance 的合法提取
在完成状态操控后,攻击者通过 Vault 的 manageUserBalance:
- 将账面上“归属于自己”的资产转入 internal balance
- 再完成提取与转移
这一过程未涉及权限绕过,本质上是一次系统在规则内认可的提款行为。随后资金被拆分,并通过跨链桥及新部署合约进行分散处理。
三、资金路径与行为模式
资金流结构
- 初始资金(闪电贷或自有资金)进入池子
- 多轮 batchSwap 操作(数十至数百次)
- 不变量逐步偏移
- internal balance 累积
- 资金提取
- 跨链拆分与转移
行为特征
- 高频、结构化交易(非随机行为)
- 强脚本化执行(高度自动化)
- 多链分散(降低追踪难度)
多家分析机构基于行为模式认为,攻击者具备成熟 DeFi 攻击经验,可能属于专业化攻击组织,但目前尚无明确归因结论。
四、范式升级:从舍入漏洞到机制性利用
行业对该事件的复盘已经相对充分,但更关键的问题在于:
攻击的利用方式,正在从单点漏洞扩展为对系统规则的组合性操控。
1. 从 Bug Exploit → Economic Manipulation
- 传统攻击路径通常是:发现漏洞 → 绕过权限 → 直接获取资金
- 本次攻击:未突破权限 → 未篡改代码 → 完全利用既有规则
这意味着:代码层面可以是“正确的”,但系统层面仍然可能是“可被操控的”。
2. DeFi 的核心假设被挑战
Balancer V2 的设计隐含一个重要前提:参与者行为以理性套利为主,而非对抗性攻击。
但现实情况是:
- 攻击者是主动对抗系统的参与者
- 会组合多个机制构造最优攻击路径
- 会系统性利用规则边界
类比银行系统业务:这就像是系统假设客户只是正常交易,但现实中有人在专门设计规则套利路径。
3. invariant 不再是安全边界
过去,invariant 被视为核心安全保障;但此次事件表明:
- invariant 可以在多步操作中被逐步削弱
- 局部正确不等于整体安全
这意味着:安全边界不再是单一公式,而是整个执行路径与行为组合。
五、官方响应与效果评估
1. 有效性分析
Balancer 团队及生态方在事件后迅速采取措施,包括暂停受影响池、协调流动性撤出、修复 rounding 逻辑,以及推进 V3 架构改进。
这些措施在短期内有效,主要因为:
- 直接切断已知攻击路径
- 降低系统中可被利用的流动性规模
- 修复导致偏差累积的关键计算问题
从效果来看:
- 短期:有效阻止进一步损失,稳定市场预期
- 长期:为后续架构升级提供方向,尤其是在数学一致性与校验机制方面
2. 局限性分析
然而,这些措施更多是针对已暴露问题的修复,而非对机制本身的重构。
- 修复 rounding ≠ 修复机制
虽然消除了直接触发点,但 batchSwap 的组合利用空间仍然存在。 - invariant 校验仍是局部的
系统依旧以单步正确性为核心,难以防御路径级攻击。 - 缺乏行为级风控能力
协议仍缺乏对异常交易模式(如循环路径、高频套利)的识别能力。
总结来看: 当前响应解决了“这个漏洞”,但尚未覆盖“这一类攻击方式”。
六、防御建议
- 引入 Path-level Invariant 校验
在交易层面验证整个执行路径的净效果,防止多步合法操作累积异常结果。 - 强制 rounding 一致性
统一所有计算路径的舍入逻辑,从源头消除可被放大的偏差。 - 引入经济攻击仿真(Adversarial Simulation)
通过对抗性测试模拟极端攻击路径,提前发现机制风险。 - 限制复杂交易组合能力
对 batchSwap 的路径复杂度与执行深度设置约束,降低攻击可行性。 - 构建行为级风控系统
识别异常交易模式(如循环套利、高频路径),并实施动态限制。 - internal balance 提取隔离机制
对内部余额提取引入延迟或额外验证,阻断最终价值提取路径。
总结来看: 这些措施的核心在于,将安全边界从“代码正确性”扩展到“系统行为正确性”。在对抗性环境中,攻击者往往不会违反规则,而是组合利用规则,因此防御体系必须具备识别路径异常与行为异常的能力。
七、结论
Balancer V2 Exploit 不仅是一次大规模资金损失事件,更揭示了 DeFi 安全范式正在发生的变化。从表面看,这是一次由计算误差引发的攻击;但从本质上看,它暴露的是协议在对抗性环境中的结构性脆弱。
攻击者并未突破系统,而是通过构造路径,让系统在自身规则内逐步偏离安全状态,最终完成资金转移。这种方式表明,单纯依赖代码正确性已不足以保障安全,系统设计本身必须具备对抗性思维。
因此,未来 DeFi 安全的核心,将从“智能合约是否正确”转向“机制在对抗环境中是否稳定”。Balancer 事件,正是这一转变的典型案例。
References
- Certora – Breaking Down the Balancer Hack [Technical Analysis]
- SlowMist – When Small Flaws Collapse a Giant [Technical Analysis]
- Trail of Bits – Balancer Hack Analysis and Guidance [Incident Report]
- PeckShield – On-chain Alert Reports [On-chain Analysis]
- Cyvers – Real-time Threat Detection Reports [On-chain Analysis]
- Balancer Official X Postmortem [Incident Report]


