学院 热点聚焦 文章

Hope.money (Hope Lend) 攻击事件分析

2023.10.22 oker

1、Txs

Original hack tx: https://etherscan.io/tx/0xa414de03bbf7baccea6b5c95af9ebfbed43b1c3151debd29673df979a0f4b0b0

Front-run tx: https://etherscan.io/tx/0x1a7ee0a7efc70ed7429edef069a1dd001fbff378748d91f17ab1876dc6d10392

2、Lost

Total ~527 Ether = 264 Ether gain + 263 Ether bribe

3、攻击分解

1、向空的WBTC池子deposit 2k WBTC, liquidity index = 1 Ray.

2、Flash loan 2k WBTC and repay ~2001.8 WBTC, 在callback 回调里,donate了2k WBTC, 并且withdraw 1999….WBTC, 池子剩余1 WEI hWBTC。

注:donation的目的主要是为了提供withdraw的资金。

3、重复2步骤,继续累积liquidityIndex,最后liquidityIndex=7560000001 Ray

liquidityIndex前后对比: 
Before: 1000000000000000000000000000
After:  7560000001000000000000000009655610336

4、利用操纵的liquidityIndex, 用1WEI hWBTC去借出大量其他资产,从而获利。

5、创建新攻击合约2,利用rayDiv里四舍五入 rounding up的特性,及1WEI 的hWBTC,重复deposit/withdraw去收回donation的WBTC。

备注:攻击者在deposit WBTC时,使得amountScaled略大于.5 就可得到1WEI hWBTC;withdraw WBTC时,使得amountScaled略小于1.5 就可只burn 1WEI hWBTC。

[(a0/1)+0.5] = 1WEI hWBTC = [(a1/1)+0.5] -> a1-a0: a0=[0.51]. a1: [1.4]

[1.01] = 1 = [1.9]

6、归拢资金。

4. 代码缺陷

1、flashloan会把flashloan的收入分享给各hWBTC holders,hWBTC supply当前为1 WEI,而flashloan income一直在累加,所以导致liquidityIndex被放大。

2、hToken 在mint/burn是采用rayDiv()计算hToken数量,因为rayDiv是四舍五入的,所以结合1WEI supply+很大的liquidityIndex,黑客可以巧妙利用这一特性通过不断mint/burn获利。

免责声明:OKLink学院仅提供信息参考,不构成任何投资建议。

相关推荐

hot-news