根據DefiLlama通報,迄今為止,跨鏈橋累計被盜資金超過28億美元,幾乎佔整個Web3產業被盜資金總量的40%。
整個Web3產業被竊資金總量為76.8億美元,其中跨鏈橋被竊資金就達28.3億美元,是受攻擊最嚴重的賽道之一
毋庸置疑,跨鏈是激發Web3創新的關鍵要素。然而,它也會造成潛在的攻擊向量。在軟體產業中,許多開發者都信奉「快速破局」(move fast and break things)的原則。但一旦涉及幾百億甚至幾兆美元用戶資金的跨鏈安全性,這項原則就完全行不通了。如果你速度太快,就可能出問題。
什麼是跨鏈橋?
跨鏈橋是一種去中心化應用,能夠將資產從一條區塊鏈轉移到另一條區塊鏈。
如今,跨鏈橋在設計和用途上都大相逕庭。例如,一些跨鏈橋專門用於在L2和底層區塊鏈之間轉帳。而基於Chainlink CCIP等跨鏈協議開發的通用型跨鏈橋則可以在各條區塊鏈之間無縫傳輸資產和訊息。
跨鏈橋是Web3基礎架構的核心要素。對用戶來說,跨鏈橋可以在鏈與鏈之間無縫轉移通證和訊息;而對開發者來說,則可以利用跨鏈協議來打造可相容於任何區塊鏈的用戶體驗,極大簡化基礎設施。如今,所有跨鏈橋每月的交易量共60億以上。顯而易見,這條賽道已經成為了Web3生態不可或缺的一環,並且得到了廣泛應用。
因此,無論是使用者、開發者或機構,如果想要研究跨鏈賽道,都必須了解跨鏈橋的七大關鍵漏洞,以保護自身、使用者以及利害關係人的安全。
私鑰管理漏洞
跨鏈橋通常會使用一個或一組私鑰來管理。一個或多個跨鏈橋運行節點各自會持有一把獨特的私鑰。他們的任務是對用戶發送的跨鏈訊息或傳輸的價值達成共識,並準確地將訊息或價值進行跨鏈傳輸。他們會使用私鑰來進行數位簽名,或使用多個私鑰組成門限簽名,以批准跨鏈訊息。
因此,私鑰被盜是跨鏈橋最常見的漏洞之一。 Web3產業中最臭名昭著的跨鏈橋被盜事件都是因為私鑰被盜導致的。而私鑰被盜通常是因為私鑰管理或跨鏈橋運行安全出現漏洞。
一個大致的原則是,跨鏈橋及其私鑰如果在伺服器、基礎設施提供者、部署地點和節點運營商這幾個方面越去中心化,那麼就越有能力防範單點失效和中心化風險。
中心化的網路不僅容易被攻擊,還會出現某一方全權控制所有用戶資金的情況
去中心化的模式可以有效防範中心化風險。在去中心化模式下,任何攻擊者(或甚至運行跨鏈橋的節點)都必須同時對多個獨立實體的私鑰進行攻擊,才有可能成功,因此極大降低了內外部攻擊發生的機率。這是一種非常穩健的安全模式。不過,要保障私鑰安全還需要考慮到其他因素。另外一個同樣重要的因素就是,各個跨鏈橋運行節點需要獨立採用不同的安全機制來保障私鑰安全。
最佳實踐
雖然去中心化可以很好地避免單點失效,但要保障私鑰安全還需要同時採取多種措施。安全性最高的跨鏈協定通常既會採用去中心化的模式來保障安全,也會採用成熟的解決方案來保存私鑰,例如硬體安全模組(HSM)、加密(傳輸中的資料和靜止資料) 、網路詐騙防範教育、權限控制以及金鑰管理服務等。
由於私鑰被盜導致跨鏈橋遭受攻擊的真實案例
-
Ronin跨鏈橋(2022年3月)-在Ronin跨鏈橋上進行、核准、執行交易所需的九把私鑰中有五把被竊。
-
Harmony跨鏈橋(2022年6月)-在Harmony跨鏈橋上進行、核准和執行交易所需的五把私鑰中有兩把被竊。
-
Multichain跨鏈橋(2023年7月)-跨鏈橋私鑰被盜,導致資金未經批准就被取出。而這些私鑰都由Multichain的CEO一人持有。
-
Orbit Chain(2024年1月)-Orbit Chain跨鏈橋的十把私鑰中有七把被盜,導致資金池被抽乾。
智能合約審計漏洞
由於跨鏈橋的主要功能是將價值從一條鏈轉移到另一條鏈,因此所有跨鏈協定都必須涉及智慧合約。
在大多數的跨鏈用例中,都需要使用多條鏈上的智能合約來鑄造、銷毀、鎖定或解鎖跨鏈通證。這些智能合約透過跨鏈橋連接,通常會與通證發行者建立合作。
可以說,智慧合約是防止跨鏈橋被盜的額外安全層,但如果智慧合約本身出現漏洞,也有可能導致技術風險。一方面,智能合約為跨鏈橋提供了寶貴的平台,可以開展各類常規安全檢查,例如確保用戶取出的金額不超過存入的金額以及設置跨鏈橋的速率限制(rate limit)。另一方面,如果智能合約程式碼品質很差或沒有經過嚴格審計,那麼就會適得其反。駭客利用智慧合約程式碼漏洞已經從多個跨鏈橋盜走了數額龐大的資金。
任何項目,無論它對安全多麼看重,都無法完全保障它的智能合約程式碼中沒有技術漏洞。不過有一個非常成熟的方案可以保障程式碼的穩健性,那就是與經驗豐富的第三方審計合作,對專案程式碼庫進行測試,測試通過後再發布。這並非一勞永逸的事情,因為一旦程式碼庫在審計後做了更改,或未審計的智能合約添加到了已審計的程式碼庫中,那麼即使是最完整的程式碼庫都會立即回到未審計的狀態。
最佳實踐
在使用跨鏈協定時,智能合約的風險是真實存在的。安全性最高的跨鏈橋往往會對其程式碼庫持續展開多次內部稽核和競爭性的外部審計。另外,這些跨鏈橋還會進行一系列內部安全測試,例如模糊測試、靜態分析、形式驗證以及符號執行等。
如果要了解跨鏈橋潛在的技術風險,就需要查看其程式碼庫的審計次數以及審計人員等相關資訊。另外,還需要建立緊急關停和緊急更新等多層安全模式,並設定速率限制,這些都可以有效降低智慧合約漏洞的風險。
由於智慧合約漏洞導致的跨鏈橋被盜真實案例
-
Wormhole跨鏈橋(2022年2月)-駭客找到了跨鏈橋智慧合約中驗證步驟的漏洞,在抵押資產不足的情況下在Solana鏈上鑄造了12萬枚wETH。
-
Nomad跨鏈橋(2022年8月)-跨鏈橋智能合約代碼中預設接受的根帳戶(0x00)實現方式出現了錯誤,導致任何人都可以從跨鏈橋中盜走資金。
-
幣安跨鏈橋(2022年10月)-跨鏈橋智能合約中IAVL默克爾證明驗證系統有漏洞,導致跨鏈橋被攻擊。這次攻擊導致200萬個BNB從跨鏈橋轉到了攻擊者帳戶。
-
Socket互通性協定(2024年1月)-協定智能合約有漏洞,導致錢包對Socket智能合約出現無限批准。
升級流程漏洞
可升級性指智慧合約程式碼的升級能力,或更改智能合約程式碼中部分參數配置的能力。
開發者通常會採用可升級的智慧合約來進行升級,以新增功能、解決智慧合約邏輯錯誤並修改關鍵的風險參數。跨鏈橋可以透過升級來添加新的通證和區塊鏈,採用新技術來驗證跨鏈訊息,調整資金提取限額和節點組成等關鍵風險參數,並迅速解決底層智能合約中新發現的任何邏輯錯誤。
可升級的智能合約需要在終端用戶、前端實現和底層智能合約之間開發代理合約
可升級性對於安全性來說至關重要,因為如果升級流程出現漏洞,就可能造成潛在的攻擊向量。跨鏈橋要具備安全的可升級性,就需要採取深度防禦機制,其中包括建立穩健的私鑰管理機制,密鑰由多個獨立實體分別持有;採用時間鎖延遲機制,讓用戶可以在鏈上更改生效前提前查看;建立穩健的審批流程,例如跨鏈橋運行節點可以一票否決在時間鎖有效期內的決議。在特殊情況下,如果需要快速實現升級,跨鏈橋運行節點在評估更改決議後可以直接批准通過。
最佳實踐
要不斷適應發展需求並應對未知狀況,就必須實現可升級性。然而,升級流程如果存在漏洞,可能會為跨鏈協議帶來潛在風險。時間鎖智慧合約和節點一票否決機制是重要的工具,可以加強升級流程。然而,要保障跨鏈橋安全也必須制定緊急應變計畫,並同時保障最高水準的安全性。
依賴單一網絡
有些跨鏈橋依賴單一驗證節點網路進行所有跨鏈操作。如果跨鏈橋專門用來連接兩條指定的區塊鏈,那麼單一網路這個方案也許可行。但如果要用通用型跨鏈橋連接多鏈世界,那麼這個方案既不安全也不可擴展。
避免使用這類跨鏈橋有一個最重要的原因,那就是一旦跨鏈橋被攻擊,使用者受到的打擊最為嚴重。由於所有跨鏈交易及其價值都由一個網路支撐,所以一旦網路成功被攻陷,所有區塊鏈的跨鏈橋都會全軍覆沒,風險幾乎無法隔離。
利用多個獨立的去中心化網路可以有效隔離風險,防止因一次跨鏈橋攻擊導致所有區塊鏈和用戶的資金全部被盜
採用獨立的多網路設計結構是更安全且可擴展的解決方案,具體如下:
-
跨鏈通道由獨立的去中心化網路運作。這意味著,每條跨鏈通道都有一個獨立的去中心化網絡,每兩條區塊鏈之間都有一個單獨的跨鏈通道。這樣做可以將一次攻擊的影響限制在某一條跨鏈通道內。
-
每條跨鏈通道都由多個網路保障安全。安全性最高的跨鏈橋和協定都會為每條跨鏈通道創建多個網絡,以增強安全性。這樣一來,攻擊者必須要同時攻陷一條安全通道的多個網絡,才能成功。因此,這也為安全通道提供了額外的安全層。
Chainlink CCIP為單一跨鏈通道建立多個網絡,是唯一一個達到第五層(也是最高層)跨鏈安全性的跨鏈協議
最佳實踐
為每條跨鏈通道創建多個獨立的去中心化網絡,可以大幅降低攻擊面以及攻擊者的回報率。這個方案的最佳實踐還包括採用多種程式語言開發客戶端,以實現客戶端的多樣性;創建單獨的節點集合,保障這些節點與網路節點無重疊;以及添加主動風控功能。
驗證節點集合品質差
驗證節點是所有跨鏈橋的靈魂。節點包括各類人員和組織,他們負責維護基礎設施,運作跨鏈橋功能。
使用者、機構和dApp開發者應該警惕驗證節點由於缺乏經驗和知識而導致無法安全運行跨鏈橋的風險。安全性最高的跨鏈橋通常會要求其驗證節點擁有世界一流的水平和豐富的經驗,保障運行安全(OPSEC),妥善保管私鑰並可靠處理和執行跨鏈交易。
Chainlink節點和預言機網路由世界一流的節點營運商負責運行
其中第二點經常被使用者、開發者和機構所忽略。對於任何一個跨鏈橋用戶來說,節點網路最大的風險就是無法可靠地執行交易。例如,用戶在一條鏈上鎖定資金,然後準備在另一條鏈上鑄造相應的資金。但如果由於節點網路下線而無法批准鑄造,那麼用戶資金實際上就會被凍結。
最佳實踐
跨鏈橋應該只採用優質的節點,而這些節點要具備豐富的運作安全經驗、卓越的效能和強大的穩健性。運作安全並非Web3獨有的能力,因此許多Web2和Web3的驗證節點都可以加入。不過在招募跨鏈橋節點時很有必要核實節點的過往記錄。另外,也可以要求驗證節點進行質押,一旦出現違規行為或操作,質押的保證金就會被沒收。這樣做可以激勵驗證節點誠實可靠地展開工作,並創建新的經濟安全層。
缺乏主動交易監控
主動監控交易的目的是即時監控跨鏈橋的異常行為,並作出回應。如果主動交易監控機制實施得當,就可以很好地監測到可疑行為並立刻採取必要的防禦措施,以防範攻擊。
主動交易監控的典型用例就是在執行可疑交易前或通過惡意交易後緊急關停跨鏈系統。惡意交易包括在抵押資產不足的情況下成功取走跨鏈橋的全部資產。
由於缺乏主動交易監控而導致的跨鏈橋被盜真實案例
-
Ronin跨鏈橋(2022年3月)-據Halborn區塊鏈安全公司所稱,Ronin跨鏈橋被盜6天後才被發現。如果Ronin建立了主動交易監控機制,本來可以及時發現並解決這個問題的。
最佳實踐
主動交易監控通常由一組與跨鏈橋主節點完全不相關的獨立實體或節點網路組成。這樣做可以清楚地劃分責任,並實現相互制衡的機制,降低一個或一組節點操縱即時回應的可能性。
缺乏速率限制
速率限制(rate limit)並不是一個新的概念。在傳統軟體產業中,速率限制是網站採用的安全機制,目的是防範DoS攻擊。資料提供者也會採用此機制來防範過多API要求所導致的伺服器宕機。
這個概念非常簡單,即:在時間和數量的維度上限制請求數量。那麼是什麼樣的請求呢?在跨鏈世界中,速率限制指限制某一段時間內兩條鏈之間可以傳輸的最大資金價值。
這個安全機制看起來雖然簡單,但卻是跨鏈橋最後一道堅實的防線。即使駭客成功穿透了其他所有防線,速率限制仍可以限制他們能夠從跨鏈橋盜取的金額。
速率限制就像是在水桶上穿一個小洞,在單位時間內只有定量的水可以流出來
由於缺乏速率限製而導致的跨鏈橋被盜真實案例
-
如果設定了速率限制和緊急關停功能,並且在實現過程中沒有任何邏輯錯誤,那麼所有跨鏈橋攻擊中短時間內被盜的資金都可以被限制在一定金額內。
最佳實踐
每條跨鏈通道的速率限制都應該客製化,以在最大程度上實現安全性和模組化。另外,每條跨鏈通道也應該限制所有資產加在一起的跨鏈傳輸總額。設定合理的吞吐量速率(即:每十分鐘最多傳輸X枚通證)可以有效防範攻擊者在一次交易中抽乾資產池中的所有資產。另外,還可以針對各個跨鏈資產和跨鏈通道設定「儲值速率」(refill rate),以避免攻擊者等到速率限制歸零後再盜走上限資產。
Chainlink CCIP可以實現
前所未有的跨鏈安全性
我們要明白一點,那就是要實現跨鏈安全性,只採取某一種安全機制是不夠的。實際上,要建立穩健的跨鏈安全模式,需要採取深度防禦機制,綜合使用多種安全機制,全面地防範攻擊。
安全性最高的跨鏈橋通常採用深度防禦機制,綜合使用多種安全機制。
這也是我們建構產業標準的跨鏈解決方案Chainlink CCIP的初衷。