约467万美元的损失!Ola Finance被攻击事件简析

2022年3月31日,成都链安链必应-区块链安全态势感知平台舆情监测显示,Ola Finance遭遇黑客攻击,损失约为467万美元,具体包括216,964.18 USDC、507,216.68 BUSD、200,000 fUSD、550.45 WETH、26.25 WBTC和1,240,000.00 FUSE,Ola Finance称将在几天内宣布受害者赔偿计划。成都链安技术团队对此事件进行了相关分析。

#1 分析如下

 

根据交易记录显示,攻击者利用主攻击合约C1(0x632942c9BeF1a1127353E1b99e817651e2390CFF)对应ola.finance系列合约进行攻击。

跟踪其主要调用过程和代码,发现ola.finance项目核心凭证代币使用了ERC677模块,如果转账的目标地址是合约,则会调用目标地址的Fallback函数,这便成为本次攻击点的切入点。

约467万美元的损失!Ola Finance被攻击事件简析

下面以

0x53666970d6137f9dad6d3ff7fab258ceb1ac4861d6c5d6a8ebd5a13e16fb3f8d攻击交易为例,分析攻击者的攻击流程:

1、攻击者利用C1合约创建攻击合约

C2(0xBcc8a610bd35C2981025Fe32a5aDc2FB9b6b3B01),并利用闪电贷借出515个WETH,然后将这部分WETH发送至C2合约。

2、C2合约利用步骤1获得的515WETH发送至合约

ola_oWETH(0x139Eb08579eec664d461f0B754c1F8B569044611)进行质押,以换取25,528.022 oWETH。

3、C2利用25,528.022oWETH作为保证金,向ola_oWBTC合约

(0x3882bA8bD0E8AbAf56F86e6744b103dAB6a9ba4C)借出20个WBTC,在转账时利用ERC677的转账函数进行重入,将属于自己的25,528.022oWETH和20WBTC转账至C1。

4、C1合约利用步骤3获取到的25,528.022oWETH在ola_oWETH合约上进行赎回,获取514.99WETH。

5、C1再次创建C3合约

(0x1B1d76C9AFd990080b950894E9f6230b151D0dE7),并将步骤3中获取到的20WBTC发送至C3合约。

6、C3合约重复步骤2、3的操作,利用20WBTC进行质押,并在borrow时再次利用重入获得100个WETH。

7、完成攻击,归还闪电贷516.648WETH(共获利98WETH和19.99WBTC)。

约467万美元的损失!Ola Finance被攻击事件简析

值得一提的是,前面所述流程是本次事件的首次攻击,并借助了闪电贷作为基础资金,而后续则是以本次获利后的资金作为基础资金,反复执行上述2-3步骤进行多次攻击,最终获利约为467万美金。

对此,成都链安团队建议:关注合约重入外,请务必注意代币的重入。

原创文章,作者:ShouMaHao,如若转载,请注明出处:http://www.shoumahao.com/5016.html