作者:Beosin
1月9日凌晨,Truebit Protocol在5年前部署的未開源合約遭受攻擊,損失8,535.36 ETH(價值約2,640萬美元)。 Beosin安全團隊對本次安全事件進行了漏洞與資金追蹤分析,並將結果分享如下:

攻擊手法分析
本次事件我們以最主要的一筆攻擊交易作為分析,交易哈希為: 0xcd4755645595094a8ab984d0db7e3b4aabde72a5c87c4f176a030629c47014fb
1. 攻擊者呼叫getPurchasePrice()取得價格

2. 隨後呼叫有缺陷的函數0xa0296215(),並將msg.value值設定得極小

由於合約未開源,透過反編譯的程式碼推測該函數是存在算術邏輯漏洞,如整數截斷出現問題,導致攻擊者成功鑄造了大量TRU代幣。
3. 攻擊者透過burn函數將鑄造的代幣「賣回」給合約,從合約儲備中提取了大量ETH。

此過程再重複4次,每次msg.value值增加,直到合約中的ETH幾乎全部提取。
被盜資金追踪
根據鏈上交易數據,Beosin透過旗下區塊鏈鏈上調查與追蹤平台BeosinTrace進行了詳盡的資金追踪,並將結果分享如下:
目前,被竊的8,535.36 ETH經過轉移,絕大部分分別存放在了0xd12f6e0fa7fbf4e3a1c7996e3f0dd26ab9031a60和0x273589ca3713e7becf42069f93ffbfccc16a。
其中地址0xd12f持有4,267.09 ETH,地址0x2735持有4,001 ETH。攻擊者發動攻擊的地址(0x6c8ec8f14be7c01672d31cfa5f2cefeab2562b50)仍有267.71 ETH,三個地址暫未有更進一步的資金轉移。

被竊資金流向分析圖by Beosin Trace
以上地址均已被Beosin KYT標記為高風險地址,以攻擊者地址為例:

Beosin KYT
結語
本次被竊資金涉及5年前未開源的智慧合約,對於此類合約,專案方應對合約進行升級,引入緊急暫停、參數限制以及新版本的Solidity安全特性。此外,安全審計依然是合約不可或缺的環節。透過安全審計,Web3企業可以盡可能全面地偵測智慧合約程式碼,發現並修復潛在漏洞,提高合約安全性。
*Beosin將提供本次所有資金流向與地址風險的完整分析報告,歡迎透過官方信箱support@beosin.com領取。
