加密世界的高危地帶:跨鏈橋有哪些常見漏洞?

lunaray
2022-04-22 16:54:23
收藏
跨鏈橋攻擊的數量明顯在增加,被盜資金也相當多,黑客已經盯上了跨鏈橋這塊肥肉。

原標題:《Cross-chain bridge vulnerability summary

原作者:lunaray

編譯:ChinaDeFi

隨著區塊鏈和鏈上項目的增長,對多鏈項目的需求正在變多,跨鏈橋業務也相應的在增加。哪裡有生意,哪裡就會有安全問題。跨鏈橋在為用戶提供便利的同時,也為黑客提供了便利,Poly Network 被攻擊後,跨鏈橋的安全問題也隨之出現。

什麼是跨鏈橋?

區塊鏈橋,也稱為跨鏈橋,其連接兩個區塊鏈,允許用戶從一個鏈向另一個鏈發送加密貨幣。

跨鏈橋通過兩個獨立平台之間的代幣轉帳、智能合約和數據交換等其他反饋和指令,實現了資金的跨鏈操作。

一種常見的跨鏈橋的操作如下:

  • 用戶將資產 A 發送到原鏈上的一個存儲地址,並支付過橋費;
  • 資產 A 被智能合約中隨機選擇的驗證者或受信任的托管人鎖定;
  • 在目標鏈上發布相同數量的資產 A1,並將資產 A1 發送到目標鏈上的用戶地址。

跨鏈橋存在漏洞

image

跨鏈橋常見漏洞

ChainSwap 攻擊事件:

2021 年 7 月,跨鏈資產橋項目 ChainSwap 遭到攻擊。跨鏈橋上的二十多個項目受到攻擊,損失了近 800 萬美元的資產,導致十多個項目暴跌 99%。

這種攻擊主要是由於該協議沒有嚴格檢查簽名的有效性,攻擊者可以使用自己生成的簽名對交易進行簽名。

Factory 合約

image

上圖中接收方法的主要功能是將用戶跨鏈後的資金轉移到目標鏈的用戶地址,需要驗證發送鏈的簽名。當前待驗證簽名個數為 1。

由於接收方法的邏輯和名為 ecrecover 和_decreaseAuthQuota 方法並不嚴格檢查簽名,攻擊者使用了自己產生的簽名,但後續合約邏輯沒有嚴格判斷映射值簽名和其他計算。使攻擊者成功地執行接收方法,為自己簽名轉帳資金。

Poly Network 攻擊事件

2021 年 8 月,跨鏈互操作協議 Poly Network 突然遭到黑客攻擊。使用該協議的 O3 Swap 遭受了嚴重的損失。以太坊、幣安智能鏈、Polygon 三大網絡上的資產幾乎被洗劫一空。1 小時內,分別有 2.5 億、2.7 億、8500 萬美元的加密資產被盜,總損失高達 6.1 億美元。

這種攻擊主要是由於中繼鏈驗證者的公鑰被替換造成的。即由攻擊者代替跨鏈的中間驗證者,由攻擊者自己控制。

協議內部關係:

  • 中繼鏈驗證者的公鑰存在於 EthCrossChainData 合約中;
  • EthCrossChainData 合約所有者是 EthCrossChainManager 合約;
  • EthCrossChainData 合約的 putCurEpochConPubKeyBytes 方法可以修改中繼鏈驗證者角色。
  • EthCrossChainManager 合約:

image

在上面的圖中,_executeCrossChainTx 方法沒有對傳入的參數施加嚴格的限制,這導致攻擊者傳入 toContract,方法參數被攻擊者控制。由於協議的內部關係,攻擊者在哈希衝突後傳入與 putCurEpochConPubKeyBytes 方法相同的方法簽名。成功調用 EthCrossChainData 合約的 putCurEpochConPubKeyBytes 方法,直接修改中繼鏈驗證者的公鑰,使其變得可控,然後利用驗證者簽署惡意的進行資金轉移,獲取了大量資金。

Multichain (AnySwap) 攻擊事件

2022 年 1 月,Multichain 正式聲明協議的跨鏈橋存在安全風險,部分代幣存在被黑客攻擊的風險,並敦促用戶儘快取消授權。

事件的核心原因是:協議調用的底層代幣合約沒有實現 permit 方法,但包含一個 fallback 函數,因此調用 permit 方法的合約正常運行。

左邊是 AnyswapV4Router 合約,右邊是 WETH9 合約。

image

在上圖中的 AnySwapOutUnderlyingWithPermit 方法中,前三個參數都是由調用者傳入的,也就是說代幣和其他參數都是攻擊者控制的。當參數可控時,攻擊者部署攻擊合約來轉移受影響的代幣。合約地址被設置為基礎代幣參數。

核心問題是由於 WETH9 沒有 permit 方法,但是會調用 WETH9 的 fallback 方法進行充值操作,所以其不會有錯誤的調用 (交易不會回滾),也就是說,當用戶授權到協議時,攻擊者會很快轉移用戶資金。

Qubit Bridge 攻擊事件

2022 年 1 月,Qubit Finance 跨鏈橋以太坊 - 幣安被黑客攻擊,損失超過 8000 萬美元。

核心問題:當 deposit 方法中的資金地址為 address (0) 時,不會出現 safeTransferFrom 錯誤,導致 deposit 功能正常執行。

QBridge 合約

image

上圖中,存款是一種正常的存款方式。當在此方法中調用 IQBridgeHandler (handler).deposit 時,當用戶傳入的 resourceID 映射 tokenAddress 地址為 0 地址時,後續的 tokenAddress.safeTransferFrom (depositer, address (this), amount);轉帳將正常執行,導致方法和事件的正常運行,調用者可以成功進行存款。

這裡更重要的是,官方 tokenAddress 的 ETH 0 地址是官方所做的 (官方已經聲明存款功能是一個被忽略的廢棄功能)。

Meter Bridge 攻擊分析

在 2022 年 2 月,Meter.io 跨鏈協議並未阻止封裝的 ERC20 代幣與原生 gas 代幣的直接交互,導致損失約 430 萬美元。

該事件的核心問題是:存款方法在進行存款時不驗證 WBNB 的存款情況,導致攻擊者繞過判斷條件,不存款也可以正常獲取資金。

Bridge 合約

image

在上圖中,deposit 和 depositETH 方法都是存款方法,但是當用 deposit 方法存款時,並沒有驗證該存款是否為原生代幣。當攻擊者進行存款時,傳入 WBNB 地址。該方法不驗證 WBNB 存款,之後調用 deposthhandler .deposit 方法成功繞過判斷條件。最後,攻擊者利用該漏洞成功獲取大量資金。

Wormhole 攻擊分析

2022 年 2 月,以太坊和 Solana 兩大區塊鏈的重要橋 (Wormhole) 被黑客攻擊,損失超過 3.2 億美元。

該漏洞的核心原因是:verifysignatures 調用的 loadinstruction_at 方法沒有驗證指令的有效性,攻擊者可以通過偽造驗證簽名來獲取資金。

verify_signature.rs 接口合約

image

上圖中的 verifysignatures 方法是跨鏈驗證過程中調用的簽名方法。由於 verifysignatures 方法調用 loadinstructionat 方法,所以在協議更新後,loadinstructionat 方法是一個廢棄的方法。這種方法對傳入的指令沒有嚴格的檢查,這就導致攻擊者在傳入一個可控值後,利用這種簽名方式對自己的跨鏈請求進行簽名,獲得大量資金。

Li.Finance 攻擊分析

2022 年 3 月,以太坊上的分佈式跨鏈協議 Li.Finance 遭到攻擊。攻擊者進行了 37 次調用傳入,在多個錢包中獲得了約 60 萬美元的資產 (204 ETH)。

這種攻擊的核心問題是對傳入的外部數據沒有嚴格的限制,導致攻擊者傳入自己的可控調用邏輯。

CBridgeFacet 合約

image

上圖中的 swapAndStartBridgeTokensViaCBridge 方法中,傳入的swapData 參數沒有嚴格限制。在同一個 LibSwap.swap 調用中,該值不受嚴格限制。因此,在 swap 方法中,swapData 可以成功地調用 call 方法來執行惡意操作。攻擊者利用此漏洞進行多次調用以獲取資金。

Ronin Network 攻擊分析

在 2022 年 3 月,Axie Infinity 側鏈 Ronin 驗證者節點和 Axie DAO 驗證者節點被破壞,導致在兩筆交易中從 Ronin 桥接了 173600 ETH 和 2550 萬美元的 USDC。

攻擊原因:

Sky Mavis 的 Ronin 鏈目前由 9 個驗證者組成。為了識別存款事件或取款事件,需要 9 個驗證者中的 5 個簽名。攻擊者控制了四個 Sky Mavis 的 Ronin 驗證者和一個由 Axie DAO 運行的第三方驗證者。(2021 年 11 月至 12 月,Axie DAO 允許 Sky Mavis 代表其簽署各種交易,在事件停止後沒有撤銷白名單訪問權限,攻擊者獲得了對 Sky Mavis 系統的訪問權限,並使用來自 Axie DAO 驗證器的 gasless RPC 來獲取簽名)。

總結和建議

從以上跨鏈橋攻擊事件可以發現,從去年到今年已經發生了幾次跨鏈橋攻擊。跨鏈橋攻擊的數量明顯在增加,被盜資金也相當多。黑客已經盯上了跨鏈橋這塊肥肉。從總結來看,攻擊主要發生在跨鏈前和簽名處,一般都是合約漏洞,也有由於官方疏忽造成的盜竊事件。針對越來越多的跨鏈項目和項目合約安全,建議如下:

  • 在項目上線前完成合約安全審計
  • 合約調用接口需要嚴格檢查其適配性
  • 版本更新時,需要重新評估相關接口和簽名的安全性
  • 需要對跨鏈簽名者進行嚴格的審查,以確保簽名不受惡意人員的控制
鏈捕手ChainCatcher提醒,請廣大讀者理性看待區塊鏈,切實提高風險意識,警惕各類虛擬代幣發行與炒作,站內所有內容僅係市場信息或相關方觀點,不構成任何形式投資建議。如發現站內內容含敏感信息,可點擊“舉報”,我們會及時處理。
ChainCatcher 與創新者共建Web3世界