成都鏈安:Lendf.Me 2500萬美元被盜,黑客如何肆虐?資金去了哪兒?

事件背景:

DeFi 借貸協議 Lendf.Me 今日遭受攻擊,開發團隊已在 Lendf.Me 用戶界面用紅字提醒,呼籲用戶目前不要向合約存款,此事發生,瞬間引起了外界對於區塊鏈和數字貨幣安全的激烈討論。

Lendf.Me於去年 9 月推出後因其鎖倉資產價值成為 DeFi Pulse 七大 DeFi 市場之一,今日攻擊者利用重入漏洞覆蓋自己的資金餘額並使得可提現的資金量不斷翻倍,最終將Lendf.Me盜取一空。

黑客攻擊事件覆盤:

據成都鏈安反洗錢合規和調查取證系統(Beosin-AML)追蹤統計,目前 Lendf.Me 損失已超2500萬美元,完整攻擊過程覆盤如下:

此次攻擊者地址為:0xA9BF70A420d364e923C74448D9D817d3F2A77822;攻擊合約為:0x538359785a8D5AB1A741A0bA94f26a800759D91D,攻擊者首先進行了多次攻擊測試(如下圖所示):

成都鏈安:Lendf.Me 2500萬美元被盜,黑客如何肆虐?資金去了哪兒?

在合約部署完成後的第三筆交易(0xe49304cd3ed)中,攻擊者進行了首次攻擊嘗試:

成都鏈安:Lendf.Me 2500萬美元被盜,黑客如何肆虐?資金去了哪兒?

整個攻擊事件開始階段,攻擊者的初始交易發送腳本存在問題,導致只有區塊中的第一次攻擊才能攻擊成功,後面的交易全部拋出異常。

後面攻擊者對攻擊腳本做出了改動,一個區塊只發送一筆攻擊交易。首先分析這三筆成功的交易,可以看到攻擊者的資金基本上呈現一個倍增的關係,攻擊已經開始獲利:

成都鏈安:Lendf.Me 2500萬美元被盜,黑客如何肆虐?資金去了哪兒?成都鏈安:Lendf.Me 2500萬美元被盜,黑客如何肆虐?資金去了哪兒?

https://etherscan.io/tx/0xae7d664bdfcc54220df4f18d339005c6faf6e62c9ca79c56387bc0389274363b

成都鏈安:Lendf.Me 2500萬美元被盜,黑客如何肆虐?資金去了哪兒?

https://etherscan.io/tx/0xa0e7c8e933be65854bee69df3816a07be37e108c43bbe7c7f2c3da01b79ad95e

成都鏈安:Lendf.Me 2500萬美元被盜,黑客如何肆虐?資金去了哪兒?

https://etherscan.io/tx/0xf8ed32d4a4aad0b5bb150f7a0d6e95b5d264d6da6c167029a20c098a90ff39b4

到此時,攻擊者已經完成對攻擊過程的確認,之後的連續多個交易則是攻擊者註冊了多個代幣地址用於代幣兌換:

成都鏈安:Lendf.Me 2500萬美元被盜,黑客如何肆虐?資金去了哪兒?成都鏈安:Lendf.Me 2500萬美元被盜,黑客如何肆虐?資金去了哪兒?

https://etherscan.io/tx/0xc906fc184c6fd453b01d3bc04612cf90e8d339edfe1611e25baa47eb6e9ec080

以0xc906fc184c6f交易為例,0x06af07097c9eeb7fd685c692751d5c66db49c215是代幣CHAI的合約地址,區塊高度9899740~9899741基本上全部在註冊代幣。

之後攻擊者繼續發起攻擊,可以看到,每次攻擊後,攻擊者持有的資金(imBTC)基本會翻一倍。

成都鏈安:Lendf.Me 2500萬美元被盜,黑客如何肆虐?資金去了哪兒?

通過這樣不斷翻倍的過程,在交易0xced7ca81308時,基本已達到imBTC的最大存量。

成都鏈安:Lendf.Me 2500萬美元被盜,黑客如何肆虐?資金去了哪兒?

之後利用獲利的imBTC借入其他代幣,如下圖所示:

成都鏈安:Lendf.Me 2500萬美元被盜,黑客如何肆虐?資金去了哪兒?

黑客攻擊手法分析:

以其中一筆交易0x111aef012df47efb97202d0a60780ec082125639936dcbd56b27551ce05c4214為例:

lendf.me合約地址:0x0eEe3E3828A45f7601D5F54bF49bB01d1A9dF5ea

imBTC合約地址:0x3212b29e33587a00fb1c83346f5dbfa69a458923

成都鏈安:Lendf.Me 2500萬美元被盜,黑客如何肆虐?資金去了哪兒?

第1步,正常執行supply函數,存入113.21475453 imBTC,這裡未進行重入。

第2步,再次調用supply函數,存入0.00000001 imBTC,在這次交易中,如第3步攻擊者觸發了supply函數中利用transferFrom函數轉入代幣時會通知發送方的特性,在發送方的代碼中回調了Lendf.me的withdraw函數,取出了第1步supply中存入的113.21475453 imBTC以及在本次交易的上一筆重入交易中的113.21475516 imBTC,總共為226.42950969 imBTC,重入之後再次回到transferFrom剩餘的代碼中,繼續執行將0.00000001 imBTC轉入lendf.me的操作。

重入攻擊的具體代碼執行過程如下:

1、進入supply函數

2.調用內部doTransferIn函數,該函數會調用imBTC的transferFrom函數進行代幣轉賬操作

成都鏈安:Lendf.Me 2500萬美元被盜,黑客如何肆虐?資金去了哪兒?

3.在imBTC中,會調用攻擊者指定合約(0x538359785a8D5AB1A741A0bA94f26a800759D91D)的tokensToSend函數,攻擊者在函數中執行了重入操作,該重入操作調用了lendf.me的withdraw函數,取出了226.42950969 imBTC。

成都鏈安:Lendf.Me 2500萬美元被盜,黑客如何肆虐?資金去了哪兒?成都鏈安:Lendf.Me 2500萬美元被盜,黑客如何肆虐?資金去了哪兒?

4. withdraw執行完成後,繼續從1583行後的supply函數剩餘的代碼,這部分的代碼主要是記錄賬本數據,攻擊者餘額翻倍的錯誤也是在此處發生的:

整個攻擊過程,舉個例子:

1> 原先攻擊者存款100 imBTC,第一次supply存入100 imBTC,攻擊者賬戶餘額為200 imBTC

2> 第二次supply存入0.1 imBTC,這次發生了重入

2.1 在supply之初,讀取用戶餘額記錄,存入臨時變量temp,值為200.1

2.2 調用imBTC的transferFrom函數轉入代幣時發生了重入,攻擊者調用withdraw取出了當前賬戶的200 imBTC,攻擊者賬戶餘額記錄為0,攻擊者獲得了200 imBTC。withdraw執行完成後繼續執行transferFrom,將0.1 imBTC轉入lendf.me

2.3 繼續執行supply,用臨時變量temp(200.1)更新用戶餘額記錄,攻擊者餘額記錄變為200.1。

此時攻擊者餘額記錄中為200.1 imBTC,手中還有200 imBTC,可以繼續翻倍攻擊。

安全防禦建議:

Defi項目正在快速發展壯大,據我們統計截止2020年,鎖定在以太坊Defi應用中的資產已達到了10億美元。Defi項目的火爆主要來源它的高收益。Defi又被稱為『去中心化金融』,開放式金融的基礎,則是高達8%-10%的收益率必然會伴隨著巨大的風險。

這是一個快速迭代的領域,因此各方Defi團隊開發自己的合約產品也是自由發揮;但並沒有一個統一的、標準的安全方案去遵守,或者說是必須通過嚴格的安全審計,這就導致了各種合約漏洞與相關安全問題層出不窮,此次事件項目方就應該進行重入防護:比如使用OpenZeppelin 的 ReentrancyGuard,另一方面先修改本合約狀態變量,再進行外部調用。

成都鏈安在此建議:任何Defi項目方在開發合約時應重視合約安全問題,以應對各種突發情況和各種非正常使用合約情況,從而避免造成損失;同時建議做好相關安全審計工作,藉助專業的區塊鏈安全公司的力量,避免潛在的安全隱患。

被盜資金流向:

攻擊者在攻擊得手後進行了資金轉移,目前資金去向地址如下:

imBTC Token

0x3212b29e33587a00fb1c83346f5dbfa69a458923

Tokenlon 交易所

0xdc6c91b569c98f9f6f74d90f9beff99fdaf4248b

OneInchExchange 交易所

0x11111254369792b2ca5d084ab5eea397ca8fa48b

Compound USD Coin 借貸平臺

0x39aa39c021dfbae8fac545936693ac917d5e7563

Compound Wrapped BTC 借貸平臺

0xc11b1268c1a384e55c48c2391d8d480264a3a7f4

錢包地址

0x3dfd23a6c5e8bbcfc9581d2e864a68feb6a076d3

Chai Token

0x06af07097c9eeb7fd685c692751d5c66db49c215

AugustusSwapper 交易所

0xf92c1ad75005e6436b4ee84e88cb23ed8a290988

根據成都鏈安AML對攻擊者地址0xA9BF70A420d364e923C74448D9D817d3F2A77822的流出資金進行的持續監控,繪製的攻擊者資金流向圖如下:

成都鏈安:Lendf.Me 2500萬美元被盜,黑客如何肆虐?資金去了哪兒?


分享到:


相關文章: