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

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

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

加密KOL “考古”:美SEC主席Gary Gensler曾表示3/4的加密货币不是证券:4月26日消息,Coinbase首席执行官Brian Armstrong转发加密KOL @ZK_shark推文,其中展示了美国证券交易委员会现任主席Gary Gensler在2018年麻省理工学院秋季研究生课堂上的一段发言,Gary Gensler当时表示,在美国和许多其他司法管辖区中,四分之三的加密货币不是证券,它只是一种商品,一种加密现金(cash crypto)。[2023/4/26 14:27:12]

攻击细节分析

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

Ripple CEO敦促美立法者处理SEC主席关于“现有证券法足以监管加密市场”的断言:3月31日消息,Ripple首席执行官Brad Garlinghouse敦促美国立法者处理证券交易委员会主席Gary Gensler最近的声明,他暗示现有的证券法足以监管加密货币市场。Garlinghouse的评论是对Gensler的观点的回应,Gensler认为SEC可以决定哪些数字资产符合证券的资格,立法是不必要的。在众议院拨款委员会听证会后,Gensler表示,现行证券法涵盖了加密市场中发生的大部分活动。他补充说,虽然国会可以采取行动进一步澄清,但他认为没有必要增加权力。

Garlinghouse则认为,这样的决定应该基于立法,而不是SEC主席的个人观点。(U.Today)[2023/3/31 13:37:25]

自11月23日以来,价值超1亿美元的LINK从币安转出:金色财经报道,据Lookonchain监测,自11月23日开始,一巨鲸地址(可能是机构)每天都收到来自币安的LINK,并分发到50个地址。据统计,这些地址从币安收到总计1430万枚LINK,总价值约1.076亿美元,平均持有成本约7.2美元。[2022/12/5 21:23:12]

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

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

持有至少100枚ETH的地址数量达17个月高点:金色财经报道,据Glassnode数据显示,持有至少100枚ETH的地址数量为45665个,达17个月高点。[2022/8/29 12:55:25]

通过分析具体代码我们可以发现,在进行闪电贷时会先通过_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:109ms0-0:853ms