据消息,去中心化交易平台DODO的wCRES/USDTV2资金池被黑客攻击,转走价值近98万美元的wCRES和近114万美元的USDT。DODO表示,团队已下线相关资金池建池入口,该攻击仅影响DODOV2众筹池,除V2众筹池之外,其他资金池均安全;团队正在与安全公司合作调查,并努力挽回部分资金。更多后续消息请关注DODO官方社群公告。
慢雾安全团队在第一时间跟进并分析,下面将细节分析给大家参考。
攻击细节分析
通过查看本次攻击交易,我们可以发现整个攻击过程非常简单。攻击者先将FDO和FUSDT转入wCRES/USDT资金池中,然后通过资金池合约的flashLoan函数借出wCRES和USDT代币,并对资金池合约进行初始化操作。
ENS主域名突破50万个:3月24日消息,据Dune Analytics最新数据显示,以太坊域名服务ENS主域名数量已突破50万个,本文撰写时达到500,880个,当前活跃ENS域名总量为2,769,381个,参与地址数量为671,665个。主域名(Primary Name)能让用户的以太坊地址指向一个ENS域名,帮助用户在使用以太坊帐户连接DApp时可以找到并显示ENS域名,该域名必须由用户自己设置,不会在注册时自动生成。另据NFTgo数据显示,截至目前ENS交易总额为2.1461亿美元,市值约为1.0032亿美元。[2023/3/24 13:25:00]
为何存入FDO和FUSDT代币却能成功借出wCRES和USDT,并且初始化资金池合约呢?是因为资金池的闪电贷功能有漏洞吗?
乌克兰连锁药店ANC Pharmacy支持加密货币支付:金色财经报道,乌克兰最大连锁药店之一ANC Pharmacy已与Binance Ukraine合作,通过非接触式加密支付服务Binance Pay推出加密货币支付。ANC Pharmacy周二宣布,从1月3日起,消费者在网上购买药品时可以进行即时支付。
据悉,AANC Pharmacy在乌克兰各地经营1000多家药房,并运营自己的在线药房服务。在基辅的药店将首先支持Binance Pay支付服务。(Cointelegraph)[2023/1/3 9:49:47]
接下来我们对flashLoan函数进行详细分析:
三星电子将投资逾3500万美元用于覆盖拉美用户的元宇宙计划:12月24日消息,三星电子近日透露,将投资超过3500万美元用于针对拉丁美洲用户的元宇宙计划。此举背后的目标是帮助品牌吸引年轻受众并与之建立联系,作为其数字推动和增长营销战略的一部分。
三星电子智利公司营销和企业公民总监Anita Caerols在官方文章中解释了公司推动发展虚拟现实的动机,“在三星,我们相信元宇宙是与年轻消费者建立联系的一个承诺。这就是为什么我们正在投资3500多万美元实施覆盖整个拉丁美洲的计划。”
此外,Caerols认为,完全沉浸式平台是未来营销的一部分,对于数字原住民来说,当前的元宇宙是社交媒体平台的自然延伸,三星探索这一领域是明智的选择。(Bitcoin.com)
据金色财经此前报道,三星电子将于明年上半年推出能够交易和展示NFT的智能电视,计划内置美国NFT Gateway、法国La Collection、韩国Art Token等3家公司的NFT应用。三星电子也正在研究将虚拟资产(加密货币)等多种方式作为支付手段。[2022/12/24 22:05:02]
通过分析具体代码我们可以发现,在进行闪电贷时会先通过_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
郑重声明: 本文版权归原作者所有, 转载文章仅为传播更多信息之目的, 如作者信息标记有误, 请第一时间联系我们修改或删除, 多谢。