TronCrush智能合约存在造币漏洞,攻击者凭空创造巨量TCC代币

在介绍本次攻击事件前先引用一段来自DappReview的文章内容(https://www.bishijie.com/shendu_28528)


虎头蛇尾的TronCrush

这是一个上线前被大量TRON Dapp KOL宣传力推的项目,在第一次分红之前,被Kiwi进行上币交易,其无奈之下,主动联系TRON生态下头部的去中心化交易所Trontrade进行上币。

之前由于做足了预热,3月26号首日挖矿流水惊人的突破了12亿TRX,由于挖矿的狂热,该项目方多次暂停游戏进行维护,27-28日的交易量受此影响有所下滑,来到第一个分红日29号12点前夕。TronTrade突然暂停了代币TCC的交易,似乎出现了一些问题,TronCrush官方声称似乎代币TCC的智能合约存在bug,正在检查中,但是尚未暂停游戏。


自Tron公链问世以来,攻击事件鲜有耳闻,此次事件代表着黑客的目光开始从ETH、EOS上转移到Tron,后续针对Tron的攻击事件应该会呈上升趋势。

根据DappReview的信息,BCSEC团队对此次针对Tron智能合约的攻击事件进行了仔细分析。

图片.png

以上仅为部分攻击数据,详细完整的数据在以下附件中。

攻击时间线:TCC_Attack.xlsx

根据分析结果,TronCrush的代币合约(TCC)漏洞最早被利用于2019年3月27日10点48分,攻击者利用TCC的造币漏洞恶意制造的TCC代币累计高达27140564.08枚。

攻击者在恶意铸币之后直接在Kiwi交易所进行抛售,导致TCC代币价格巨幅下跌。

漏洞分析

该事件的根本原因在于,TronCrush的代币合约(TCC)中存在一个严重的逻辑漏洞。

以下为合约源码地址:https://github.com/TronCrush/TCC/blob/ea906b04bbef6b0b588572f80616cf9f038fe062/Token

漏洞函数:

图片.png

该函数为普通的转账函数,这里面存在一个致命的缺陷,那就是没有验证_from和_to是否相等。

若_from==_to,也就是自己给自己转账,在第81行的时候,用户的余额会先被设置为付款人的余额,而在第82行的时候,用户的余额又会被设置为收款人的余额,这就导致凭空产生了转账数额一半的币。

举个例子来说,倘若用户有20个TCC代币,此时用户调用转账函数给自己转账10个代币,用户的余额会先根据第81行代码变为付款人的余额,也就是10(本来有20个币花掉了10个还剩10个),然后到第82行代码时,此时用户是收款人,收款人的余额应该是30(本来有20个币收账了10个还有30个),这笔交易的最终结果是没有任何人的币减少了,但是却凭空增发了与转账数额等同的代币。

最后

ETH和EOS在建设生态安全的过程中都经过了一段漫长且艰辛的过程,EOS DApp至今仍频繁收到攻击。Tron作为第三大的公链虽然站在前人的肩膀上,但事实证明也同样需要向生态开发者灌输安全第一的理念。

*文章为作者独立观点,不代表BSCEC立场

转载此文章须经作者同意,并请附上出处(未知网站)及本页链接。

白帽汇安全研究院原创2019-04-08 19:53:29 1405