USD:狸猫换太子——DODO 被黑分析

据消息,去中心化交易平台DODO的wCRES/USDTV2资金池被黑客攻击,转走价值近98万美元的wCRES和近114万美元的USDT。DODO表示,团队已下线相关资金池建池入口,该攻击仅影响DODOV2众筹池,除V2众筹池之外,其他资金池均安全;团队正在与安全公司合作调查,并努力挽回部分资金。更多后续消息请关注DODO官方社群公告。

慢雾安全团队在第一时间跟进并分析,下面将细节分析给大家参考。

Vitalik Buterin:在以太坊上重新质押时需谨慎:金色财经报道,以太坊联合创始人Vitalik Buterin表达了对以太坊共识机制超出其原始设计的过度复杂化的担忧,特别是在重签方面,重签是Eigen Layer等公司正在开发的一种机制,它扩大了以太坊验证者的责任,包括确保外部链的安全。他担心,重新锁定可能会引入影响网络安全的风险。Vitalik Buterin表示,在以太坊上重新质押时需谨慎。[2023/5/22 15:18:50]

攻击细节分析

通过查看本次攻击交易,我们可以发现整个攻击过程非常简单。攻击者先将FDO和FUSDT转入wCRES/USDT资金池中,然后通过资金池合约的flashLoan函数借出wCRES和USDT代币,并对资金池合约进行初始化操作。

数据:LSD协议Agility在过去24小时TVL增长近100%至4.5亿美元:4月18日消息,据DeFi Llama数据显示,LSD协议Agility在过去24小时TVL增长近100%至4.5亿美元。此外,Nansen数据显示,Agility stETH和frxETH质押池是Smartmoney存款人最热门的合约之一。[2023/4/18 14:10:25]

Gemini已向加拿大监管机构提交预注册文件:4月13日消息,Gemini已经向加拿大安大略省证券委员会(OSC)提交预注册承诺书,以寻求注册为受限制交易商,打算通过此举继续在加拿大运营。最近的加拿大证券法规要求进行此类注册。这些规定还意味着加密货币公司必须将加拿大客户的资金与外国用户的资金分开处理。此外,公司必须拒绝向加拿大居民提供某些服务。Gemini决定在加拿大注册意味着它将继续为该国的零售用户提供服务。根据Gemini的网站,其交易所目前在加拿大可用,支持涉及加元(CAD)和其他资产的交易对。(Cryptoslate)[2023/4/13 14:01:27]

为何存入FDO和FUSDT代币却能成功借出wCRES和USDT,并且初始化资金池合约呢?是因为资金池的闪电贷功能有漏洞吗?

普华永道:短时间内元宇宙相关企业进行 IPO 可能性较低:8月19日消息,普华永道发布2022年上半年中国内地科技、媒体及通信行业(TMT)企业首次公开募股(IPO)数据。近两年,元宇宙一直以来都是资本市场关注的焦点,对此普华永道中国内地媒体行业主管合伙人蔡智锋表示,虽然国内外互联网巨头均在元宇宙领域有所布局,但元宇宙行业依然处于一种摸索和发展期,鉴于目前相关政策的不确定性,短时间内元宇宙相关企业进行IPO可能性比较低。[2022/8/19 12:35:42]

接下来我们对flashLoan函数进行详细分析:

通过分析具体代码我们可以发现,在进行闪电贷时会先通过_transferBaseOut和_transferQuoteOut函数将资金转出,然后通过DVMFlashLoanCall函数进行具体外部逻辑调用,最后再对合约的资金进行检查。可以发现这是正常闪电贷功能,那么问题只能出在闪电贷时对外部逻辑的执行上。

通过分析闪电贷的外部逻辑调用,可以发现攻击者调用了wCRES/USDT资金池合约的init函数,并传入了FDO地址和FUSDT地址对资金池合约进行了初始化操作。

到这里我们就可以发现资金池合约可以被重新初始化。为了一探究竟,接下来我们对初始化函数进行具体的分析:

通过具体的代码我们可以发现,资金池合约的初始化函数并没有任何鉴权以及防止重复调用初始化的逻辑,这将导致任何人都可以对资金池合约的初始化函数进行调用并重新初始化合约。至此,我们可以得出本次攻击的完整攻击流程。

攻击流程

1、攻击者先创建FDO和FUSDT两个代币合约,然后向wCRES/USDT资金池存入FDO和FUSDT代币。

2、接下来攻击者调用wCRES/USDT资金池合约的flashLoan函数进行闪电贷,借出资金池中的wCRES与USDT代币。

3、由于wCRES/USDT资金池合约的init函数没有任何鉴权以及防止重复调用初始化的逻辑,攻击者通过闪电贷的外部逻辑执行功能调用了wCRES/USDT资金池合约的初始化函数,将资金池合约的代币对由wCRES/USDT替换为FDO/FUSDT。

4、由于资金池代币对被替换为FDO/FUSDT且攻击者在攻击开始时就将?FDO和FUSDT代币存入了资金池合约,因最终通过了闪电贷资金归还的余额检查而获利。

总结

本次攻击发生的主要原因在于资金池合约初始化函数没有任何鉴权以及防止重复调用初始化的限制,导致攻击者利用闪电贷将真币借出,然后通过重新对合约初始化将资金池代币对替换为攻击者创建的假币,从而绕过闪电贷资金归还检查将真币收入囊中。

参考攻击交易:

https://cn.etherscan.com/tx/0x395675b56370a9f5fe8b32badfa80043f5291443bd6c8273900476880fb5221e

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

金星链

[0:15ms0-1:58ms