售前客服二维码
文章均源于网络收集编辑侵删
提示:仅接受技术开发咨询!
2020年11月17日,以太网的DeFi项目OUSD被闪电贷款袭击。作者:孔@慢雾安全队
根据慢雾区的信息,2020年11月17日,以太网的DeFi项目OUSD遭到闪电贷款袭击。慢雾安全团队会在第一时间跟进并做相关分析。下面简单分析一下慢雾安保团队的攻击。稍后将发布对攻击过程的详细分析。如果你感兴趣的话,请留意一下。
2.当攻击者调用OUSD金库的造币功能时,金库会进行一次返利来分配之前积累的奖励,然后将攻击者合同中的750万USDT转移到OUSD金库。此时,OUSD合同将向攻击合同投出相同金额的750万OUSD代币,并最终通过分配来结算当前收入。
3.在攻击者转入750万之前,Vault的价值约为7018138美元。在转移到750万USDT后,攻击者将占保险库总价值的一半以上。
4.随后,攻击契约使用mintMultiple函数来传递DAI契约地址和攻击契约的地址。同样的,进行一次返利,将之前积累的收益进行分配(包括之前转移的USDT部分),然后将攻击合同的2050万DAI通过transferFrom转移到Vault。然后会调用攻击契约的transferFrom函数,攻击者在攻击契约的transferFrom函数中构造再次调用Vault契约的mint函数的逻辑,实现再入攻击。
5.前一步转账到2050万DAI后,通过攻击合同的transferFrom函数,再次调用Vault的mint函数。由于即将到来的2000 USDT在重新进入时满足是否调用rebase的条件,所以rebase将被执行一次,并且只有当Vault中的资产总值与OUSD的硬币总值之间存在差异时,才能触发rebase。按照原来的业务场景,在收益分配结算后,改变Vault中资产的总价值,然后通过rebase进行资产分配。然而,由于重新进入,铸币操作没有通过oUSD.mint先进行,攻击者已经先将2050万DAI转入金库,所以金库中的资产总值仍然增加,导致合同中的资产总值大于oUSD的铸币总值。因此,保险公司将把增加的2050万戴作为收入。第三步,由于攻击者的资产占金库总价值的一半以上,攻击者将凭空获得价值1025万以上的收益分配。
6.然后通过oUSD.mint投2000 OUSD,再入时2000 USDT的收入通过allocate结算(从上一步可以看出,攻击合同中导入的2000 USDT只是为了满足调用rebase的条件,触发收入分配)。重返后,之前转移的相当于2050万DAI的OUSD代币仍将通过oUSD.mint进行铸造
7.最终,金库的总价值约为3501万美元,但攻击者拥有的价值超过3825万美元,因此攻击者使用大部分OUSD来赎回金库,基本上清空了金库,而OUSD的其余部分通过Uniswap和Sushiswap的OUSD-USDT池将OUSD变成了USDT,以增加收入。
文章均源于网络收集编辑侵删
提示:仅接受技术开发咨询!