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

成都链安
企业专栏
热度: 17607

关注合约重入外,请务必注意代币的重入。

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称将在几天内宣布受害者赔偿计划。成都链安技术团队对此事件进行了相关分析。

WBTC


#1 分析如下


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


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

WBTC

下面以

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


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

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


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

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


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

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



WBTC

 

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


5、C1再次创建C3合约

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


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


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


WBTC


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


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

声明:本文为入驻“MarsBit 专栏”作者作品,不代表MarsBit官方立场。
转载请联系网页底部:内容合作栏目,邮件进行授权。授权后转载时请注明出处、作者和本文链接。未经许可擅自转载本站文章,将追究相关法律责任,侵权必究。
提示:投资有风险,入市须谨慎,本资讯不作为投资理财建议。
免责声明:本文不构成投资建议,用户应考虑本文中的任何意见、观点或结论是否符合其特定状况,及遵守所在国家和地区的相关法律法规。