加密安全啟示錄
黑客今年從加密應用程序中竊取了超過2B 美元。 DAOrayaki去中心化編輯委員會撰寫此文時,又發生兩起黑客攻擊事件:Rabby wallet 、Solana生態去中心化金融平台Mango。隨著加密生態系統的發展並吸引更多的惡意行為者,問題只會變得更糟。有些事情必須改變。是時候退後一步,反思過去的錯誤,並改變我們在這個行業中處理安全性的方式。
在這篇文章中,我們將:
-
提出一個對加密貨幣黑客進行分類的框架
-
概述迄今為止最有利可圖的黑客所使用的方法
-
回顧目前用於防止黑客的工具的優勢和劣勢
-
討論加密貨幣安全的未來
1、加密貨幣黑客攻擊分類框架
加密應用生態系統由可互操作的協議組成,由智能合約提供支持,依賴於主鍊和互聯網的底層基礎設施。
由於堆棧的每一層都有其獨特的漏洞。我們可以根據被利用的堆棧層和使用的方法對加密黑客進行分類。
基礎設施
對基礎設施層的攻擊利用了支持加密應用程序的底層系統的弱點:它依賴於達成共識的區塊鏈、用於前端的互聯網服務以及用於私鑰管理的工具。
智能合約語言
這一層的黑客利用了Solidity 等智能合約語言的弱點。智能合約語言中存在眾所周知的漏洞,例如可重入性和錯誤的委託調用實現的危險,可以通過遵循最佳實踐來緩解這些漏洞。
*有趣的事實:用於執行6000 萬美元The DAO 黑客攻擊的漏洞實際上是由Least Authority 在對以太坊的安全審計中發現的。有趣的是,如果在發布前已經修復,事情會有多不同。
協議邏輯
此類攻擊利用單個應用程序的業務邏輯中的錯誤。如果黑客發現錯誤,可以使用它來觸發應用程序開發人員無意的行為。
例如,如果一個新的去中心化交易所在確定用戶從exchange中獲得多少的數學方程式中存在錯誤,則可以利用該錯誤從exchange中獲得比本應可能的更多的錢。
協議邏輯級攻擊還可以利用現有的治理系統來控制應用程序的參數。
生態系統
許多最具影響力的加密黑客利用了多個應用程序之間的交互。最常見的變體是黑客利用從另一個協議借來的資金利用一種協議中的邏輯錯誤來擴大攻擊規模。
通常,用於生態系統攻擊的資金是通過快速貸款借入的。在執行閃電貸款時,只要資金在同一筆交易中歸還,您就可以從Aave 和dYdX 等協議的流動資金池中藉入盡可能多的資金,而無需提供抵押品。
2、數據分析
從2020 年起,我們採集了100 個最大的加密黑客數據集,被盜資金總計5B 美元。
生態系統攻擊最常發生。佔樣本組的41%。協議邏輯漏洞導致的損失最大。
數據集中最大的三次攻擊,即Ronin bridge攻擊(6.24億美元)、Poly Network黑客(6.11億美元)和Binance bridge黑客(5.7億美元),對結果產生了巨大的影響。
如果排除前三種攻擊,則基礎設施黑客攻擊是損失資金影響最大的類別。
3、黑客如何執行
基礎設施攻擊
在樣本組中61% 的基礎設施漏洞利用中,私鑰被未知方式破壞。黑客可能已經通過網絡釣魚電子郵件和虛假招聘廣告等社交攻擊獲得了對這些私鑰的訪問權限。
智能合約語言攻擊
重入攻擊是智能合約語言級別上最流行的攻擊類型。
在重入攻擊中,易受攻擊的智能合約中的函數調用惡意聯繫人的函數。或者,當易受攻擊的合約向惡意合約發送代幣時,可以觸發惡意合約中的功能。然後,在合約更新其餘額之前,該惡意函數會在遞歸循環中回調易受攻擊的函數。
例如,在Siren Protocol hack 中,提取抵押代幣的功能很容易被重入並被反複調用(每次惡意合約收到代幣時),直到所有抵押品都被耗盡。
協議邏輯攻擊
協議層上的大多數漏洞都是特定應用程序獨有的,因為每個應用程序都有獨特的邏輯(除非它是純分叉)。
訪問控制錯誤是樣本組中最常出現的問題。例如,在Poly Network hack 中,“EthCrossChainManager”合約具有任何人都可以調用以執行跨鏈交易的功能。
該合約擁有“EthCrossChainData”合約,因此如果您將“EthCrossChainData”設置為跨鏈交易的目標,則可以繞過onlyOwner()審查。
剩下要做的就是製作正確的消息來更改哪個公鑰被定義為協議的“保管人”,奪取控制權並耗盡資金。普通用戶永遠無法訪問“EthCrossChainData”合約上的功能。
**注意:在許多情況下,多個協議使用相同的技術被黑客入侵,因為團隊分叉了一個存在漏洞的代碼庫。
例如,CREAM、Hundred Finance 和Voltage Finance 等許多Compound 分叉成為重入攻擊的受害者,因為Compound 的代碼在允許交互之前沒有檢查交互的效果。這對Compound 來說效果很好,因為他們審查了他們支持的每個新代幣的漏洞,但分叉團隊並沒有做這樣的努力。
生態系統攻擊
98% 的生態系統攻擊都使用了閃電貸。
Flashloan 攻擊通常遵循以下公式:使用貸款進行大規模掉期,從而推高AMM 上的代幣價格,而AMM 將其用作價格饋送。然後,在同一筆交易中,使用膨脹的代幣作為抵押,獲得遠高於其真實價值的貸款。
4、何時執行黑客攻擊
數據集不夠大,無法從時間分佈中得出有意義的趨勢。但我們可以看到,不同類型的攻擊在不同的時間更頻繁地發生。
2021 年5 月是生態系統攻擊的歷史新高。 2021 年7 月的協議邏輯攻擊最多。 2021 年12 月發生的基礎設施攻擊最多。很難判斷這些集群是否是巧合,或者它們是否是一個成功的成功案例,激勵同一演員或其他人專注於特定類別。
智能合約語言級別的漏洞利用是最罕見的。該數據集始於2020 年,當時該類別中的大多數漏洞利用已經廣為人知,並且很可能很早就被發現。
隨著時間的推移,被盜資金的分佈有四個主要峰值。 2021 年8 月有一個高峰,這是由Poly Network 黑客驅動的。 2021 年12 月,由於大量基礎設施黑客攻擊導致私鑰遭到破壞,例如8ight Finance、Ascendex 和Vulcan Forged,又出現了另一次高峰。然後,由於Ronin 黑客攻擊,我們看到了2022 年3 月的歷史新高。最後的峰值是由BNB bridge被攻擊引起的。
5、黑客在哪裡執行
根據託管資金被盜的合約或錢包的鏈來分割數據集。以太坊的黑客數量最多,佔樣本組的45%。幣安智能鏈(BSC)以20% 位居第二。
造成這種情況的因素有很多:
-
以太坊和BSC 的鎖定總價值(存入應用程序的資金)最高,因此對於這些鏈上的黑客來說,獎金的規模更大。
-
大多數加密開發人員都知道Solidity,這是以太坊和BSC 上選擇的智能合約語言,並且有更複雜的工具支持該語言
以太坊被盜的資金量最大(20億美元),BSC位居第二(8.78億美元)。以太坊、BSC和Polygon上的資金被盜的黑客在一次事件中排名第三(6.89億美元)。這主要是因為Poly Network 攻擊事件。
涉及跨鏈橋或多鏈應用的黑客(如多鏈交換或多鏈借貸)對數據集有巨大影響。儘管只佔事件的10%,這些黑客佔了25.2億美元的被盜資金。
6、我們如何防止黑客入侵
對於威脅堆棧的每一層,我們可以使用一些工具來及早識別潛在的攻擊向量並防止攻擊發生。
基礎設施
大多數大型基礎設施黑客攻擊都涉及黑客獲取敏感信息,例如私鑰。遵循良好的運營安全(OPSEC) 實踐並進行經常性威脅建模可降低發生這種情況的可能性。擁有良好OPSEC 流程的開發人員團隊將:
-
識別敏感數據(私鑰、員工信息、API 密鑰等)
-
識別可能的威脅(社交攻擊、技術漏洞、內部威脅等)
-
識別現有安全防禦中的漏洞和弱點
-
確定每個漏洞的威脅級別
-
創建並實施計劃以減輕威脅
-
智能合約語言和協議邏輯
模糊測試
像Echidna 這樣的模糊測試工具可以測試智能合約如何對大量隨機生成的交易做出反應。這是檢測特定輸入產生意外結果的邊緣情況的好方法。
靜態分析
靜態分析工具,如Slither和Mythril,自動檢測智能合約中的漏洞。這些工具對於快速挑出常見的漏洞是很好的,但它們只能抓住一組預定義的問題。如果智能合約有一個不在工具規範中的問題,它將不會被看到。
形式驗證
形式驗證工具,如Certora,會將智能合約與開發人員編寫的規范進行比較。該規範詳細說明了代碼應該做什麼及其所需的屬性。例如,開發貸款應用程序的開發人員會指定每筆貸款都必須有足夠的抵押品支持。
如果智能合約的任何可能行為不符合規範,正式驗證者將識別該違規行為。
形式化驗證的弱點是,測試只和規範一樣好。如果所提供的規範沒有考慮到某些行為,或者過於寬鬆,那麼驗證過程將無法捕獲所有的錯誤。
審計和同行評審
在審計或同行評審中,一個受信任的開發者小組將測試和評審項目的代碼。審計員會寫一份報告,詳細說明他們發現的漏洞以及如何修復這些問題的建議。
讓第三方專家審查合約是識別原團隊所遺漏的漏洞的一個好方法。然而,審計師也是人類動物,不可能發現所有的東西。另外,還必須對此信任,如果審計師發現了問題,他們會告訴你,而不是自己去利用它。
生態系統攻擊
令人沮喪的是,儘管生態系統攻擊是最常見和最具破壞性的變體,但工具箱中並沒有多少工具適合防止這些類型的攻擊。
自動化安全工具專注於一次發現一個聯繫人中的錯誤。審計通常無法解決如何利用生態系統中多個協議之間的交互。
Forta 和Tenderly Alerts 等監控工具可以在發生可組合性攻擊時發出預警,以便團隊採取行動。但在閃電貸攻擊期間,資金通常在單筆交易中被盜,因此任何警報都來得太晚,無法防止巨額損失。
威脅檢測模型可用於在內存池中查找惡意交易,其中交易位於節點處理之前,但黑客可以通過使用flashbots 等服務將交易直接發送給礦工來繞過這些檢查。
7、加密安全未來預測
1)我相信最好的團隊將從將安全視為基於事件的實踐(測試-> 同行評審-> 審計)轉變為一個持續的實踐過程。他們將:
-
對主代碼庫的每個添加運行靜態分析和模糊測試。
-
在每次重大升級時運行形式驗證。
-
使用響應操作(暫停整個應用程序或受影響的特定模塊)設置監控和警報系統。
-
讓一些團隊成員專門負責制定和維護安全自動化和攻擊響應計劃。
-
安全性不是一組要填寫和擱置的複選框。安全工作不應在審計後結束。在許多情況下,例如Nomad bridge hack,漏洞利用是基於審計後升級中引入的錯誤。
2)加密安全社區應對黑客攻擊的流程將變得更有條理和精簡。每當發生黑客攻擊時,貢獻者就會湧入渴望提供幫助的加密安全群組聊天,但缺乏組織意味著重要的細節可能會在混亂中丟失。我看到未來其中一些群聊會轉變為更結構化的組織:
-
使用鏈上監控和社交媒體監控工具快速檢測主動攻擊。
-
使用安全信息和事件管理工具來協調工作。
-
獨立的工作流,有不同的渠道來溝通白黑客工作、數據分析、根本原因理論和其他任務。