2600万TRX被盗背后的罗生门

导读:此次TronBank合约被盗事件再次印证了一个简单到令人发指的常识——所谓智能合约的开源并不能等同于“无条件的安全”,而且粗糙的去中心化机制可能存在被利用的中心化黑幕可能。在目前这个混沌无序的市场环境中,作为一个成熟的“韭菜”,请不要再轻易相信任何口头上的去中心化承诺。

北京时间5月3日凌晨4点12分,一笔神奇的合约调用转走了TronBank合约中的2673万TRX,合约余额归零。

仅仅在20多天前,Tronbank团队的第二个游戏BTTBank在发布3小时内即被黑客用假币攻击并盗走数千万BTT,事隔不到一个月,第三款游戏TRXPro于4月29日20点正式上线,几天时间之内,合约余额已经突破2500万TRX。这是否是TRON生态上的Dapp又一次被黑客盯上并成功洗劫一空?

而接下来发生的这一切更让所有人始料未及偶然触发的Bug?合约余额归零后,项目方telegram群里面骗局和黑客的质疑声不绝于耳,DappReview和小伙伴们开始着手研究到底发生了什么。”黑客”的地址为THeRTTCvN4SHEVYNqcLVLNGGVsWLR4smyH,利用DappReview的玩家数据查看工具,可以看到该地址的所有者像是一个正常的Dapp玩家,从今年1月到5月该玩家涉猎过数十个Dapp,其中TronGoo是他玩过最多的游戏,从TronGoo官方排行榜可以看到他就是排名第二的大户玩家。

发生被盗事件约2个小时之后,在一个名为ScamWatch的Discord频道中,调走这一笔2673万TRX的地址THeRTT**拥有者wojak现身了。

根据wojak的说法,他写了个脚本在分析波场虚拟机字节码,批量扫描合约并发起交易看看有没有什么能赚到钱的方法,结果偶然之中命中了Tronbank合约的bug。一开始连他自己都不知道这笔钱是从Tronbank打过来的。社区里部分人建议wojak把钱还给Tronbank开发者,而wojak认为这不是他的问题,开发者应该自己写测试例子,做审计以及至少跑一些形式化验证,他愿意把这笔钱原封不动还给Tronbank的每一个投资者,而不是项目方的开发者。wojak要求参与了Tronbank的投资者发给他投资的交易hash值以及自己的地址,他将写一个脚本进行验证,并承诺退款给有损失的Tronbank投资人。刻意埋藏的后门?随着调查的深入,那一笔触发Bug的交易被放回桌面上被仔细的剖析。我们再来看一下:

注意到,该笔交易调用的是合约里withdraw函数,发送的金额为0.011911TRX,要注意在Tronbank正常的业务逻辑下,调用withdraw函数是不应该发送任何TRX的,金额应该为0.这一点在源代码中就可以验证。像Tronbank这样资金盘属性的Dapp,往往都会把代码开源让合约和逻辑变得透明可信来吸引投资人,在网站最明显的位置,也标明了通过第三方验证工具tronsmartcontract.space进行合约代码验证后的代码信息。

从TSC点开源代码之后,找到withdraw函数,函数第一行会先调用_withdraw()来取得可以提取的TRX金额,在_withdraw()函数的第一行我们可以看到:require(msg.value==0,”wrongtrxamount”);这一行代码的意思是要求该笔交易发送的TRX金额必须为零,否则无法继续执行,交易会被REVERT。也就是说,按照开源代码的逻辑,那一笔触发Bug的交易根本不可能发生。现实变成了,TRXPro的合约实际执行逻辑和所谓“开源”的代码逻辑并不一致。这里补充说明一下,所谓的代码认证过程是这样:1.开发者在主网发布合约2.开发者在TSC上传代码,选择编译版本,编译为bytecodes,3.TSC把步骤2中的bytecodes和步骤1中发布合约的bytecodes做匹配,匹配成功,则认证通过,理论上多或者少一个空格都不行进一步深扒,从tronscan上找到TRXPro合约的bytecodes,用反编译工具进行处理得到:

这个回复的内容如果当真,则该事件将更加戏剧化和复杂化,参考可能性三可能性二:Tronbank团队和TSC团队合谋,部署了有后门的合约,同时TSC协助用另一个没有后门的合约完成验证。这是在“欺骗TSC”很难成立的前提下提出的可能性,TSC最终打上验证的标签其实是中心化的行为,完全可以人为操作,但对于TSC作为一个第三方合约验证工具来说,目前尚无竞品,做这样的事情无疑严重损伤自己的品牌,串通合谋是在性价比太低。可能性三:Tronbank团队没有在合约中放置后门,而是后门在合约部署过程中以某种方式产生。这种可能性是基于“可能一”中的官方回复的一种暗示,即项目方在合约部署时确实使用的是没有后门的合约,编译工具在部署合约到主网的过程中出现了猫腻,加入了有问题的后门。但项目方目前没有提供任何的可验证信息,使用的编译工具,以及同样代码两次编译不同结果的信息。不论如何,TronBank开发者实际部署的代码原样我们不得而知,也无法验证真伪,该事件的真相需要等待各方提供更有说服力的证据才能被逐渐还原出来。至少在此刻,我们还不能下定论,究竟是谁埋下了这个后门。投资者的钱怎么办?在以上错综复杂的信息之下,大部分玩家已经放弃了追查真相,而更关注的则是找回损失。在承诺退款并要求蒙受损失的投资人发送交易信息之后,wojak整整失联了超过12小时,这期间wojak账户里的钱大部分被转移到了币安交易所。有人开始怀疑wojak并没有打算退钱准备捐款跑路,还有人认为这是TronBank项目方监守自盗,wojak就是项目方之一。5月3日下午2点44分另一边,在Tronbank的官方群里,管理员贴出的置顶消息是“TRXPro被黑客THeRTTCvN4SHEVYNqcLVLNGGVsWLR4smyH攻击,目前开发团队正在紧急处理,将会及时在群里更新消息。

5月3日晚上9点13分

5月4日下午3点-4点针对之前所承诺的24小时内给出事件分析报告,官方将再次延期,声称将联系安全公司,TSC以及波场官方做更多的调查。同时评论到,有很多细节仍需确认,之前从未遇到类似情况,这有可能是一个精彩的故事。

5月4日晚上7点Tronbank项目方如约公布了赔偿方案,令大部分人吃惊的是项目方没有跑路,而是承诺在24小时内收集信息,并在72小时内进行全额赔付。如果赔付照常发放,这可能是Dapp历史上最大的一次项目方赔付。

而此次赔付通知,可以说是给投资者吃了一颗定心丸,使得大部分用户打消了“后门是由开发者留下”的疑虑。但在真相露出水面之前,DappReview依旧保留质疑的态度,等待项目方公开更多的调查报告。结语原本看起来是一起常见的黑客攻击事件,却喜剧般演化成一场罗生门。究竟是开发者留后门,巧被程序员打开,还是如项目方所说有更底层的问题存在?除了当局者本身,无人知晓。投资者们对于去中心化的信任崩塌,寄托于中心化的信任(起初是wojak的承诺,后来是Tronbank的赔付公告)。虽然严格意义上来讲最终的真相可能并不是“去中心化的锅”,但对于普通用户而言,很难区分其中差异,大部分用户的认知只能停留在“智能合约为什么开源了明明没有问题还被黑了?”在本次事件中,虽然Tronbank承诺赔付投资人受损的利益,但受伤的无疑是波场的整个Dapp生态,基于TSC认证的开源代码所产生的信任和背书已经毫无价值,在波场官方出来验证工具之前,DappReview建议各位Dapp玩家不要轻信项目方所谓代码开源言论。此外,截至到发稿,wojak尚未再次露面,也未将资金退还给任何投资人。(火星财经)

OKEX下载,欧易下载,OKX下载

okex交易平台app下载

原创文章,作者:币圈百科,如若转载,请注明出处:https://6684456.com/9698.html

发表评论

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