稳定币:复盘:OUSD遭“经典重入攻击”损失770万美元,黑客凭什么屡屡得逞?_DAI

作者:PeckShield

原标题:OUSD遭“经典重入攻击”损失770万美元DeFi安全亟待解决

近日,PeckShield监控到DeFi协议OriginProtocol稳定币OUSD遭到攻击,攻击者利用在衍生品平台dYdX的闪电贷进行了重入攻击(Re-entrancyattack),造成价值770万美元的ETH和DAI的损失。

重入攻击是以太坊智能合约上最经典的攻击手段之一,著名的theDAO被盗事件就是攻击者运用重入攻击导致以太坊硬分叉,损失价值5000万美元以太币。

自今年4月起,DeFi项目频遭重入攻击。4月18日,黑客利用Uniswap和ERC777标准的兼容性问题缺陷实施重入攻击;4月19日,Lendf.Me也遭到类似重入攻击;11月14日,黑客利用Akropolis?项目的SavingsModule合约在处理用户存储资产时存在的某种缺陷连续实施了17次重入攻击,损失203万枚DAI。?

北京时间2020年11月17日,PeckShield监控到稳定币OUSD遭到重入攻击。OUSD是OriginProtocol推出的一种与美元挂钩的ERC-20稳定币,用户可通过将基础稳定币存入Origin智能合约来铸造OUSD稳定币,之后该协议会将基础稳定币投资于多个DeFi协议并进行收益耕作,为OUSD持有者赚取回报。

重入攻击重现凭空创造2050万枚OUSD

PeckShield?通过追踪和分析发现,首先,攻击者从dYdX闪电贷贷出70,000枚ETH;

随后,在UniswapV2中先将17,500枚ETH转换为785万枚USDT,再将所贷剩余的52,500枚ETH?转换为2099万枚DAI;

接下来,攻击者分四次铸造OUSD稳定币:

第一次通过mint()函数铸造OUSD时,攻击者确实在Origin智能合约中存放了750万枚USDT,并获得750万枚OUSD;

第二次通过mintMultiple()多种稳定币函数铸造OUSD时,攻击者在Origin智能合约中存放了2050万枚DAI和0枚假“稳定币”,并在此步骤中通过重入攻击来攻击合约。攻击者将2050万枚DAI和0枚假“稳定币”存入VaultCore中,此时智能合约收到2050万枚DAI,在尝试接收0枚假“稳定币”时,攻击者利用恶意合约进行劫持,在智能合约正常启动铸造2050万枚OUSD之前,调用mint()函数,先恶意增发了2050万枚OUSD,此次恶意增发由VaultCore合约调用rebase()函数实施。

值得注意的是,为顺利实施劫持,攻击者在上述mint()函数调用时,真金白银地存入了2,000枚USDT,同时获得第三次铸币2,000枚OUSD。随后,调用oUSD.mint()函数第四次铸造2050万枚OUSD。

rebase指代币供应量弹性调整过程,即对代币供应量进行“重新设定”。在DeFi领域有一类代币拥有弹性供应量机制,即每个代币持有用户的钱包余额和代币总量会根据此代币价格的变化而等比例变动。此时,攻击者共获得2800.2万枚OUSD,包括抵押的750万枚USDT、2050万枚DAI和2000枚USDT。由于调用rebase()函数,攻击者所获得的OUSD总计上涨至33,269,000枚。?

最后,攻击者先用所获得的33,269,000枚OUSD赎回1950万枚DAI、940万枚USDT、390万枚USDC;再在Uniswap中将1045万枚USDT兑换为22,898枚ETH,将390万枚USDC兑换为8,305枚ETH,将190万枚DAI兑换为47,976枚ETH,共计79,179枚ETH,并将其中70,000枚ETH归还到dYdX闪电贷中。

据PeckShield统计,攻击者在此次攻击中共计获利11,809枚ETH和2,249,821枚DAI,合计770万美元。

对于次攻击事件,OriginProtocol官方回应称,正在积极采取措施,以期收回资金。

随着DeFi生态的蓬勃发展,其中隐藏的安全问题也逐渐凸显,由于DeFi相关项目与用户资产紧密相连,其安全问题亟待解决。

对此,PeckShield相关负责人表示:“此类重入攻击的发生主要是由于合约没有对用户存储的Token进行白名单校验。DeFi是由多个智能合约和应用所组成的’积木组合’,其整体安全性环环相扣,平台方不仅要确保在产品上线前有过硬的代码审计和漏洞排查,还要在不同产品做业务组合时考虑因各自不同业务逻辑而潜在的系统性风控问题。”

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

大币网

[0:0ms0-6:531ms