Balancer V2攻击事件深度解析:复杂操纵引发逾1.2亿美元损失

21 小时前 24 区块链

11月3日,Balancer V2协议及其分叉项目在多条区块链上遭遇了一起高度复杂的攻击事件,导致超过1.2亿美元的严重资产损失。BlockSec团队在第一时间发出预警[1],并迅速给出了初步分析报告[2]。根据我们的调查,此次攻击的核心原因在于攻击者通过操纵不变量(invariant)扭曲了BPT(Balancer Pool Token,即流动性池的LP代币)的价格计算,从而利用一次精心设计的batchSwap操作从某个稳定池(stable pool)中获利。

背景知识

1. 缩放与取整

为了统一不同代币的小数位,Balancer合约采用了以下两种操作:

  • upscale:将余额与数额放大到统一的内部精度后再进行计算;

  • downscale:将结果缩回原生精度,并进行有方向的取整(例如输入端通常向上取整,确保池子不少收;输出路径则常向下截断)。

结论:在同一笔交易内,由于不同环节采用的取整方向不对称,在极小步反复执行时,会产生系统性微小偏差,为攻击埋下隐患。

2. D与BPT价格

本次攻击主要影响了Balancer V2协议中的Composable Stable Pool[3]以及其分叉协议。Stable Pool适用于那些预期能够保持接近1:1兑换比例(或在已知汇率下进行兑换)的资产,允许在不产生显著价格冲击的情况下进行大额兑换,从而大幅提升相似资产或相关资产之间的资金利用效率。

  • 该池采用Stable Math(基于Curve的StableSwap模型),不变式D代表池子的“虚拟总价值”。

  • BPT (Pool的LP Token) 价格近似为:

Balancer V2攻击事件初步分析

从上述公式可以看出,若能让D在账面上变小(即使实际资金未流失),就能让BPT价格变得更便宜。BPT代表的是流动性池的份额,用于计算撤出流动性时能获得多少池中储备资产。因此,如果攻击者能够获得更多BPT,最终在撤出流动性时便能获利。

攻击分析

以Arbitrum上的一笔攻击交易为例,batchSwap操作可分为三个阶段:

第一阶段:攻击者将BPT兑换为底层资产,以精确调整其中一种代币(cbETH)的余额至四舍五入边界的临界点(数量 = 9)。这一步为下一阶段的精度损失(precision loss)创造了条件。

第二阶段:攻击者使用精心构造的数量(= 8),在另一种底层资产(wstETH)与cbETH之间进行交换。由于在缩放代币数量时进行了向下取整(rounding down),计算得到的Δx略小(从8.918变为8),从而导致Δy被低估,并使不变量D(来源于Curve的StableSwap模型)变小。由于BPT价格 = D / totalSupply,BPT价格被人为压低。

Balancer V2攻击事件初步分析

第三阶段:攻击者将底层资产反向兑换回BPT,在恢复池内平衡的同时,利用被压低的BPT价格获利——获得更多的BPT代币。

最后,攻击者通过另一笔获利交易进行流动性撤回,从而利用多获得的BPT获取池中其他底层资产(cbETH和wstETH)完成获利。

攻击交易

https://app.blocksec.com/explorer/tx/arbitrum/0x7da32ebc615d0f29a24cacf9d18254bea3a2c730084c690ee40238b1d8b55773

获利交易

https://app.blocksec.com/explorer/tx/arbitrum/0x4e5be713d986bcf4afb2ba7362525622acf9c95310bd77cd5911e7ef12d871a9

参考文献:

[1] https://x.com/Phalcon_xyz/status/1985262010347696312

[2] https://x.com/Phalcon_xyz/status/1985302779263643915

[3] https://docs-v2.balancer.fi/concepts/pools/composable-stable.html

币币情登载此文出于传递更多信息之目的,并不意味着赞同其观点或证实其描述。文章内容仅供参考,不构成投资建议。投资者据此操作,风险自担。

交易平台最新公告查看更多>
成交额排行榜
  • 交易所
  • 币种
排名 交易所 成交额
1 币安网币安网 ¥9,961.45亿
2 欧易OKX欧易OKX ¥3,634.82亿
3 HTXHTX ¥702.93亿
4 CoinbaseCoinbase ¥234.55亿
5 大门大门 ¥2,532.90亿
6 BitgetBitget ¥1,619.33亿
7 BybitBybit ¥2,881.85亿
8 K网(Kraken)K网(Kraken) ¥121.31亿
9 双子星(Gemini)双子星(Gemini) ¥19.11亿
10 UpbitUpbit ¥165.65亿