USDT:狸猫换太子?慢雾拆解DODO被黑细节_USD

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

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

攻击细节分析

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

Aptos生态DeFi协议Thala Labs将推出原生AMM ThalaSwap:1月23日消息,Aptos生态DeFi协议 Thala Labs 宣布即将推出原生 AMM ThalaSwap,并将在未来几天公布启动计划、THL Token 经济学、路线图和即将推出的测试网等信息。

ThalaSwap旨在成为Aptos的核心流动性层,同时确保 Thala Labs 推出的超额抵押稳定币 MOD 在其 DeFi 生态系统中具有深度流动性。AMM 将支持三种不同类型的池:加权池、稳定池和流动性引导池(LBP)。ThalaSwap 上的池创建将是无需许可的,允许任何用户创建他们喜欢的多资产池。掉期费用虽然是固定的,但在不久的将来将成为可通过治理改变的参数。在发布时,所有 MOD 流动性及其相应的货币对都将在 ThalaSwap 上运行。[2023/1/23 11:26:54]

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

安永区块链负责人:2021年至少有一家金融机构将推出DeFi产品:近日,安永区块链负责人Paul Brody在接受采访时预测称,2021年至少有一家大型金融机构将推出DeFi产品,并直接服务于消费者群体。他称,大型机构可能对数字资产越来越感兴趣。同时,受监管的稳定币将成为一个更成熟的领域,将吸引机构投资者和大笔资金进入。他还补充说,智能合约测试、审计和安全性的提升,以及与受监管的稳定币合作,将助推机构推出DeFi产品。(CoinDesk )[2021/1/27 21:47:18]

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

聚币Jubi DeFi板块治理代币 JFI流动性挖矿上线:据官方消息,聚币Jubi DeFi在质押JT借贷挖矿JFI后,已于2020年9月30日19:00(UTC+8)正式推出JFI的流动性挖矿。用户在Uniswap上链接钱包,搜索JFI合约地址,授权并向JFI/USDT交易对注入流动性,即可获得挖矿JFI代币奖励。

JFI总发行量21,000,000枚,其中10万枚已空投给符合要求的JT持有者,90万枚已全额销毁,其余2000万枚中一半通过质押JT挖矿产生,另一半通过去中心化流动性挖矿产生。JFI作为Jubi DeFi板块的治理代币,将以聚币金融业务为价值依托,该板块业务的利润将实际为JFI价格赋能。[2020/9/30]

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