2018年,EOS引爆了DApp市场,诸多公链开始在这一市场上逐鹿。其中,波场通过一系列扶持计划积极建设DApp,根据DAppTotal的数据,截至4月21日,波场上有132个活跃DApp,日活总数接近5万,日交易额超过2亿个TRX。这些数据让波场看起来已经拥有与以太坊和EOS在DApp市场上一争高下的能力。
但是,EOS生态繁荣的背后是频发的安全事件。PAData联合区块链数据与安全服务商PeckShield在《起底EOS DApp安全生态》系列报道中曾统计过,仅2018年下半年,EOS上的DApp就发生了49起安全事件,12种攻击手法制造的总损失达到319万美元。
实际上,在攻击面前,所有公链上的任何DApp都只能“缴械投降”。4月11日,波场上的DApp TronBank遭受攻击,损失超过1.8亿个BTT,这直接将波场的安全生态推向了舆论的风口浪尖。波场的安全生态现状如何?发生在EOS上的攻击是否“外溢”到了波场呢?PAData再次联手PeckShield起底波场的DApp安全生态。
单次攻击平均损失超16万美元
抽奖类DApp成重灾区
其实早在2018年,波场上就已经有DApp遭受攻击。第一个遭受攻击的DApp是抽奖类应用TRONWIN,2018年12月30日TRONWIN在Twitter上发布官方公告称遭到攻击,共损失200万个TRX和10亿个WIN,按照当时的币价折算,总损失超过29万美元。目前尚未可知这次攻击的具体手法。
除了这次未知攻击手法的安全事件以外,其余3起已被监测到的安全事件的攻击手法包括:增发漏洞攻击、随机数攻击和假币攻击。
其中,发生于4月8日的增发漏洞攻击是针对TRC20智能合约中的TransferMint(CVE-2019-11420)发起的攻击,由于代币转让函数没有验证转出方和接收方是否是同一用户,导致用户可以通过自己转给自己来实现代币的无限增发。TransferMint漏洞是合约层面的漏洞,只要DApp部署了这类合约就可能在此次攻击中受到损失。
根据PeckShield动态感知平台的统计,一共有超过20个DApp或合约受到增发漏洞攻击,包括抽奖类应用TronCrush、智能合约Iseri Project和RockstarToken等,但具体损失数值不可知。毫无疑问,目前,增发漏洞攻击是波场生态安全中“杀伤范围”最广的一种攻击手法,而且这个隐患现在依然存在。PeckShield TRON安全负责人郑彪表示,“现在DApp的代码存在互相抄袭的可能性,之前被忽视漏洞就也就有可能一直顺延下去。这类漏洞是否可能再被攻击,一定程度要看这个DApp所对应的Token有没有价值了。”
波场的DApp攻击也出现了“连锁反应”。就在增发漏洞攻击发生的两天后,4月10日TronWoW遭遇随机数攻击,由于开奖合约没有验证下注范围,允许用户在直接与链上DApp交互时构造恶意输入,实现100%胜率。这次攻击导致项目方损失200多万个TRX,折合近6.5万美元。4月11日TronBank遭遇假币攻击,BTTBank智能合约没有验证TRC10代币 ID(TokenID),导致任何TRC10代币都可以换成真的BTT。这次攻击项目方共损失超过1.8亿个BTT,折合损失超过12.5万美元。
在4起安全事件中,已被明确监测到的受攻击的4个DApp其中有3个都是抽奖类应用,还有1个是风险类应用。抽奖类应用成为波场安全生态的“重灾区”。
回顾至此,波场的安全生态虽然仅有4起,但已经有两项数据超越了EOS。一是从安全事件发生频率上来看,波场一周3次的频率已经超过EOS周均2次的频率[1]。但是必须要声明的是,波场的一周3次可能是峰值,有一定的特殊性和偶然性。因为第二次安全事件发生的时间距第一次安全事件足足超过3个月,“这里存在很多外部因素”,郑彪解释道:“实际上今年1到3月份,整体上都很少发生安全事件,不止波场,其他公链比如以太坊和EOS,合约被攻击的事件也比较少。这可能是因为黑客在休息或者在学习和探索其他公链。”
二是从安全事件导致的损失上来看,波场有损失记录的3起安全事件平均导致的损失超过16万美元,即使算上1起未知损失金额的事件,4起安全事件的平均致损金额也超过12万美元,远远超过EOS单起安全事件平均致损6.5万美元的水平。
黑客也需要“练手”
攻击行为与余额和币价均无关
从EOS的安全事件来看,黑客主要是挑一些交易量大的DApp来下手,但根据PAData早前的分析,黑客下手的时间却与币价行情无关。也即,不管钱多钱少,黑客只要认为有利可图,或者得利可能性比较高都会下手。
那波场上的安全生态是否也存在这种情况呢?
对此,郑彪表示目前波场生态安全遭受的攻击与波场生态的繁荣程度,或者资金池里的资金量多寡并没有一定的相关性。他认为黑客挑选攻击目标可能主要有两种选择,一种和EOS安全生态相似,就是“挑大户”下手,“用户量或者交易额排名比较高的,会成为他们首要的攻击目标。”比如最近发生的两起安全事件,按照DAppTotal的排名,TronWoW在攻击发生的当日(4月10日)的排名是第4位,TronBank在攻击发生当日(4月11日)的排名是第1位。
对黑客而言,另一种选择可能反而是避开“大户”,挑“老实人”。因为“大户”往往本身很有钱,安全风控就会做得相对比其他DApp要好一点,那么黑客攻击得手的可能性就会小。这种选择发生于较早的两起安全事件,按照DAppTotal的排名,TRONWIN在攻击发生当日(2018年12月30日)的排名是第39位,TronCrush在攻击发生当日(4月8日)的排名是第31位。
显然排名高低(即用户数量多少[2])都有可能成为攻击目标,那么从单个DApp内部纵向来观察,黑客会瞄准某个DApp,在合约余额和应用代币(包括DApp自己发行的代币或TRX)都处于高位时攻击以谋求单次利益最大化吗?答案也是否定的。
PAData统计了四个遭受攻击的DApp的历史合约余额后发现,攻击并没有发生在历史高位附近,反而大多是处于偏中低的位置附近。
从攻击发生当日的代币交易价格来看,币价高低也不是影响黑客攻击的主要因素。PAData匹配了攻击发生当日CoinMarketCap上TRX或DApp代币的收盘价,并将当日收盘价按照25%分位、50%分位(中位数)和75%分位将代币历史价格分为4个量化档次,小于25%分位价记为低,介于25%-50%分位价记为中低,介于50%-75%分位价记为中高,高于75%分位价记为高。匹配结果显示,四次攻击发生时的币价处于低、中低和中高档次的情况都有发生,反而当币价处于历史高位时没有发生过攻击。
郑彪觉得,“从黑客这个角度来考虑的话,更多的情况可能是,黑客会对各个合约做渗透测试,找到突破口之后再发起攻击。”这意味着,黑客也需要“练手”,挑选攻击对象时可能存在一定的偶然性,反而与生态繁荣程度、币价高低、用户数量多少、交易额多寡都不是必然相关的。
“攻击外溢”有限
时效性和公链特性决定外溢程度
过去,更多的安全事件可能出现在EOS上,但最近波场连发几起安全事件展示了安全事件可能正从EOS向波场蔓延的趋势。但PeckShield EOS安全负责人施华国和TRON安全负责人郑彪都表示,发生在EOS生态中的安全事件仅有十分有限的“溢出效应”。
一方面,各条公链都在不断地升级、不断地完善、不断地修复漏洞,所以黑客如果想要去攻击不同公链上相似的漏洞逻辑,时效性是非常重要的。过了窗口期,可能其他公链就已经补上了这个漏洞。
另一方面,也是更重要的一方面是,虽然攻击思路可能是相似的,但由于每条公链有自己独特的特性,因此具体的攻击手法在每条公链上的实现肯定是不一样的。
比如说EOS开奖的时候允许有一个延迟交易的过程,这个EOS特有的机制就可能导致随机数攻击或者阻塞交易攻击。相反,在波场上面没有这种类似延时交易的机制,那么针对延时交易漏洞的随机数攻击可能就不会直接出现。而且很多安全事件都需要一些特定条件触发,这些特定条件可能在以太坊或EOS上出现,但在波场上就不会出现,所以波场就不会面临这些攻击,但是波场可能会有一些其他的与其自身链的特性相关的攻击手段出现。
郑彪以4月11号发生在TronBank的BTT代币攻击事件为例解释道,在波场上,除了有TRX以外,还有和以太坊ERC20对标的TRC20代币和为了降低用户使用平台的门槛促进公链繁荣而推出的TRC10代币,前者需要用智能合约来控制,但后者可以直接由用户发起。波场的创新之处就在于允许智能合约内部自由转账非智能合约创建的非平台币,这是以太坊和EOS都没有的。而TronBank智能合约就是因为没有对合约内部转账时用户输入的TokenID做检测才导致了“以假乱真”的攻击事件发生。
PAData早前的文章也总结过EOS安全事件攻击手法的演进路线,从系统攻击开始,然后到程序的逻辑漏洞,再到程序的算法漏洞,最后发展为综合手段。但波场安全事件的开始就直接跳过了前两步,直接进入了以泛随机数等手法为主的算法漏洞攻击,那是否意味着波场的安全生态出现了“跃进式突变”呢?
对此,郑彪认为,“整个攻击和反攻击都是围绕平台一起发展的,平台在发展,那黑客就会跟着平台一起去做更新。”EOS刚上线的时候,DApp并不繁荣,黑客能攻击的目标非常少,所以可能更关注是底层公链的问题。但波场借鉴了以太坊和EOS中的精华,相对其底层公链出问题的概率就会非常低。同样的,波场上的DApp出现的时间也比以太坊和EOS上的DApp晚,项目方也可以对之前的DApp有所借鉴,因此波场的安全生态看起来就直接进入了攻击程序算法漏洞的第三步,但这并不能排除波场的安全生态面临系统攻击和程序逻辑漏洞攻击的可能性。
另外,由于公链的治理特性,波场上 DApp 的智能合约一旦上线之后,合约代码就是固定的、不可逆的、不可更改的。当面临攻击时,除非项目方之前已经做了一些PlanB,不然损失有可能持续扩大。
“我们后来有观察到,在TronBank出事之后,依然有用户做正常的投资,这些投资的BTT后面也可能被黑客薅走。”郑彪建议不只项目方要审视项目代码逻辑的可靠性,用户个人也需要及时更新DApp的安全状态信息。
注释:
[1] 参考PAData《起底EOS DApp安全生态》(上、下)系列报道。
[2] DAppTotal上的排名是以DAU为依据的,即排名高意味着日活跃用户数量多。
本文来自,仅作分享,存在异议请联系平台删除。本文观点不代表刺猬财经 - 刺猬区块链资讯站立场。