剖析1.28亿美元Balancer资金池30分钟被盗事件的技术细节

本文深入分析了2025年Balancer遭受的1.28亿美元攻击事件,详细解析了漏洞成因、攻击流程和技术细节,包括upscaleArray函数精度错误、批量交换操作和内部余额机制被利用等关键技术要点。

检查点分析:30分钟内剖析1.28亿美元Balancer资金池被盗事件

2025年11月3日凌晨,Check Point Research的区块链威胁监控系统在以太坊主网上标记了一个可疑模式。该警报源于Balancer V2的Vault合约,很快揭示了迄今为止最具破坏性的DeFi漏洞之一。

在防御者能够干预之前,攻击者已从Balancer ComposableStablePool合约中系统性地抽走了1.2864亿美元,目标跨越六个不同的区块链网络——全部过程不到半小时。

漏洞核心:Balancer算术逻辑中的微妙缺陷

此次漏洞的核心隐藏在Balancer算术逻辑深处的一个微妙但关键的安全问题。Balancer V2协议将所有资金池代币集中在一个"Vault"中,与管理交换和其他流动性操作的智能合约逻辑隔离。

虽然这优化了Gas使用和跨池功能,但也意味着核心资金池数学中的单个漏洞可能会波及影响每个稳定池——这一场景以惊人的效率变成了现实。

主要漏洞存在于upscaleArray函数中,该函数在交换和余额缩放期间,处理接近最小边界(约8-9 wei)的值时会产生显著精度错误。

由于Solidity的整数除法总是向下取整,在这种超低粒度下的重复操作会在每次计算中累积高达10%的相对误差。当这种"微交换"在快速原子批处理中被精心编排时,复合误差会破坏支撑Balancer池代币(BPT)定价的不变计算。

攻击自动化:从部署到资金提取

攻击者没有手动操作,而是部署了一个为自动化设计的利用合约。该合约的构造函数在部署后的瞬间执行了超过65个批量交换操作。

每个微交换都将资金池余额推向精度损失阈值,然后将资金池数学困在不断增长的计算错误循环中。

漏洞利用代码路径

攻击的关键:人为压低BPT价格,然后以人为压低的价值大量收购BPT,立即在一系列精确的套利周期中将其兑换为完整的底层资产价值。

攻击自动化:从部署到提取

每次batchSwap中都通过精心设计的三阶段模式展开攻击:

  • 边界调整:将大量BPT转入转出,强制将池代币推向高风险取整阈值
  • 触发阶段:通过小额交换利用取整错误,使精度损失在资金池定价规则中级联
  • 提取阶段:购买被低估的BPT并立即赎回底层代币,将价格差异作为利润收入囊中

内部机制被利用

在内部,Balancer的"内部余额"记账功能成为了不知情的帮凶。利用合约没有立即将代币提取到外部地址,而是在构造函数阶段首先在其Vault余额内累积被盗资金。

随后,这些资金通过自定义函数外部提取,将资产输送到攻击者的最终接收地址。

区块链分析将此次操作与以下合约和地址关联:

  • 利用部署者:0x506D1f9EFe24f0d47853aDca907EB8d89AE03207
  • 攻击者合约:0x54B53503c0e2173Df29f8da735fBd45Ee8aBa30d
  • 最终接收者:0xAa760D53541d8390074c61DEFeaba314675b8e3f

整个操作的规模在两个主要阶段中显现:初始构造函数调用通过65个交换周期策划了盗窃,耗空资金池并在内部余额中累积被盗代币。随后的提取函数然后将数千个WETH、osETH和wstETH从Vault转移到攻击者控制的外部钱包。

1.28亿美元计算错误的教训

这一事件鲜明地说明了DeFi协议中数学边界情况的威胁。虽然这种取整和精度损失错误在常规使用中通常看似可忽略,但当与对抗性交易工程和链上自动化相结合时,它们可能被放大成灾难性的利用。

对于DeFi开发者和审计者来说,Balancer攻击清楚地表明,安全不能仅仅依赖于关注原子正确性的测试。安全协议设计的挑战和未来需要对抗性建模,预测细微漏洞在持续自动化攻击下可能如何扩展。只有这样,行业才有望防止温和的算术缺陷升级为百万美元的危机。

comments powered by Disqus
使用 Hugo 构建
主题 StackJimmy 设计