20230827 Balancer攻击事件,价格操纵与精度丢失,这经典组合拳是何原因?
摘要:攻击背景介绍 2023.08.27(没错是 2023 不是 2025),Balancer V2 的稳定币池遭到了黑客攻击,导致多条链上价值约 368k 美元的资产被盗。黑客利用 rounding down(精度丢失)问题操纵 bb-a-US
攻击背景介绍
2023.08.27(没错是 2023 不是 2025),Balancer V2 的稳定币池遭到了黑客攻击,导致多条链上价值约 368k 美元的资产被盗。黑客利用 rounding down(精度丢失)问题操纵 bb-a-USDC 的价格,从稳定币池中兑换出大量资产。
攻击交易之一:https://app.blocksec.com/explorer/tx/eth/0x2a027c8b915c3737942f512fc5d26fd15752d0332353b3059de771a35a606c2d
相关合约:
Vault:https://etherscan.io/address/0xba12222222228d8ba445958a75a0704d566bf2c8
bb-a-USDC:https://etherscan.io/address/0x9210F1204b5a24742Eba12f710636D76240dF3d0
bb-a-USD:https://etherscan.io/address/0x7b50775383d3d6f0215a8f290f2c9e2eebbeceb2
项目背景介绍
Balancer 是一个基于以太坊的去中心化自动做市商 (AMM) 协议,能够集成任意数量的互换曲线和资金池类型。
本次攻击发生在 Balancer V2 ,涉及两种 Pool:
Balancer Pool Token(BPT):https://docs.balancer.fi/concepts/core-concepts/balancer-pool-tokens.html
Linear Pools:https://docs-v2.balancer.fi/concepts/pools/linear.html
Stable Pools:https://docs-v2.balancer.fi/concepts/pools/composable-stable.html
BPT
BPT 代表 Balancer Pool 的代币份额。当用户向 Balancer 池存入代币增加流动性时,会收到流动性池中所占 share 的 BPT。
Linear Pools
Linear Pools 适用于某种代币及其已知(计算或查询得到的)汇率的收益代币之间的兑换。例如,Aave 的DAI和aDAI。为了激励用户维护池子保持一定比例的原生代币与收益代币,Linear Pools 设有目标范围,采用费用/奖励机制来激励套利者维持两种代币之间的理想比例(超出目标范围需支付费用,回到目标范围可获得奖励)。线性池的另一个关键特性是允许用户直接交易 BPT,无需加入或退出。
在本次攻击中的价格操纵环节涉及了一个由 USDC 和 Wrapped aUSDC 组成的 Linear Pool,这个池子的 BPT 为 bb-a-USDC。攻击者通过精度丢失问题操控并抬高 bb-a-USDC 的价格。
https://etherscan.io/address/0x9210F1204b5a24742Eba12f710636D76240dF3d0
Stable Pools
Stable Pools 专为接近等价或已知汇率的资产而设计,通过定制的 swap 逻辑,可以大幅提高同类资产互换和相关资产互换的资本效率。
以接近 1:1 的比例进行兑换的代币:例如两种相同货币的稳定币(例如:DAI、USDC、USDT),或合成资产(例如:renBTC、sBTC、WBTC)。
在本次攻击中涉及了一个由 [bb-a-USDT, bb-a-DAI, bb-a-USDC] 三种 BPT 组成的 Stable Pool,这个池子的 BPT 为 bb-a-USD。攻击者在抬高 bb-a-USDC 的价格后,利用 bb-a-USDC 兑换出超额的 bb-a-USDT 和 bb-a-DAI 完成获利。
https://etherscan.io/address/0x7b50775383d3d6f0215a8f290f2c9e2eebbeceb2
Trace 分析
攻击者通过 AAVE V3 闪电贷借出大量 USDC,然后在回调函数中通过 Balancer: Vault.batchSwap 进行攻击获利。最后归还闪电贷并转移资金。
重点分析 Balancer: Vault.batchSwap 中的操作,主要由 7 个 onSwap 操作和 repay 操作组成。
