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

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

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

攻击细节分析

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

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

动态 | The Block关于Blockstack现金消耗的分析文章遭官方指责:The Block研究分析师Matt Yamamoto近日发布关于Blockstack的文章,其估计Blockstack年度现金消耗为2000万美元以上,而其资本为3000万美元,这使得他们在2021年底之前不可能有跑道。之后Blockstack发表声明,称第三方关于该公司2019年上半年未经审计财务报表的报道是“不准确和误导性的”。声明称2019年上半年损益表显示运营费用为1020万美元,包括(a)330万美元的非现金支出和(b)一次性支出。1020万美元的数字不应与2019年上半年或未来半年期间的消耗相混淆。Matt Yamamoto发布一系列推文坚持自己的观点,称“时间将证明Blockstack何时开始筹集新资金。”TechCrunch创始人Michael Arrington评论称,The Block的反驳似乎暗示“(Blockstack)他们在撒谎”,这是相当大的指控。Blockstack联合创始人Muneeb Ali回复,这要么是对会计的基本误解,要么是有意曲解以产生耸人听闻的内容。对于一家研究和新闻媒体来说,这两种选择看起来都很糟糕。[2019/10/14]

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

公告 | Bitstamp发布关于BCH硬分叉的公告:Bitstamp发布公告称,对于即将到来的BCH硬分叉,Bitstamp将在11月15日UTC时间下午2:30(北京时间晚10:30)暂停BCH的存取。用户需确保在此之前完成所有存取。在其中一个参与竞争的链获得多数支持前,BCH存取将保持关闭。Bitstamp将在分叉前拍摄所有余额的快照。如果分叉产生两条可行链,Bitstamp将评估情况并决定日后的行动方案。此次分叉没有重播保护,因此Bitstamp采取谨慎态度。[2018/11/13]

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

winmax发布关于BQC宝权链停止交易和下架公告:winmax发布关于BQC宝权链停止交易和下架公告,公告中称:鉴于BQC宝权链交易量未达到平台要求,平台根据协议将作暂停交易和下架处理,于2018年4月31号24点停止交易,用户必须在4月15号前把资产提走。[2018/3/25]

通过分析闪电贷的外部逻辑调用,可以发现攻击者调用了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

往期回顾

铸币疑云——PaidNetwork被盗细节分析

慢雾招募令:寻区块链安全弄潮儿

可避天灾,难免人祸——Furucombo被黑分析

王者开局偶遇猪队友——简析AlphaFinance&Cream被黑

BitMart入驻慢雾区,发布「安全漏洞与威胁情报赏金计划」

慢雾导航

慢雾科技官网

https://www.slowmist.com/

慢雾区官网

https://slowmist.io/

慢雾GitHub

https://github.com/slowmist

Telegram

https://t.me/slowmistteam

Twitter

https://twitter.com/@slowmist_team

Medium

https://medium.com/@slowmist

币乎

https://bihu.com/people/586104

知识星球

https://t.zsxq.com/Q3zNvvF

火星号

http://t.cn/AiRkv4Gz

链闻号

https://www.chainnews.com/u/958260692213.htm

免责声明:作为区块链信息平台,本站所发布文章仅代表作者个人观点,与链闻ChainNews立场无关。文章内的信息、意见等均仅供参考,并非作为或被视为实际投资建议。

本文来源于非小号媒体平台:

慢雾科技

现已在非小号资讯平台发布68篇作品,

非小号开放平台欢迎币圈作者入驻

入驻指南:

/apply_guide/

本文网址:

/news/9754467.html

免责声明:

1.资讯内容不构成投资建议,投资者应独立决策并自行承担风险

2.本文版权归属原作所有,仅代表作者本人观点,不代表非小号的观点或立场

上一篇:

盘点零知识证明代表性项目:如何影响和塑造区块链生态系统?

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

链链资讯

[0:0ms0-5:96ms