7月31號,Curve 在平台表示Vyper 0.2.15 的穩定幣池由於編譯器的漏洞所以遭到攻擊。具體因為重入鎖功能的失效,所以黑客可以輕易發動重入攻擊,即允許攻擊者在單次交易中執行某些功能。
7月31號,Curve 在平台表示Vyper 0.2.15 的穩定幣池由於編譯器的漏洞所以遭到攻擊。具體因為重入鎖功能的失效,所以黑客可以輕易發動重入攻擊,即允許攻擊者在單次交易中執行某些功能。而Curve上的部分資金池又使用了舊版本的編譯器,給黑客提供了機會。
(重入攻擊是一種由於Vyper 的特性加上智能合約編寫不當導致的漏洞,之前已經多次發生,歐科雲鏈的安全團隊之前有過對此類案例的詳細分析,點擊文末左下角“閱讀原文”查看,所以本文對攻擊細節不再展示)
緊接著其他多個項目都宣布遭受到了攻擊,NFT 質押協議JPEG’d,借貸項目AlchemixFi 和DeFi 協議MetronomeDAO,跨鏈橋deBridge、採用Curve 機制的DEX Ellipsis等都分別遭受巨額損失。
然而在7月30號,一些項目方已經知道了潛在的攻擊威脅。以Alchemix 為例,在30號就已經開始轉出資產,而且已經成功的轉出8000ETH,但是在轉移資產的過程中,依然被攻擊者盜取在AMO 合約的剩餘5000ETH。
圖片來源:OKLink Explorer
其他項目方也相繼採取了一些措施,如AAVE 禁止Curve 進行借貸;Alchemix 也從曲線池中移除AMO 控制的流動性;Metronome 直接暫停主網功能。
如何從攻防兩端防範黑客進攻?
Curve 不是第一次出現被黑客攻擊的事件了,作為Defi 的頂級項目都無法免疫黑客攻擊,普通的項目方更應該在黑客攻擊端和合約防守端重視起來。
那麼針對進攻端,項目方可以做哪些準備呢?
OKLink 團隊推薦項目方通過鏈上標籤系統提前辨別有黑歷史的錢包,阻止有過異常行為地址的交互。 Curve 的其中一個攻擊者的地址就有過不良記錄曾被OKLink 記錄,如下圖所示:
圖片來源:OKLink Chaintelligence Pro
其行為模式也一定程度上超出常理,如下圖所示,有三日交易筆數過百。
圖片來源:OKLink Onchain AML
項目方如何在防守端進行防禦呢?
針對上述事件梳理,我們發現項目方在處理此類事件的兩點問題,
1. 維護工作不到位。大部分項目非常注重代碼的編寫和審核,但是維護工作一直沒受到重視,Vyper 編譯器的這個漏洞是兩年前被發現的,但受攻擊的池子還是採用的舊版編譯器。
2. 代碼測試場景過於單一。很多測試代碼起不到真正的測試問題的作用,應增加模糊測試等更複雜的測試手段,且應該在黑客攻擊途徑,攻擊複雜度,機密性,完整性等多個維度進行測試的工作。
被盜資金如何追回?
現實中,大部分被盜資金都難以追回。下圖是黑客轉出資金去向,可以看到被盜ETH 沒有對外轉出動作,地址也沒有和實體機構相關聯。
圖片來源:OKLink Chaintelligence Pro
有一部分地址和實體機構有關聯的,如地址0xb752DeF3a1fDEd45d6c4b9F4A8F18E645b41b324 (已歸還2,879.54 ETH),類似地址有關聯實體機構的,我們可以通過報警和實體機構協商的辦法追回資金。
圖片來源:OKLink Chaintelligence Pro
針對此次事件的正確做法是通過OKLink 或者其他技術服務商的預警和跟踪功能,等待沉澱地址的後續的資金動向,在進一步實施行動。但是,最好的方法是行業團結一致制定基於安全事件的響應機制,可以對有異常行為進行更好的打擊。
給我們的警示
重入攻擊此類的安全事件一定還會發生,所以除了上述在攻防兩端我們需要付出的努力外,項目方需要做好應急預案,當受到黑客攻擊時能最及時的進行反應,減少項目方和用戶的損失。 Vyper貢獻者也建議,對於Vyper 此類公共產品我們應該加強公眾激勵,尋找關鍵漏洞。 OKLink呼籲應該儘早建立起一套安全響應標準,讓黑/灰地址的資金追踪變得更加容易。
正如OKLink 產品在此類事件中的攻防兩端起到防範黑客和追查資金的作用,項目方在搭建平台的安全模塊時應考慮第三方技術服務商可以帶來的額外價值,更快更好的築起項目的安全堡壘。
歐科雲鏈的Raymond Lei 和Mengxuan Ren 對此文亦有幫助。