首页 > 热点新闻 > 比特币被盗|被盗 1.7 亿 BTT 今又被盗 2600 万 TRX,TronBank 在刻意埋藏后门?
DappReview  

比特币被盗|被盗 1.7 亿 BTT 今又被盗 2600 万 TRX,TronBank 在刻意埋藏后门?

摘要:此次 TronBank 合约被盗事件再次印证了一个简单到令人发指的常识 —— 所谓智能合约的开源并不能等同于「无条件的安全」,而且粗糙的去中心化机制可能存在被利

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

原文标题:《2600 万 TRX 被盗背后的罗生门》
作者:DR 小伙伴

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

被盗 1.7 亿 BTT 今又被盗 2600 万 TRX,TronBank 在刻意埋藏后门?

仅仅在 20 多天前,Tronbank 团队的第二个游戏 BTTBank 在发布 3 小时内即被黑客用假币攻击并盗走数千万 BTT (并非 1.8 亿 BTT),事隔不到一个月,第三款游戏 TRX Pro 于 4 月 29 日 20 点正式上线,几天时间之内,合约余额已经突破 2500 万 TRX。

这是否是 TRON 生态上的 Dapp 又一次被黑客盯上并成功洗劫一空?

被盗 1.7 亿 BTT 今又被盗 2600 万 TRX,TronBank 在刻意埋藏后门?

而接下来发生的这一切,更让所有人始料未及

偶然触发的 Bug?

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

被盗 1.7 亿 BTT 今又被盗 2600 万 TRX,TronBank 在刻意埋藏后门?数据来源:https://player.dapp.review/

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

被盗 1.7 亿 BTT 今又被盗 2600 万 TRX,TronBank 在刻意埋藏后门?

根据 wojak 的说法,他写了个脚本在分析波场虚拟机字节码,批量扫描合约并发起交易看看有没有什么能赚到钱的方法,结果 偶然之中命中了 Tronbank 合约的 bug。一开始连他自己都不知道这笔钱是从 Tronbank 打过来的。

社区里部分人建议 wojak 把钱还给 Tronbank 开发者,而 wojak 认为这不是他的问题,开发者应该自己写测试例子,做审计以及至少跑一些形式化验证(很显然他们啥都没干),他愿意把这笔钱原封不动还给 Tronbank 的每一个投资者,而不是项目方的开发者。

wojak 要求参与了 Tronbank 的投资者发给他投资的交易 hash 值以及自己的地址,他将写一个脚本进行验证,并承诺退款给有损失的 Tronbank 投资人。

刻意埋藏的后门?

随着调查的深入,那一笔触发 Bug 的交易被放回桌面上被仔细的剖析。我们再来看一下:

被盗 1.7 亿 BTT 今又被盗 2600 万 TRX,TronBank 在刻意埋藏后门?

注意到,该笔交易调用的是合约里 withdraw 函数,发送的金额为 0.011911 TRX,要注意在 Tronbank 正常的业务逻辑下,调用 withdraw 函数是不应该发送任何 TRX 的,金额应该为 0. 这一点在源代码中就可以验证。

像 Tronbank 这样资金盘属性的 Dapp,往往都会把代码开源让合约和逻辑变得透明可信来吸引投资人,在网站最明显的位置,也标明了通过第三方验证工具 tronsmartcontract.space (以下简称 TSC)进行合约代码验证后的代码信息。

被盗 1.7 亿 BTT 今又被盗 2600 万 TRX,TronBank 在刻意埋藏后门?
被盗 1.7 亿 BTT 今又被盗 2600 万 TRX,TronBank 在刻意埋藏后门?

从 TSC 点开源代码之后,找到 withdraw 函数,函数第一行会先调用_withdraw() 来取得可以提取的 TRX 金额,在_withdraw() 函数的第一行我们可以看到:

require(msg.value == 0, "wrong trx amount");

这一行代码的意思是要求该笔交易发送的 TRX 金额必须为零,否则无法继续执行,交易会被 REVERT。

也就是说,按照开源代码的逻辑,那一笔触发 Bug 的交易根本不可能发生。

现实变成了,TRX Pro 的合约实际执行逻辑和所谓「开源」的代码逻辑并不一致。

这里补充说明一下,所谓的代码认证过程是这样:

1、开发者在主网发布合约;
2、开发者在 TSC 上传代码,选择编译版本,编译为 bytecodes;
3、TSC 把步骤 2 中的 bytecodes 和步骤 1 中发布合约的 bytecodes 做匹配,匹配成功,则认证通过,理论上多或者少一个空格都不行;

进一步深扒,从 tronscan 上找到 TRX Pro 合约的 bytecodes,用反编译工具进行处理得到:

被盗 1.7 亿 BTT 今又被盗 2600 万 TRX,TronBank 在刻意埋藏后门?反编译工具:

https://www.trustlook.com/products/smartcontractguardian

在 withdraw 函数中,多了一个判断 else if ((0x2E87 == msg.value)),如果满足条件,那么就会把合约的余额全部转给交易发起者!我们把 16 进制的数字 0x2E87 转换成 10 进制,也就是 11911,要知道 TRX 的精度为 6 位,11911 所对应的 TRX 金额就是 0.011911TRX ... 而这一部分判断在 TSC 的开源代码中是不存在的,看起来就像是是一个被藏起来没有公布的后门。

用更简单的语言梳理一遍:

1、在主网上部署的合约,通过反编译发现,调用 withdraw 函数时,如果发送金额等于 0.011911 TRX,则会转移全部合约余额;
2、在 TSC 上认证过的开源代码中,如果发送金额不为零调用 withdraw 函数,交易会被撤回。

那么一切就很清晰了,实际发生的与第一点完全吻合,主网的代码运行没有问题,即 TronBank 在主网部署的合约中存在一个可以直接提走合约余额的后门代码,而有意思的在于第二点,明明不一样的代码逻辑是如何上传后通过了 TSC 的认证过程?

根据已有的信息,断定「是开发者在合约之中放置后门」这个结论仍然为时过早,目前我们可以得出的客观结论只有两点:

1、TRX Pro 在主网的合约中存在后门

2、TSC 上认证过的代码与实际合约运行逻辑不符

注:以下内容是基于现有事实依据的可能性探讨,不代表最终结论和真相,请在传播时不要断章取义。

至于后门是谁放置的,如何放置的?目前没有任何实锤证据,有的人认为是 Tronbank 开发者,有的人认为开发者的实力还不足以通过欺骗 TSC 验证与实际部署所不同的代码。

客观来分析存在的可能性(注意,此处仅讨论可能性,即便该可能性极低,真相目前没有任何实锤证据),有以下几种:

可能性一:Tronbank 开发者在实际部署的合约中夹杂私货放置了后门,并成功欺骗了 TSC 完成了另一份没有后门的代码验证

在探讨这种可能性时,如何欺骗 TSC 成为了焦点,如果真的 TSC 的验证存在 Bug,那么这意味着之前所有通过 TSC 认证并标榜开源的 Dapp 都不再可信和透明,事实上,在 Discord 群里,TSC 的开发者 Khanh 承认代码已经很久没有维护并存在 bug 的可能性,也有其他开发者证实自己实际部署的代码和通过认证的代码可以不完全相同。

另一方面,Tronbank 开发者在 Telegram 群中多次声称团队没有在合约中放置任何的后门,有一种自证清白的方式是:官方给出部署时的源代码以及编译方式(包括编译工具以及版本),理论上任何人按照同样方式编译出来的 bytecode 和线上部署的 TRX Pro 合约应该一致。但当我们提出该质疑时,官方回复如下:

被盗 1.7 亿 BTT 今又被盗 2600 万 TRX,TronBank 在刻意埋藏后门?

这个回复的内容如果当真,则该事件将更加戏剧化和复杂化,参考可能性三

可能性二:Tronbank 团队和 TSC 团队合谋,部署了有后门的合约,同时 TSC 协助用另一个没有后门的合约完成验证。

这是在「欺骗 TSC」很难成立的前提下提出的可能性,TSC 最终打上验证的标签其实是中心化的行为,完全可以人为操作,但对于 TSC 作为一个第三方合约验证工具来说,目前尚无竞品,做这样的事情无疑严重损伤自己的品牌,串通合谋是在性价比太低。

可能性三:Tronbank 团队没有在合约中放置后门,而是后门在合约部署过程中以某种方式产生。

这种可能性是基于「可能一」中的官方回复的一种暗示,即项目方在合约部署时确实使用的是没有后门的合约,编译工具在部署合约到主网的过程中出现了猫腻,加入了有问题的后门。但项目方目前没有提供任何的可验证信息,使用的编译工具,以及同样代码两次编译不同结果的信息。

不论如何,TronBank 开发者实际部署的代码原样我们不得而知,也无法验证真伪,该事件的真相需要等待各方提供更有说服力的证据才能被逐渐还原出来。

至少在此刻,我们还不能下定论,究竟是谁埋下了这个后门。

投资者的钱怎么办?

在以上错综复杂的信息之下,大部分玩家已经放弃了追查真相,而更关注的则是找回损失。

在承诺退款并要求蒙受损失的投资人发送交易信息之后,wojak 整整失联了超过 12 小时,这期间 wojak 账户里的钱大部分被转移到了币安交易所。有人开始怀疑 wojak 并没有打算退钱准备捐款跑路,还有人认为这是 TronBank 项目方监守自盗,wojak 就是项目方之一。

5 月 3 日下午 2 点 44 分

另一边,在 Tronbank 的官方群里,管理员贴出的置顶消息是「TRX Pro 被黑客 THeRTTCvN4SHEVYNqcLVLNGGVsWLR4smyH 攻击,目前开发团队正在紧急处理,将会及时在群里更新消息」

被盗 1.7 亿 BTT 今又被盗 2600 万 TRX,TronBank 在刻意埋藏后门?

5 月 3 日晚上 9 点 13 分

被盗 1.7 亿 BTT 今又被盗 2600 万 TRX,TronBank 在刻意埋藏后门?

wojak 再次现身,说自己花 4 个多小时写了脚本从链上获取到 tronbank 的投资数据来跟收集到的损失信息对比,其中有不少人虚报损失,甚至有完全没有参与过投资的用户也来谎报损失,仅有少数人诚实地汇报了数字。wojak 也把比对信息贴了出来 https://pastebin.com/raw/gMtxCw97。

5 月 4 日下午 1 点 24 分

整整一天之后,Tronbank 项目方再次发出通知,他们正在联系 wojak 进行退款,如果 wojak 在 5 月 4 日晚 7 点时没有任何回复,官方将提供给投资人的补偿方案。

被盗 1.7 亿 BTT 今又被盗 2600 万 TRX,TronBank 在刻意埋藏后门?

5 月 4 日下午 3 点 - 4 点

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

被盗 1.7 亿 BTT 今又被盗 2600 万 TRX,TronBank 在刻意埋藏后门?

被盗 1.7 亿 BTT 今又被盗 2600 万 TRX,TronBank 在刻意埋藏后门?

5 月 4 日晚上 7 点

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

被盗 1.7 亿 BTT 今又被盗 2600 万 TRX,TronBank 在刻意埋藏后门?

而此次赔付通知,可以说是给投资者吃了一颗定心丸,使得大部分用户打消了 「后门是由开发者留下」的疑虑。但在真相露出水面之前,DappReview 依旧保留质疑的态度,等待项目方公开更多的调查报告。

结语

原本看起来是一起常见的黑客攻击事件,却喜剧般演化成一场罗生门。究竟是开发者留后门,巧被程序员打开,还是如项目方所说有更底层的问题存在?除了当局者本身,无人知晓。

投资者们对于去中心化的信任(TSC 提供的代码认证)崩塌,寄托于中心化的信任(起初是 wojak 的承诺,后来是 Tronbank 的赔付公告)。 虽然严格意义上来讲最终的真相可能并不是「去中心化的锅」,但对于普通用户而言,很难区分其中差异,大部分用户的认知只能停留在「智能合约为什么开源了明明没有问题还被黑了?」

在本次事件中,虽然 Tronbank 承诺赔付投资人受损的利益,但受伤的无疑是波场的整个 Dapp 生态,基于 TSC 认证的开源代码所产生的信任和背书已经毫无价值,在波场官方出来验证工具之前,DappReview 建议各位 Dapp 玩家不要轻信项目方所谓代码开源言论。

此外,截至到发稿,wojak 尚未再次露面,也未将资金退还给任何投资人。

免责声明
世链财经作为开放的信息发布平台,所有资讯仅代表作者个人观点,与世链财经无关。如文章、图片、音频或视频出现侵权、违规及其他不当言论,请提供相关材料,发送到:2785592653@qq.com。
风险提示:本站所提供的资讯不代表任何投资暗示。投资有风险,入市须谨慎。
世链粉丝群:提供最新热点新闻,空投糖果、红包等福利,微信:juu3644。