攻击描述
合约描述
- 黑客地址: 0x296e3345e3da85181ff279dd36e6054d73da3717
- 黑客部署的合约: 0x4f4e0f2cb72e718fc0433222768c57e823162152
- 攻击的交易: https://etherscan.io/tx/0xb5c8bd9430b6cc87a0e2fe110ece6bf527fa4f170a4bc8cd032f768fc5219838
资产流转明细
索引 | 动作 | 资金 | 说明 |
---|---|---|---|
1 | dYdX 借钱 | 10,000 ETH | —- |
2 | Compound 存钱 | 5,500 ETH | — |
3 | Compound 借钱 | 112 WBTC | — |
4 | Kyber Swap | 5,637 ETH | 换到 51.34 WBTC |
5 | dYdX 还钱 | Repay 10,000 | — |
该攻击可以分成 5 个不同的步骤:
- 闪电贷借以太币 (Flashloan Borrow)
- 以太币换 WBTC (Hoard)
- Margin Pump
- Dump
- Flashloan Repay。
接下来,本文将逐一拆分每个步骤。
第一步: 闪电贷借以太币 (Flashloan Borrow)
该步利用闪电贷的特性从 dYdX 中借出 10,000 个 ETH。
第二步: 以太币换 WBTC (Hoard)
攻击者将 5, 500 个 ETH 存入 Compound 作为抵押品,并借出 112 个 WBTC。
该步是正常 Compound 操作,而这些 WBTC 为第 4 步做准备。
第三步: Margin Pump
该攻击者利用 bZx 的保证金交易功能做空 ETH,这有利于 WBTC (如 sETHWBTCx5)。
攻击者还存入 1,300 个 ETH,发起 bZx 保证金交易。保证金交易利用 KyberSwap 将借入的 5637.623762 个 ETH 换成 51.345576 个 WBTC。值得注意的是,做空 ETH 是借入的 5 倍。该互换实际上将 1 个 WBTC 的转化率提高到 109.8 个 WETH,大约是正常转化率的三倍。 具体来说,为了完成这一交易,bZx 将订单转发给 KyberSwap, KyberSwap 随后会查询其外汇储备并找到最佳汇率。这一步骤实质上使 Uniswap 中的 WBTC 价格上涨了三倍。
需要注意的是,内置的完整性检查应该阻止该步骤的行为,因为这个检查会验证头寸在交换之后不会变成默认值。然而,当攻击发生时,这个检查并没有生效,稍后我们将在之智能合约 bug 部分检查详细信息。
在这一步之后,我们注意到攻击者控制的资产发生了以下变化。然而,这一步之后仍然没有产生收益。
第四步: Dump
随着 Uniswap 中 WBTC 的价格飙升,攻击者以 Uniswap 中的价格将借来的 112 WBTC 抛售。
该步骤将获得 6871.4127388702245 个 ETH 的回报,总的转化率为 1WBTC = 61.4WETH。
第五步: Flashloan Repay
利用 112 个 WBTC 转换的 6871.4127388702245 个 ETH,攻击者将归还 10,000 个 ETH 的 dYdX 闪电贷。 在此步骤后,我们重新计算资产明细。结果表明,攻击者获得了 71 个 ETH 的套利,再加上两个头寸,一个是 Compound (+5,500WETH/-112WBTC),另一个是 bZx (-4,337WETH/+51WBTC)。当 bZx 头寸处于默认状态时,Compound 头寸是非常有利可图的。显然,在攻击之后,攻击者马上开始安排支付 Compound 债务,归还 112WBTC 换回 5,500weth 抵押品。对于 bZx 头寸,因为它已经处于默认状态,所以攻击者没有表现出进一步的兴趣。
考虑到 1WBTC=38.5WETH (或 1WETH=0.025BTC) 的平均市场价格,攻击者可以用 4,300 个 ETH 兑换 112 个 WBTC。其结果是,加上之前的 71.4 个 ETH,攻击者大约获利 1,271 个 ETH,大约获利 355,880 美元(当时 ETH 价格约为 280 美金)。
攻击过程技术分析
相关连接
- https://www.coinvoice.cn/articles/10950
- https://peckshield.medium.com/bzx-hack-full-disclosure-with-detailed-profit-analysis-e6b1fa9b18fc
- https://www.defidaonews.com/article/556528
- https://k.sina.com.cn/article_1798777247_6b37299f01901rbib.html?from=tech
- https://www.theblock.co/linked/56134/defi-lending-protocol-bzx-exploited-a-portion-of-eth-lost
- https://www.tuoluo.cn/article/detail-9991719.html
- https://www.aicoin.com/article/106147.html
- https://foresightnews.pro/article/detail/2029
- https://smartbuilds.io/defi-flashloans-explained-uniswap-foundry/