USD:闪电贷 重入攻击,慢雾简析 OUSD 损失 700 万美金攻击流程

此次攻击关键在于调用外部合约造成的重入问题与Vault的rebase机制相结合,攻击者可以通过重入来凭空获得巨额收益分配。

原文标题:《闪电贷重入攻击,OUSD损失700万美金技术简析》撰文:慢雾安全团队

据慢雾区情报,2020年11月17日,以太坊DeFi项目OUSD遭受闪电贷攻击。慢雾安全团队于第一时间跟进并进行相关分析。以下是慢雾安全团队针对本次攻击的简要分析。攻击过程详细分析会在稍后发布。如有兴趣可保持持续关注。

背景提要

OriginDollar(OUSD)由OriginProtocol(OUSD)创建,是一种新型的ERC-20稳定币,当它仍然放在钱包里时,会自动从DeFi协议中获得有竞争力的收益。OUSD由USDT、USDC和DAI等其他稳定币的1:1支持。

两名俄罗斯人因从加密矿工窃取86枚比特币而受审:金色财经报道,俄罗斯托木斯克市的两名居民将因“大规模抢劫”而受审,罪名是从当地一名加密货币矿工处盗窃加密货币。他们当时从他那里勒索了价值超过3.6亿卢布(超过480万美元)的加密货币。两人强迫受害者在加密货币交易所登录账户,并从一个有90BTC的钱包中向他们转账86BTC。他们将面临最高15年的监禁和最高100万卢布的罚款。[2023/2/16 12:11:07]

攻击流程简析

1.攻击者使用dydx闪电贷借出70000个ETH,随后通过Uniswap将其兑换为USDT和DAI。

2.攻击者调用OUSDVault的mint函数,Vault会先进行一次rebase将之前积累的奖励进行分配,随后将750万USDT从攻击者合约转入OUSDVault中。此时OUSD合约会铸出等量的750万OUSD代币给攻击合约,最后通过allocate来结算当前的收益。

58学院直播间:Filecoin主网上线再次延迟 为矿工提供了更多准备时间:今晚,58学院第十期AMA《关于Filecoin,玉玲小姐姐有话说》邀请到了ChainUP VP 、金色算力云市场负责人陈玉玲做客直播间。玉玲表示,Filecoin今年上线的预期较好,使得整个市场呈现出了对于Filecoin算力的购买热情,且很多交易所也上了基于Filecoin的期货币。Filecoin头矿机制也造成了较高的噱头和关注度。虽然Filecoin延期对市场情绪确实会造成影响,但是对于其矿工来说,延期提供了更多的准备时间,以便确保主网上线后能稳定运行。据悉,58学院直播间本月将主打“女性视角下的区块链”。[2020/8/13]

3.在攻击者转入750万之前,Vault的价值约为7018138美元。攻击者转入750万USDT后将占Vault总价值的一半以上。

Filecoin开发人员:大矿工测试竞赛中 如果伪造地址将无法获得奖励:7月22日,在北京时间9:00开始的Filecoin矿工社区电话会议上,Filecoin开发人员表示,在Space Race中,中国社区的矿工需要VPN才能参与竞赛,并且需要验证矿工所在地区。如果矿工伪造其所在地区地址,将无法获得奖励。[2020/7/22]

4.随后攻击合约利用mintMultiple函数传入DAI合约地址与攻击合约的地址,同样是先进行一次rebase,将之前累计的收益进行分配(包含先前转入的750万USDT部分),再通过transferFrom先将攻击合约的2050万DAI转入Vault中。随后将调用攻击合约的transferFrom函数,攻击者在攻击合约的transferFrom函数中构造再次调用Vault合约mint函数的逻辑来实现重入攻击。

前BTC矿工偶然发现价值800万美元隐藏加密货币 并在崩盘前出售:一名前比特币矿工偶然发现了一个装有1000枚比特币的旧钱包。3月10日,一名自称“菜鸟”的用户在Bitcointalk论坛上发布了一个帖子,在“长时间中断”后首次回归加密,寻求获取旧比特币储备的建议。这位名为“whoamisoon”的用户声称,“很久以前”就使用GPU挖掘了一些比特币,最近还在USB存储设备上找到了wallet.dat文件。这位前矿工寻求有关如何出售比特币的建议,还询问他们是否在钱包中持有相同数量的BCH,以及他们如何能够出售BCH。当天晚些时候,在2010年8月24日开采出的1000枚比特币被确认在比特币区块链上移动,这使得许多人猜测这些币可能属于whoamisoon。这些币似乎转移至Coinbase交易所。3月12日,这名用户回来感谢帮助他实现比特币奖金的论坛成员,他说:“谢谢大家的建议。总的来说,这是一次伟大的回归,也是最受欢迎的一次。坚持下去,我能看到它也能帮助那些和我一样的人。” 该帖子暗示,whoamisoon可能在3月13日之前就已经平仓了,这意味着他们可能在7500美元到8000美元的价格范围内兑现,相当于750万美元到800万美元。(Cointelegraph)[2020/3/14]

5.在上一步骤中转入2050万DAI后通过攻击合约的transferFrom函数再次调用Vault的mint函数。由于重入时传入2000USDT符合判断是否调用rebase的条件,此时将进行一次rebase,而由于rebase需要Vault中的资产总价值和OUSD的总铸币数有差值才能触发。按照原本的业务场景是进行allocate结算收益后改变Vault中的资产总价值然后通过rebase进行分配。而由于重入原因并没有先通过oUSD.mint进行铸币操作,且攻击者已先将2050万的DAI转入Vault中,所以Vault中的资产总价值仍然增加了,导致合约中的资产总价值大于OUSD的总铸币量。因此Vault会将增加的2050万DAI当成收益部分进行rebase分配。在步骤3中由于攻击者资产已占Vault总价值的一半以上,所以此时攻击者将凭空获得超过价值1025万的收益分配。

6.随后将通过oUSD.mint铸出2000OUSD,并通过allocate结算重入时2000USDT的收益(从上一步骤可以看出攻击合约传入的2000USDT只是为了满足调用rebase的条件,触发收益分配而已)。重入结束后仍将通过oUSD.mint铸出之前转入的2050万DAI等值的OUSD代币。

7.最后Vault的总价值约为3501万美元,但攻击者所拥有的价值超过3825万美元,因此攻击者用大部分的OUSD去Vault进行赎回操作,将Vault基本提空,而其余的OUSD是通过Uniswap和Sushiswap的OUSD-USDT池将OUSD换成USDT来增加收益。

总结

此次攻击关键在于调用外部合约造成的重入问题与Vault的rebase收益分配机制相结合,导致攻击者可以通过重入来凭空获得巨额的收益分配。针对此类情况,慢雾安全团队建议对传入资产进行检查后,对不在白名单内的资产直接进行回滚,并使用防重入锁以避免重入攻击。

相关链接:

参考攻击交易:0xe1c76241dda7c5fcf1988454c621142495640e708e3f8377982f55f8cf2a8401

Uniswap

Uniswap

Uniswap一种简单的无代币交换协议,被称为去中心化的Shapeshift或者Bancor,已经在主网上启动。用Vyper写作,Gas消耗奇低无比。UniswapUniswapUniswapUniswapUniswapUNI查看更多OriginProtocol

郑重声明: 本文版权归原作者所有, 转载文章仅为传播更多信息之目的, 如作者信息标记有误, 请第一时间联系我们修改或删除, 多谢。

链链资讯

[0:15ms0-4:582ms