原文: 《The State of Crypto Security》by Kofi Kufuor
編譯:Katie 辜,Odaily 星球日報
黑客今年從加密應用程序中竊取了20 多億美元。國慶期間,行業又經歷了TokenPocket 閃兌服務商被盜(損失超2100 萬美元)和BNBChain跨鏈橋BSC Token Hub 遭攻擊(損失約5.66億美元)的加密盜竊事件。
隨著加密生態系統的發展,安全攻防戰只會越演越烈。因此,本文將:
- 提出加密安全事件的分類法;
- 列舉出迄今為止讓黑客最賺錢的攻擊手段;
- 回顧當前用於防止黑客攻擊的工具的優缺點;
- 討論加密安全的未來。
一、黑客類型
加密應用生態系統由互操作協議組成,由智能合約支持,依賴於鍊和互聯網的底層基礎設施。此堆棧的每一層都有其獨有的漏洞。我們可以根據利用的堆棧層和使用的方法對加密黑客進行分類。
攻擊基礎設施
對基礎設施層的攻擊利用了加密應用程序的底層系統中的弱點:依賴用於達成共識的區塊鏈、用於前端的互聯網服務和用於私鑰管理的工具。
攻擊智能合約語言
這一層的黑客利用了智能合約語言(如Solidity)的弱點和漏洞,例如可重入性(reentrancy)和實現委託調用(delegatecall)的危險,這些可以通過遵循安全規範來規避。
攻擊協議邏輯
這類攻擊利用單個應用程序業務邏輯中的錯誤。如果黑客發現了一個錯誤,他們可以利用這個錯誤觸發應用程序開發者沒有預料到的行為。
例如,如果一個新的DEX在決定用戶從交易中獲得多少錢的數學方程中出現了錯誤,那麼這個錯誤就可以被利用,使用戶從交易中獲得比本應可能獲得的更多的錢。
協議邏輯級攻擊還可以利用用於控制應用程序參數的治理系統。
攻擊生態系統
許多知名的加密黑客利用了多個應用程序之間的交互。最常見的是黑客利用一個協議中的邏輯錯誤,利用從另一個協議借來的資金來擴大攻擊規模。
通常,用於生態系統攻擊的資金是通過閃電貸(flashloan)借來的。在執行閃電貸時,你可以從Aave和dYdX等協議的流動性池中藉到你想要的金額。
二、數據分析
我收集了2020 年以來100 起規模最大的加密貨幣黑客攻擊的數據集,被盜資金總計50 億美元。
生態系統受到的攻擊最為頻繁。他們佔41%。
協議邏輯漏洞導致了最多的金錢損失。
金額最大的三個攻擊:Ronin 跨鏈橋攻擊(6.24 億美元),Poly Network 攻擊(6.11 億美元)和BSC 跨鏈橋攻擊(5.7 億美元)。
如果排除前三大攻擊,則針對基礎設施的被盜案件是損失資金最多的類別。
三、黑客是如何下手的?
基礎設施
在61% 的基礎設施漏洞中,私鑰是通過未知的方式洩露的。黑客可能通過網絡釣魚郵件和虛假招聘廣告等社會攻擊獲得這些私鑰。
智能合約語言
可重入性攻擊是智能合約語言級別上最熱門的攻擊類型。
在可重入攻擊中,易受攻擊的智能合約中的函數調用惡意合約上的一個函數。或者,當易受攻擊的合約向惡意的合約發送代幣時,可以觸發惡意合約中的函數。然後,在合約更新其餘額之前,惡意函數在遞歸循環中回調易受攻擊的函數。
例如,在SirenProtocol 黑客攻擊中,提取質押品代幣的函數很容易被重入,並被反複調用(每次惡意合約接收代幣時),直到所有質押品耗盡。
協議邏輯
協議層上的大多數漏洞都是特定應用程序獨有的,因為每個應用程序都有唯一的邏輯(除非它是純分叉)。
訪問控制錯誤是樣本組中最常見的重複出現的問題。例如,在Poly Network 黑客事件中,“EthCrossChainManager” 合約有一個任何人都可以調用的功能來執行跨鏈交易。
注意:有很多情況下,多個協議使用相同的技術會被黑客攻擊,因為團隊分叉了一個有漏洞的代碼庫。
例如,許多Compound分叉,如CREAM、Hundred Finance 和Voltage Finance 都成為了重入性攻擊的受害者,因為Compound 的代碼在允許交互之前無需檢查交互的效果。這對Compound 來說很有效,因為他們審查了他們支持的每個新代幣的漏洞,但製作分叉的團隊並沒有這麼做。
生態系統
98% 的生態系統攻擊中都使用了閃電貸。
閃電貸攻擊通常遵循以下公式:使用貸款進行大規模交易,推高貸款協議用作餵價( price feed)的AMM 上的代幣價格。然後,在同一筆交易中,使用膨脹的代幣作為質押品,獲得遠高於其真實價值的貸款。
四、黑客在哪裡下手?
根據失竊的合約或錢包所在的鏈對數據集進行分析。以太坊的黑客數量最多,佔樣本組的45%。幣安智能鏈(BSC)以20% 的份額位居第二。
造成這種情況的因素有很多:
- 以太坊和BSC 擁有最高的TVL(在應用程序中存入的資金),所以對這些鏈上的黑客來說,獎勵的規模更大。
- 大多數加密貨幣開發人員都知道Solidity,這是以太坊和BSC 上的智能合約語言,而且有更複雜的工具支持該語言。
以太坊的被盜資金最多(20 億美元)。 BSC 位居第二(8.78 億美元)。
涉及跨鏈橋或多鏈應用程序(例如多鏈交易或多鏈借貸)對數據集產生了巨大的影響。儘管這些黑客事件只佔總數的10%,但卻竊取了25.2 億美元的資金。
五、如何防止黑客攻擊?
對於威脅堆棧的每一層,我們都可以使用一些工具來早期識別潛在的攻擊載體並防止攻擊的發生。
基礎設施
大多數大型基礎設施黑客攻擊都涉及黑客獲取諸如私鑰等敏感信息。遵循良好的操作安全(OPSEC)步驟並進行經常性的威脅建模可以降低這種情況發生的可能性。擁有良好OPSEC 流程的開發團隊可以:
- 識別敏感數據(私鑰、員工信息、API 密鑰等);
- 識別潛在的威脅(社會攻擊、技術利用、內部威脅等);
- 找出現有安全防禦的漏洞和弱點;
- 確定每個漏洞的威脅級別;
- 制定並實施減輕威脅的計劃。
智能合約語言和協議邏輯
1. 模糊測試工具
模糊測試工具,如Echidna,測試智能合約如何對大量隨機生成的交易做出反應。這是檢測特定輸入產生意外結果的邊緣情況的好方法。
2. 靜態分析
靜態分析工具,如Slither 和Mythril,自動檢測智能合約中的漏洞。這些工具非常適合快速找出常見的漏洞,但它們只能捕獲一組預定義的問題。如果智能合約存在工具規範中沒有的問題,也不會被發現。
3. 形式化驗證
形式化驗證工具,如Certora,將比較智能合約與開發人員編寫的規範。該規範詳細說明了代碼應該做什麼以及所需的屬性。例如,開發人員在構建一個貸款應用程序時,會指定每筆貸款都必須有足夠的質押品支持。如果智能合約的任何可能行為不符合規範,則形式化驗證者將識別該違規行為。
形式化驗證的缺點是測試只和規範保持一樣的標準。如果所提供的規範沒有說明某些行為或過於寬鬆,那麼驗證過程將無法捕獲所有的錯誤。
4. 審計和同行評審
在審計或同行評審期間,一組受信任的開發人員將測試和評審項目代碼。審計員將撰寫一份報告,詳細說明他們發現的漏洞,以及如何修復這些問題的建議。
讓專業的第三方評審合約是發現原始團隊遺漏的漏洞的好方法。然而,審核員也是人,他們永遠不會捕抓到所有漏洞。此外要信任審計員,如果審計員發現了問題,他們會告訴您,而不是自己利用它。
5. 生態系統攻擊
儘管生態系統攻擊是最常見和最具破壞性的類型,現有工具中沒有很多工具適合防止這類攻擊。自動安全工具專注於每次在一個合約中查找錯誤。審計通常無法解決如何利用生態系統中多個協議之間的交互。
像Forta 和tenerly Alerts 這樣的監視工具可以在發生組合性攻擊時提供早期警告,以便團隊採取行動。但在閃電貸攻擊中,資金通常在單筆交易中被盜,因此任何預警都太晚了,無法防止巨大損失。
威脅檢測模型可以用來發現內存池中的惡意交易,在節點處理它們之前,交易就存在於內存池中,但黑客可以通過使用flashbot 等服務直接將交易發送給礦工,從而繞過這些檢查。
六、加密安全的未來
我對加密安全的未來有兩個預測:
1. 我相信最好的團隊將從把安全視為基於事件的實踐(測試->同行評審->審核)轉變為將其視為一個連續的過程。他們將:
- 對主代碼庫中的每一個新增代碼執行靜態分析和模糊處理;
- 對每一次重大升級都進行正式驗證;
- 建立具有響應動作的監視和警報系統(暫停整個應用程序或受影響的特定模塊);
- 讓一些團隊成員制定和維護安全自動化和攻擊響應計劃。
安全工作不應在審計後結束。在許多情況下,例如Nomad 跨鏈橋黑客攻擊,其漏洞是基於審計後升級中引入的錯誤。
2.加密安全社區應對黑客攻擊的過程將變得更有組織和精簡。每當黑客攻擊發生時,貢獻者就會湧入加密安全群組聊天,渴望提供幫助,但缺乏組織意味著重要細節可能會在混亂中丟失。我認為在未來,這些群聊將轉變成更有條理的組織形式:
- 使用鏈上監控和社交媒體監控工具,快速檢測主動攻擊;
- 使用安全信息和事件管理工具協調工作;
- 採取獨立的工作流程,使用不同的渠道溝通黑白客的工作、數據分析、根本原因和其他任務。