一、事情概览

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

原文链接如下:

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

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

△图1 

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

二、事情剖析

该事情的进犯原因主要在于合约的init函数未进行约束,然后导致进犯者有权利进行调用,如图2所示:

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

△图2

经剖析,进犯者利用了DODO合约中提供的闪电贷东西,首先向合约转移了两种空气币。紧接着,发起了一笔闪电贷买卖。在买卖结束之前,调用合约的init函数将币种指向空气币,然后躲过了闪电贷的偿还校验,如图3所示。

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

△图3

三、安全主张

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

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

同时,咱们主张,在日常的安全防护中,项目方也需求做好事无巨细的安全加固工作;经过借助第三方安全公司的专业力量,选用“形式化验证与人工审阅”结合的复合式审计办法,方能完成对项目八面玲珑的全方位护航。

视野开拓

要獲得對於社會秩序、對於它的本質和變化的理解,人們最容易想到的辦法,是將其解釋為旨在創建、形成它們的人們設計計算的產物,將它的形成,歸之於人們之間達成的協定或實證的立法。這種(因果式的)解釋方法不合乎實情,完全是非歷史的。 社會現象如果不是社會成員的協定或實證性立法的產物,而是社會發展的非意圖的後果的話,則不可能用社會性——因果性模式來解釋這些社會現象的變化。-《经济学方法论探究》

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注