導讀:隨著新一天的調查,更多證據被各方挖掘出來,本次事件的真相正在逐漸浮出水面,戲劇化程度堪比一場年度大戲。文末還附上了wojak的財富密碼。
沒有讀過上一篇文章的讀者
請先移步閱讀本次事件第一集
注:以下調查的資訊收集全部來自於Discord頻道Scam Watch、Telegram群“TronBank抱團維權”,以及DappReview與關聯人的聊天記錄。
wojak反悔退款
自從5月3日晚上9點wojak出現並貼出一份退款對比名單之後,再次從Discord消失,在此期間很多人開始給wojak打上Scammer(騙子)的標籤,並認為“他不會退款,可能已經開上蘭博基尼去度假了”,諸如此類言論不絕於耳。
5月5日中午12點
wojak再次現身,聲稱“我投入了8個小時寫工具來給所有人退款,等我寫完程式碼回來發現大家都在把我想像成是一個騙子,而沒有意識到Tronbank才是放置後門坑了你們的人。你們原本會因此損失所有的投資。但在看到你們把我當成騙子而不是開發者後,我認為我沒有任何理由把TRX退還給你們”
此番言論遭到眾人反駁,wojak堅持認為自己所做的事情並不違法(illegal),自己也不是小偷,只是發起了一筆交易呼叫了智慧合約,並且遵守了智慧合約的規則。此後,wojak再也沒有表示過退款的可能性,而是讓所有人去找Tronbank進行索賠。
證據開始指向TSC開發者Khanh
5月5日中午12點
在真相依舊處於眾說紛紜的迷霧之中時,telegram中某開發者(要求匿名)發現了一條關鍵證據,進而扭轉了整個調查的方向,把更多的資訊帶出水面。
如上圖所示,TTX5N**該地址用同樣的方式傳送了0.011911 TRX呼叫withdraw函式,觸發後門,提走自己事先存入的約100 TRX。
也就是說,在被盜時間(5月3日凌晨4點)約4天之前,竟然已經有人熟知此後門以及其呼叫方式。當我們去反編譯該測試合約並與TRX Pro被盜合約對比時,不難發現:
反編譯工具:
https://www.trustlook.com/products/smartcontractguardian
這兩段程式碼的後門部分完全一致!
而且更為神奇的是,“測試合約”的部署時間比專案方部署的正式合約竟然早了5小時23分鐘。
毫無疑問,TTX5N** 地址與本次後門事件必定脫不了關係。
而該地址的所有者是誰呢?
開啟TSC的網站https://tronsmartcontract.space
點選About Us
這正是TSC的開發者Khanh所擁有的地址
至此,Discord和tg群各路開發者開始梳理Khanh地址以及Tronbank開發者地址的合約部署、呼叫資訊,梳理出以下時間線。
驚人的時間線
以上為Discord頻道中梳理的時間線(均為UTC時間),下面我們按照北京時間進行更細節的梳理。
4/28/2019 4:07 PM
TronBank開發者部署了TRX Pro的測試合約,該合約中透過反編譯並沒有發現後門,合約地址為:
https://tronscan.org/#/contract/TAWLPqFn33U7iaAfP6cXRdJXcBUc1ewCRJ
4/28/2019 5:35 PM
僅在一個半小時後,由TSC開發者Khanh所擁有的地址TTX5N**部署了上文提到的“測試合約”,該合約中存在後門程式碼,合約地址為:
https://tronscan.org/#/contract/TYZ4oPdPmwZS9xTUXhnFtQkPFFTi2iAydz
4/28/2019 10:48 AM
Tronbank開發者了部署TRX Pro的正式版合約,該合約即被盜合約,其中有後門程式碼,合約地址為:
https://tronscan.org/#/contract/TW9AE7u5QADp2uej9xdaNVTYtqsRuJZNxJ
4/28/2019 11:00 PM
在12分鐘之後,TSC開發者Khanh呼叫TRX Pro的正式版合約,併傳送0.011011來測試後門。該筆交易記錄為:
https://tronscan.org/#/transaction/d6d89713ebdb98402ddfd1d454be394a5521c83b7d385ce2c394924a2b923c89
4/30/2019 10:12 AM
TSC開發者Khanh呼叫自己在4/28/2019 5:35 PM 部署的存在後門的“測試合約”,觸發後門,並取走自己充進去的100 TRX,該筆交易記錄為:
https://tronscan.org/#/transaction/87bf173c126c4873ad333c02d4e352bacda9bfaae4d91d0bce156eb64bd5219f
5/3/2019 4:11 AM
wojak 呼叫TRX Pro的正式版合約withdraw函式,第一筆轉入了0.000123,並沒有任何效果,交易記錄為:
https://tronscan.org/#/transaction/aabfc7b6cedb2e8ce055c7fdc7a62df558213c63a33092293886b0e4b58277e5
5/3/2019 4:12 AM
1分鐘後,wojak 再次呼叫TRX Pro的正式版合約withdraw函式,轉入0.011911,成功觸發後門,提走合約餘額2673萬TRX,交易記錄為:
https://tronscan.org/#/transaction/e26666a806e24697fd049e60cf83cf412f58d85cdb0493c014cef0d29d8bdc2e
根據以上資訊,可以歸納出兩個事實:
1. Tronbank上線之前的測試版本合約,沒有後門,但最終線上正式版存在後門;
2. TSC開發者Khanh在Tronbank測試版合約釋出當天部署過一個有相同後門的合約,並且知道後門的呼叫方式,且在4月30日自己進行過測試。也就是說,該後門與TSC脫不了關係。
在與Tronbank團隊的溝通中,開發者提到,他們是使用TSC進行編譯的。(針對該言論的真實性,DappReview無法做出驗證)
注:以下內容是基於現有事實依據的可能性探討,不代表最終結論和真相,請再次傳播時不要斷章取義。
在第一篇文章《2600萬TRX被盜背後的羅生門》中,我們曾提到過三種可能性,
可能性一:Tronbank開發者在實際部署的合約中夾雜私貨放置了後門,併成功欺騙了TSC完成了另一份沒有後門的程式碼驗證。
可能性二:Tronbank團隊和TSC團隊合謀,部署了有後門的合約,同時TSC協助用另一個沒有後門的合約完成驗證。
可能性三:Tronbank團隊沒有在合約中放置後門,而是後門在合約部署過程中以某種方式產生。
根據以上掌握到的更新資訊,第一種可能性被否決,因為整個事件中,TSC開發者是最早呼叫後門的人,並不存在不知情被欺騙的情況,而第三種可能性的概率極大地增加。
TSC集合了編譯、部署、驗證的一條龍服務,從理論上來說,如果開發者使用TSC進行編譯並部署,期間確實有可能增加後門程式碼。
在事發當天5月3日,Discord上詢問為甚麼TRX Pro的實際執行程式碼與驗證程式碼不一致時,Khank的迴應如下:
上午7點22分迴應:我剛起床聽到訊息,讓我來掃描一下所有(程式碼)
晚上9點18分迴應:各位抱歉,我也不知道為甚麼他們透過了我的程式碼(驗證)
而5月5日當Khank的地址部署過後門合約並且呼叫的證據出現後,在Discord網友的質疑下,Khanh的迴應如下:
Mr Fahrenheit:你怎麼解釋你的地址對另一個合約呼叫過可以觸發後門的交易?
Khanh:我的私鑰洩露了,github的密碼也洩露了
這個迴應顯然過於蒼白,一方面人們質疑如果私鑰洩露為甚麼官網還掛著這個地址,另一方面該地址中還有28,052 TRX (價值約4400RMB)沒有被轉走。
此時此刻根據已有的資訊進行客觀的分析,存在的可能性(注意,此處僅討論可能性,即便該可能性極低,真相目前沒有任何實錘證據)依舊有以下幾種:
可能性一:Tronbank團隊和TSC團隊合謀,部署了有後門的合約,同時TSC協助用另一個沒有後門的合約完成驗證。
可能性二:Tronbank團隊沒有在合約中放置後門,而是後門在合約部署過程中以某種方式產生。
以上的兩種可能性中,目前的證據對於而言偏向於第二種可能性,Tronbank團隊目前正在多次與Khanh溝通,並將部分對話截圖貼出,Tronbank團隊堅持沒有放置任何的後門,而是指向TSC是真正放置後門的元兇。目前雖沒有決定性的證據顯示後門是由Khanh放置,但是TSC和Khanh自身與後門已經脫不了干係。
可能性三:Khanh的github賬號被盜,地址私鑰洩露,幕後黑手另有其人。
關於這一點依照現有的證據,可能性較低,Khanh的迴應含糊其辭,也並沒有提供賬戶被盜的證據(比如github關聯郵箱提示不安全登入、密碼被修改等輔助資訊)
至此 最終的謎題仍未解開
這一場年度大戲尚未落下帷幕
更多的證據仍待挖掘
wojak的財富密碼
整個事件中,wojak的那一筆神奇的交易依舊是關注本次事件的群眾口中一直談論的話題。究竟是甚麼樣的奇技淫巧能讓自動執行的程式碼找到後門,並且觸發後門?
在DappReview與wojak的對話中,給出了答案:
wojak的靈感來自於2018年8月的一篇論文《TEETHER: Gnawing at Ethereum to Automatically Exploit Smart Contracts》
該論文主要講了甚麼呢?
基於底層的EVM指令,提出了存在漏洞的智慧合約的一種廣義定義;
提出了TEETHER工具,該工具能夠對於智慧合約的位元組碼進行自動化的漏洞識別並生成相應的漏洞利用程式碼;
對於以太坊區塊鏈中部署的38,757個智慧合約進行了大規模的漏洞分析,其中TEETHER工具發現了815個合約中的漏洞,整個過程完全自動化。
用一個不恰當但是通俗的比喻來說:TEETHER工具就是一臺能自動從智慧合約找漏洞並且提款的ATM機。
wojak基於這篇文章做了甚麼事情?
1. 把TEETHER工具針對波場虛擬機器做了適配
2. 收集波場上所有智慧合約
3. 對所有的合約執行TEETHER工具來分析
4. 找到可能的套利機會 比如從合約A中以X的價格購買某Token,然後在合約B中以Y價格賣出(Y大於X),整個流程都是自動化執行而且合法
5. 工具會產生一系列可能產生收益的交易列表
6. 指令碼自動執行並出發這些交易
本質上,那一筆神奇的交易就是這樣自動觸發的,連他自己都不知道發生了甚麼。至於wojak本身的行為是否可以定義為“駭客”,或者“違法”,此處暫且不展開深究。
有興趣研究這篇“財富密碼”的請看:
https://publications.cispa.saarland/2612/1/main.pdf
截至發稿,Tronbank已經宣佈完成了鏈上投資資料的收集,統計完成後將按照原計劃發放賠付TRX。此外,TSC開發者Khanh已經關閉了個人Twitter和Facebook