DODO攻击事件分析:搬起“石头”,竟砸了自己的脚?

该事件的攻击原因主要在于合约的init函数未进行限制,从而导致攻击者有权利进行调用。

一、事件概览

北京时间2021年3月9日,根据【链必安-区块链安全态势感知平台(Beosin-Eagle Eye)】舆情监测显示,去中心化交易所DODO上的wCRES/USDT资金池似乎被黑客攻击,转移走价值近98万美元的Wrapped CRES(wCRES)和近114万美元的USDT。据DODO官方回复目前团队正在进行调查。

原文链接如下:

https://www.odaily.com/newsflashes/235047.html

闪电贷

△图1 

成都链安(Beosin)安全团队第一时间针对该事件启动安全应急响应,并将事件细节分析进行梳理,以供参考。其实,该事件本身来说并不复杂,其攻击流程也非常简单。但因该事件涉及到闪电贷”“重入攻击”等热门话题,因此成都链安认为有必要对该事件进行发声。

二、事件分析

该事件的攻击原因主要在于合约的init函数未进行限制,从而导致攻击者有权利进行调用,如图2所示:

闪电贷

△图2

经分析,攻击者利用了DODO合约中提供的闪电贷工具,首先向合约转移了两种空气币。紧接着,发起了一笔闪电贷交易。在交易结束之前,调用合约的init函数将币种指向空气币,从而躲过了闪电贷的归还校验,如图3所示。

闪电贷

△图3

三、安全建议

成都链安(Beosin)安全团队认为,本起事件并不复杂,但值得敲响警钟,引起广大项目方的注意。具体而言,首先是DODO的闪电贷函数是进行了重入校验的,但由于init函数并没有添加重入校验,所以导致了类似重入攻击的发生。

另外,结合成都链安审计团队以往对项目方的安全审计经验,由于目前代码的复杂度越来越高,模块化也随之越来越多,有许多项目方虽然都使用了init函数进行管理,但需要提醒的是,init函数在solidity中也仅仅只是一个普通函数,在此呼吁广大项目方与开发者引起重视。切记,不要误以为取名为“init”,就只能进行一次调用。

同时,我们建议,在日常的安全防护中,项目方也需要做好事无巨细的安全加固工作;通过借助第三方安全公司的专业力量,采用“形式化验证与人工审核”结合的复合式审计方法,方能实现对项目面面俱到的全方位护航。

转载声明:本文 由CoinON抓取收录,观点仅代表作者本人,不代表CoinON资讯立场,CoinON不对所包含内容的准确性、可靠性或完整性提供任何明示或暗示的保证。若以此作为投资依据,请自行承担全部责任。

声明:图文来源于网络,如有侵权请联系删除

风险提示:投资有风险,入市需谨慎。本资讯不作为投资理财建议。

(0)
打赏 微信扫一扫 微信扫一扫
上一篇 2021年3月9日 下午10:53
下一篇 2021年3月9日 下午10:53

相关推荐

DODO攻击事件分析:搬起“石头”,竟砸了自己的脚?

星期二 2021-03-09 22:53:24

一、事件概览

北京时间2021年3月9日,根据【链必安-区块链安全态势感知平台(Beosin-Eagle Eye)】舆情监测显示,去中心化交易所DODO上的wCRES/USDT资金池似乎被黑客攻击,转移走价值近98万美元的Wrapped CRES(wCRES)和近114万美元的USDT。据DODO官方回复目前团队正在进行调查。

原文链接如下:

https://www.odaily.com/newsflashes/235047.html

闪电贷

△图1 

成都链安(Beosin)安全团队第一时间针对该事件启动安全应急响应,并将事件细节分析进行梳理,以供参考。其实,该事件本身来说并不复杂,其攻击流程也非常简单。但因该事件涉及到闪电贷”“重入攻击”等热门话题,因此成都链安认为有必要对该事件进行发声。

二、事件分析

该事件的攻击原因主要在于合约的init函数未进行限制,从而导致攻击者有权利进行调用,如图2所示:

闪电贷

△图2

经分析,攻击者利用了DODO合约中提供的闪电贷工具,首先向合约转移了两种空气币。紧接着,发起了一笔闪电贷交易。在交易结束之前,调用合约的init函数将币种指向空气币,从而躲过了闪电贷的归还校验,如图3所示。

闪电贷

△图3

三、安全建议

成都链安(Beosin)安全团队认为,本起事件并不复杂,但值得敲响警钟,引起广大项目方的注意。具体而言,首先是DODO的闪电贷函数是进行了重入校验的,但由于init函数并没有添加重入校验,所以导致了类似重入攻击的发生。

另外,结合成都链安审计团队以往对项目方的安全审计经验,由于目前代码的复杂度越来越高,模块化也随之越来越多,有许多项目方虽然都使用了init函数进行管理,但需要提醒的是,init函数在solidity中也仅仅只是一个普通函数,在此呼吁广大项目方与开发者引起重视。切记,不要误以为取名为“init”,就只能进行一次调用。

同时,我们建议,在日常的安全防护中,项目方也需要做好事无巨细的安全加固工作;通过借助第三方安全公司的专业力量,采用“形式化验证与人工审核”结合的复合式审计方法,方能实现对项目面面俱到的全方位护航。