撰文:Jonathan Claudius, Anirudh Suresh, Eric Wong, Akshath Sivaprasad
編譯:0x9F,0x214,BlockBeats
在物理和加密的世界中,橋樑都是為了連接兩個被障礙物隔開的地方。物理橋樑連接被山谷、河流等自然屏障隔開的土地,而跨鏈橋協議則連接原本沒有辦法進行通信和同步的區塊鏈。每當橋樑遭受摧毀和攻擊,其重要性就得以彰顯。在物理世界中,歷史上有據可查的災難性橋樑坍塌事件足以表明它們是多麼重要,以及設計或建造不當的橋樑是多麼危險。
加密世界的「跨鏈橋」協議亦是如此。跨鏈橋在安全風險方面極易被盯上。從智能合約可能的漏洞和攻擊的規模角度來看,跨鏈橋呈現出一個二次方風險面:隨著橋接的區塊鏈數量增加,維持跨鏈橋運行所需的智能合約數量也呈二次方增長(至少在點對點模型中如此)。根據定製配置在不同運行時間編寫的更多智能合約也迅速增加了跨鏈橋風險。在輪輻模型中,一個與中心鏈/ 網絡相關的漏洞會導致不對稱的風險。
正如最近的 Nomad 攻擊事件所示,一個錯誤可能導致橋樑的大部分或全部資金損失。然而漏洞與跨鏈橋無關,可能只是源於一個操作上的失誤。在Ronin 跨鏈橋的案例中,糟糕的操作安全措施讓網絡釣魚攻擊有機可乘,黑客獲得了對保障網絡安全的大部分驗證節點的控制權,從而能夠攜帶價值超過5 億的資金逃之夭夭。 2 月份發生的Wormhole 攻擊事件同樣是由於驗證審查的缺失,讓攻擊者能夠創建一個虛假簽名,竊取超過3.2 億美元。
如果不關注安全性,不可避免地會發生更多的疏忽,因而遭受攻擊和損失。對黑客而言,跨鏈橋規模巨大的TVL 比普通協議更具吸引力。
上述的攻擊事件均與協議的橋接邏輯無關,而是與智能合約漏洞和操作疏忽有關。即使使用最精心編寫的代碼,經過最棒的安全審計,隨著連接的區塊鍊和啟用功能的數量增加,也必然會有被遺漏的漏洞。出於這個原因,跨鏈橋需要被配置為不僅在正常情況下能夠安全工作,更重要的是能夠應對極端情況。
用戶在使用跨鏈橋時主要關注以下幾個特性:良好的用戶體驗、低滑點高效率和資產安全。其中,安全性是評估跨鏈橋的重中之重。
考慮到這一點,讓我們看看不同橋樑是如何迭加其安全性的。我們將從以下三個層面展開討論,比較不同跨鏈橋的安全性。
-
信任假設
-
代碼質保
-
安全特性
前兩者將討論:跨鏈橋在信任層和源代碼這兩個層面上是否充分考慮了其脆弱性/ 漏洞的根源。最後一點涉及到,一個協議是否承認,不管多麼仔細地編碼與審計,漏洞不可避免,並且能相應地建立了額外的保障措施,以盡可能減少用戶的潛在損失。
為了保持完全透明,在深入討論之前,我們承認Jump Crypto 確是Wormhole 項目的運營監護人,並且是Wormhole 的核心貢獻者之一,但我們在這篇文章中將盡可能客觀評估,我們歡迎和接受任何關於如何改進這篇文章的反饋,以展現跨鏈橋之間差異的詳細情況。
信任假設
從其核心構成,跨鏈橋可以被分解成3 個組成部分:
-
智能合約(Smart contract):發出/ 接收每條區塊鏈信息
-
預言機(Oracle):驗證信息是否來自原始鏈
-
中繼器(Relayer):將消息提交給目標鏈
在實踐中,跨鏈橋在預言機上實現共識(圍繞信息是否有效)這一方面可能存在很大差異,這也進一步影響中繼器。
在我們深入研究之前,這裡是對該領域一些最流行的橋接器所使用的共識機制的一個快速介紹。
Axelar
Axelar 在基於Cosmos PoS 網絡上運行,驗證者由Token 持有者選舉產生,並按比例獲得投票權,投票權重由委託權益加權計算得出。 Axelar 網絡通過(t,n) 閾值簽名方案來驗證跨鏈信息,其中籤名者的投票權,權重歸一化為n,n 必須大於t,即協議閾值,才能簽署一個信息。 Axelar 網絡目前最多有50 個驗證者,並且必須獲得超過66.67% 的多數投票才能簽署消息(這兩個變量都可以通過治理投票進行修改)。
理論上,驗證者的數量可以無限大,但在實踐中,因為驗證者不需要為每條區塊鏈運行節點,投票權會出現傾斜。在Axelar 目前的驗證者名單中共有47 個驗證者,但只有20 個擁有實際有效的投票權。在某條特定區塊鏈上,這一數字更小。例如,如果我們只考慮驗證Aurora 上的信息,只需要8 個節點就可以成功發送一條消息,只需要4 個節點審查這一消息。
LayerZero
LayerZero 是一個跨鏈互操作協議,它將區塊鏈之間的無需信任通信問題簡化為預言機(Oracle)和中繼器(Relayer)這兩個實體之間的獨立性問題。預言機將區塊頭轉發給目標鏈,而中繼器將交易證明轉發給目標鏈,兩者共同證明消息是有效的,且信息確實提交到原始鏈上。用戶應用程序(UA)可以自由使用LayerZero 的默認預言機和中繼器,也可以創建和運行自己的預言機和中繼器。
默認的預言機是一個Chainlink 去中心化預言機網絡(DON),它在三個參與者(FTX、Polygon 和Sequoia)之間使用閾值簽名方案(Threshold signature)。在撰寫本文時,由於LayerZero 代碼庫的閉源性質,筆者對其執行情況缺乏了解。關於特定應用版本的預言機,LayerZero 自己的Ackee 審計指出,對創建和運行自己的預言機和中繼器的應用來說,成功提交一個無效的交易證明和區塊頭並不困難。不過,這種模塊化確實提供了好處,如果未來出現任何漏洞,都將僅作用於那些使用受影響的預言機- 中繼器對的應用程序。
LayerZero 的信任假設取決於兩個實體的行為——只要預言機和中繼者彼此獨立運行,就不可能成功發送無效消息。但反過來而言,因為這一系統要求預言機和中繼者均正常運行才得以驗證信息,兩者中任何一方都可以任意刪除信息數據。
Multichain
Multichain 是一個跨鏈信息傳遞協議,源自之前的Anyswap。 Multichain 使用安全多方計算(SMPC)來運行閾值簽名方案,創建公鑰並簽署鏈與鏈之間傳遞的消息。這些節點以無需信任的方式控制用戶賬戶(EOA),錢包地址與拆分的私鑰一一對應。這些帳戶用於存儲資產並將資產轉移到目標鏈,目標鏈只需檢查發件人的地址是否可信,無需驗證消息本身。
Multichain 網絡目前由24 個SMPC 節點組成,由不同的機構運行,並且需要大多數節點(「大多數」的量化標準似乎並不公開)來共同驗證消息。因此,該協議的安全性依賴於SMPC 節點的聲譽安全,它假設所有節點中誠實的節點佔半數以上。跨鏈發送數據需要13 個簽名者,審查消息需要12 個節點。
Nomad
Nomad 是一個以EVM 為重點的跨鏈信息傳遞協議,採用optimistic 機制來驗證消息,其中消息被添加到Merkle 樹中,並被哈希加密到一個新的根中,由更新者(Updater)發佈到原始鏈上。更新者必須交納保證金,從而激勵他們發布有效的證明並儘量減少停機時間。然後,觀察者(Watcher)會有時間對新根進行爭議懷疑並提交欺詐證明。一旦超過時間範圍,這一Merkle 根就被認為是有效的,並被轉發到目標鏈進行發布,使得原始消息(因為Merkle 根只是消息的一個「化身代表」)被發佈到目標鏈上。
這種optimistic 模型只需要一個誠實的觀察者來驗證是否發布了一個無效的更新。這種安全模型的代價是,觀察者有大約30 分鐘的時間來提交欺詐證明,這就使消息的傳輸也被延遲了30 分鐘。因為觀察者可以通過向目標合約發送虛假欺詐證明來阻止消息被處理,所以Nomad 使用一組由應用程序指定、經過許可的觀察者。協議的安全性基於至少有一個誠實觀察者存在的可能性,以及因惡意行為而削減更新者的經濟安全性。
Nomad 智能合約可以通過多簽治理模式進行升級,5 個簽名者中需要有3 個來執行治理變更和處理恢復管理。
應指出的是,最近的Nomad 黑客事件與其共識機制的安全性無關;它是一個不幸的合約配置錯誤,導致智能合約終端出現惡意行為。
Wormhole
Wormhole 利用權威證明(PoA)守護者網絡作為預言機,並利用無需許可的中繼器網絡來跨鏈傳輸消息。 19 個守護者中的每一個都為Wormhole 支持的每一條鏈運行完整節點,並監聽每個鏈上Wormhole 核心合約發出的消息。這些守護者驗證並簽署這些消息,然後在P2P 網絡上互相傳遞。一旦一個消息收到2/3 以上守護者(至少13 個)的簽名,它就會被轉發到目標鏈上。這一設計的副產品是,它允許一個完全無需信任的中繼器網絡將消息發布目標鏈上,因為這些信息是由守護者簽名的,所以消息內容既不可能被改變也不可能被審查,因為任何人都可以運行一個中繼器來提交任何信息。
協議的安全保障來自於守護者的聲譽權威。在Wormhole 案例中,這是一個由 Web3 中19 個最大的質押和基礎設施供應商組成的團體。簽署假消息需要13 個守護者,審查消息需要7 個守護者。此外,現有的守護者有能力投票移除或替換其他守護者。
代碼質保
代碼質保是指在鏈上部署代碼之前需要完成的工作。這可能涉及到以下幾個方面:
-
審計:對已公開的核心功能和新功能進行多次、獨立的質量審計
-
賞金:包括為漏洞披露者們提供具有吸引力的獎勵,以及能夠爽快支付大額賞金的行業口碑
-
測試:在每一次代碼更改上測試盡可能多的協議棧,從而在不斷增長的軟件生態中進行回歸測試
-
部署安全:在公開環境下進行開發、合併代碼之前需要審查、合約字節碼驗證、升級之前進行模擬測試
下表總結了五個跨鏈橋協議在這四個方面的表現。
Axelar
Axelar 有多次公開且信譽良好的審計,並運行一個相當強大(儘管近幾個月活躍度下降)的測試套件:持續集成(CI)和持續交付(CD)運行、bash 構建腳本以及校驗和(checksum)驗證。 Axelar 與Immunefi 合作設立了漏洞賞金計劃,對嚴重漏洞披露者給予高達100 萬美元的賞金,但其他級別的賞金額度相對較小。 Axelar repo 有貢獻者定期提交代碼,Pull Request 需要至少1 個審查者批准。
LayerZero
LayerZero 在代碼部署方面似乎有些不透明。雖然有來自頂級審核員的幾次公開審計,但卻缺乏公開的持續集成(CI)和持續交付(CD)流程。代碼似乎是一次性公開發布,不是一個敏捷的開發流程。進行的測試似乎相對過時,並僅限於JavaScript 測試。 Pull Request 看起來缺乏一個強制性的同行評審步驟。 LayerZero 確實在4 月份宣布了一個與Immunefi 合作的1500 萬美元漏洞賞金計劃。然而,迄今為止還沒有公開發布相關項目,也沒有關於如何提交漏洞獲得賞金的說明。
Multichain
Multichain 進行了多次公開審計,並與Immunefi 有一個高達200 萬美元的賞金計劃。 Multichain 進行的測試看起來停滯不前,似乎僅限於一般的ABI 和簡單的轉移測試。雖然有持續集成(CI)和持續交付(CD)運行以及有限的單元和集成測試,但部署過程看起來主要是手動的。 Multichain 的repo 有貢獻者定期提交代碼,但看起來只需要一方合併代碼(原始開發者能夠合併他們自己的代碼)。
Nomad
Nomad 最近接受了Quantstamp 的公開審計,並有一個Immunefi 的漏洞賞金計劃,賞金最高達100 萬美元。 Nomad 的測試套件包括一些圍繞利用Foundry 進行路由和消息傳遞的測試,也和Axelar 一樣有bash 構建腳本來構建和驗證字節碼。 Nomad 的Repo 有貢獻者定期提交代碼,它的Pull Request 需要至少兩方合併代碼(原始開發者加1 個獨立審查者)。
Wormhole
Wormhole 的安全頁面突顯了他們已完成和正在進行的來自業界領先的審計公司的審計。 Wormhole 在Immunefi 上有一個1000 萬美元的賞金計劃。自2 月份遭受黑客攻擊以來,Wormhole 已支付了1100 多萬美元以上的漏洞賞金,包括5 月份支付給一個白帽黑客的1000 萬美元。 Wormhole 的repo 使用混合單元和集成測試,有一個可擴展的持續集成(CI)和持續交付(CD)套件,並運行了一系列模擬測試,以驗證升級的向後兼容性和未來的升級能力。此外,Wormhole 通過積極的提交和貢獻者提交公開建設,讓透明的代碼審查和負責任的披露可以實現。 Wormhole 的Pull Request 需要至少三方合併代碼(原始開發者加2 個獨立審查者)。
注意,協議的代碼質保方式在經歷了嚴重的安全事件後會有很大的改善。例如,在遭受黑客攻擊後,Wormhole 的代碼質保方式迅速得到改善。同樣,在本週的攻擊事件之後,Nomad 協議很可能會在不久的將來採用更多的代碼質保方式。顯然最好在事件發生之前就採用這些做法,可惜它們並不總在優先列表上。
安全功能
如上所述,跨鏈橋一旦發生安全問題,代價極其高昂。上面的代碼質保措施對跨鏈橋供應商的安全計劃至關重要。本節我們將仔細研究每個跨鏈橋正在開發或部署的協議內安全功能,以了解在核心信任假設和代碼質保根本不足的情況下,這些跨鏈橋是如何實現多層防禦的。
Axelar
在白皮書中,Axelar 描述了一個由網絡分配的資金池,作為治理控制的保障和備用機制,以便在Axelar 中斷的情況下為用戶提供恢復治理的指導。在這樣的危機中,由閾值合約(Axelar 驗證者管理)存放的「緊急解鎖鑰匙」將與輔助恢復用戶集共享。如果需要,這個隊列可能擴展到成千上萬的個人和機構,他們可以集體控製網絡以:
-
為可以轉入/ 轉出某一特定鏈的資金量設定速率限制
-
決定鏈上原生資產的包裝形式的情況
這些功能看起來是專有的,目前還沒開源。此外,這些提議的功能不提供被動安全性來限制風險,而是在生死存亡關頭被激活。
LayerZero
LayerZero 的橋接模型包括交易應用程序選擇目標鏈上的中繼器的要求。因此,在這個模型中,協議內安全功能的關鍵之處在中繼器。
4 月份,LayerZero 團隊介紹了他們的協議內安全功能的方法,稱為「穹頂(the dome)」和「預犯罪(pre-crime)」。關於穹頂功能的公開信息很少,但博客文章中提供了關於預犯罪是如何運作的線索。預犯罪模型基本上允許用戶應用程序(UA)定義一組特定的狀態,中繼器必鬚根據這些狀態進行驗證。如果這些狀態沒有得到驗證,中繼器就不會中繼交易。
注意,這些功能看起來是專有的,目前還沒開源。雖然概念上很強大,但很難獨立評估其有效性。
Multichain
Multichain 在最近的一篇文章中,披露了他們的一些安全措施,包括提及他們的橋接配置的一些安全功能:
-
交易量限制和總交易額限制:這一功能允許交易量較大的區塊鏈被限制在一個特定的上限。另外,對於交易量較低的區塊鏈,則採用總交易額限制的方式。
-
鏈上監控:這種模式涉及監控軟件和鏈上看門狗,以檢測異常行為並觸發突發事件響應行為。
-
產品暫停:這一功能允許暫停所有產品,並在實施突發事件響應行為時有效將所有產品暫停。
-
安全基金:這實際上是一個保障基金,拿出所有跨鏈費用的10% 補償用戶在特殊情況下的財產損失。
Nomad
Nomad 利用optimistic verification model,即消息在原始鏈上簽名,並有一個內置的時間窗口會在目標鏈上強制執行。在某種程度上,我們可以觀察到這類似於「不早於這個時間打開這封信」。這段時間對於實施「自動斷路器」和在Merkle 根被認為有效之前停止轉移資產是有用的。這在Nomad 文檔中已作為一個概念出現,開發似乎正在進行中。
Wormhole
Wormhole 的消息傳遞模型是群播(multi-cast)的,即消息由守護者/ 預言機網絡從原始鏈進行公證,並且不信任將該消息帶到目標鏈的中繼器。這種模式基本上需要一個非常強大的預言機網絡,協議內安全功能有賴於此。
Wormhole 項目有三個主要的協議內安全功能正在開發中:監管、會計和緊急關閉。這些功能是在公開可見的情況下開發的,這讓我們能夠深入了解它們最終會如何運作。這些功能正在等待開發完成並被守護者採用。
-
監管:這一功能在守護者/ 預言機中實現,允許守護者在一個時間窗口內監控來自任何受監管鏈的價值流動的名義金額。守護者可以為每條鏈設定一個可接受的上限,一旦達到這個上限,就會阻止這條鏈超出的資產流動。
-
會計:這一功能在守護者/ 預言機中實現,允許守護者維護他們自己的區塊鏈(又稱「wormchain」),它們可以作為不同鏈之間的跨鏈賬本。這個賬本不僅可以讓守護者擔任鏈上的驗證者,還充當了一個會計插件。守護者可以拒絕原始鏈沒有足夠的資金(驗證獨立於智能合約邏輯之外)的跨鏈交易。
-
關閉:這一功能在鏈上實施,允許守護者在意識到跨鏈橋存在的威脅後,達成共識暫時停止跨鏈橋上的資產流動。目前的實施方案允許通過擬議的實施方案中的鏈上函數調用來實現。
結語
在未來幾個月或幾年裡,我們相信安全將成為跨鏈橋之間拉大差距的地方。那些優先考慮安全問題的跨鏈橋更可能度過危機,不這麼做的跨鏈橋則很可能挺不過去。安全性可能曾經只是競爭優勢的一個來源,然而,現在它必須成為每條跨鏈橋都應優先考慮的首要功能。我們希望所有跨鏈橋團結起來,共同提升跨鏈橋安全技術水平。