Back to Blog

損失約 1.046 億美元:Verus、RetoSwap 及其他項目 | BlockSec 每週快報

Code Auditing
May 27, 2026
9 min read
Key Insights

在過去的一週(2026/05/18 - 2026/05/24)內,BlockSec 在多個區塊鏈生態系統中識別出多起攻擊事件。下表列出了 5 起重大事件,總損失估計約為 1.046 億美元。

日期 事件 類型 估計損失
2026/05/18 Verus 事件 業務邏輯漏洞 ~1,170 萬美元
2026/05/18 EchoProtocol 事件 私鑰洩漏 ~7,670 萬美元
2026/05/20 RetoSwap 事件 業務邏輯漏洞 ~270 萬美元
2026/05/22 Polymarket 事件 私鑰洩漏 ~70 萬美元
2026/05/24 StablR 事件 私鑰洩漏 ~1,280 萬美元

我們選取了兩起事件進行深入分析:

  • Verus:攻擊者利用 Verus-Ethereum 橋接器中的類型驗證失敗,提交了一個精心構造的補充匯出輸出(supplemental export output),橋接器將其錯誤地分類為有效的初級匯出(primary export)。跨鏈訊息語義屬於攻擊面的一部分。
  • RetoSwap:P2P 交易流程中協議層級的身份驗證漏洞,允許攻擊者通過發送偽造的 ACK 訊息來劫持仲裁者角色。攻擊者在鏈下完全破壞了多簽錢包的建立過程。

Web3 最佳安全審計服務

在發布前驗證設計、代碼與業務邏輯


每週焦點:Verus

此事件之所以被強調,是因為攻擊者刻意濫用了特殊的跨鏈匯出類型,顯示其對 Verus 鏈內部設計有深入的了解。該漏洞顯示,跨鏈訊息格式(包括補充資料欄位和編碼邊界)皆屬於攻擊面,且需要與加密驗證同樣嚴謹的檢查。

2026 年 5 月 18 日,連接 Verus L1 鏈與以太坊的跨鏈橋——Verus-Ethereum Bridge 遭到攻擊,損失了價值約 1,170 萬美元的 ETHtBTCUSDC [1][2]。根本原因是以太坊端的匯入路徑存在類型驗證失敗:橋接合約接受了一個精心構造的補充匯出輸出,並將其錯誤歸類為有效的初級匯出,這使得攻擊者能夠提供吻合的轉帳資料並耗盡資金。截至 5 月 23 日,約 75% 的被盜資金已被歸還。

背景

Verus-Ethereum 橋接器在證明特定 Verus 端匯出存在於經過公證的 Verus 狀態下後,會在以太坊上釋放資產。以太坊不會直接觀察 Verus 交易,而是依賴提交的證明資料以及錨定可信 Verus 狀態的公證資料。

有三個與此事件相關的橋接物件:初級匯出 (primary export),即以太坊匯入並用於支付的物件;補充匯出輸出 (supplemental export output),是附加在初級匯出上的額外資料,不應被視為用於支付的單獨活躍匯出;以及公證 (notarization),允許以太坊證明特定的 Verus 端物件存在於最終橋接狀態中。

漏洞分析

有漏洞的以太坊端橋接合約部署在 0xa045...6fc87f0x08f0...d0107d

根本原因是以太坊匯入路徑上的類型驗證失敗。橋接器證明了一個真實的 Verus 端物件存在,但在使用它釋放資金前,並未驗證該物件是否為有效的初級匯出。相反,它接受了一個手工製作的補充輸出,並將其解析為正常的活躍匯出。

從宏觀層面看,易受攻擊的流程為:

proveImports(...)
    -> 驗證證明
    -> 驗證 keccak256(serializedTransfers) == 已提交的轉帳雜湊

processTransactions(...)
    -> 在以太坊執行支付

此流程中沒有任何檢查會拒絕設定了 FLAG_SUPPLEMENTAL 的物件。修復後的代碼明確檢查了此標記,並在發現被證明的物件是補充資料時進行復原:

攻擊分析

以下分析基於以太坊交易 0x6990f0...87eb321 與 Verus 交易 f899e698...b9f5a733

  • 第 1 步:5 月 17 日,攻擊者透過 Tornado Cash 為以太坊地址 0x5aBb...9D5777 注入了 1 枚 ETH。5 月 18 日,攻擊者從 Verus 水龍頭為地址 RW9vEW...B3g6zd 獲取了 0.02 枚 VRSC

  • 第 2 步:攻擊者在 Verus 上提交了四筆目標為以太坊的匯出交易,其中包含精心構造的補充匯出輸出。這些補充輸出被編碼為可無錯解析,並包含與攻擊者稍後打算執行之欺詐性支付相匹配的 hashReserveTransfers 承諾。

  • 第 3 步:在跨鏈公證在以太坊上達到足夠的進度後,攻擊者在以太坊上提交了一筆偽造的匯入交易。被證明的 Verus 端物件即為上述 Verus 交易中的補充輸出。

  • 第 4 步:以太坊橋接器接受了證明,但未將該被證明的物件視為補充資料而拒絕。相反,它將構造出的輸出解析為有效的活躍匯出。由於攻擊者同時提供了 serializedTransfers,其雜湊值與承諾的 hashReserveTransfers 數值匹配,橋接器繼續執行匯入流程。

  • 第 5 步:由於補充輸出被誤認為有效匯出,欺詐性轉帳通過了以太坊端的檢查。攻擊者耗盡了約 1,170 萬美元的 ETHtBTCUSDC

  • 第 6 步:惡意匯入成功後不久,Verus 節點遇到由欺詐性匯出執行緒與真實匯出執行緒共存引起的無效狀態斷言,這導致橋接流程中止並限制了後續的攻擊。

結論

該事件是由 Verus-Ethereum 橋接器的類型驗證失敗所致:以太坊合約接受了真實的加密證明,但被證明的物件是補充匯出輸出,而非用於支付的有效初級匯出。

跨鏈訊息格式屬於攻擊面的一部分。補充資料、可選欄位、緊湊編碼和解析器偏移量應與簽名或默克爾證明檢查一樣嚴謹對待。當物件與執行操作所需的預期類型不符時,橋接器應直接拒絕,而非試圖解析它。

參考資料

開始使用 Phalcon Explorer

深入分析交易,做出明智決策

立即免費試用

本週更多事件

RetoSwap

2026 年 5 月 20 日,基於 Haveno 協議、在門羅幣(Monero)上運行的去中心化 P2P 交易所 RetoSwap 遭到攻擊,損失約 270 萬美元(7,000 枚 XMR[1]。根本原因是協議層級的身份驗證漏洞:客戶端接受了一條偽造且順序錯誤的 ACK 訊息,並在未驗證發送者是否匹配仲裁者已知公鑰的情況下,將仲裁者儲存的 Tor 地址覆寫為攻擊者控制的地址。這使得攻擊者能夠在資金存入時劫持多簽錢包的建立並竊取資金。

背景

RetoSwap 是一個基於門羅幣的去中心化 P2P 交易所,由 Haveno 協議分叉而來。其交易協議依賴 2-of-3 仲裁者多簽模型來保障交易安全,並透過 Tor 在鏈下協調交易。

正常的交易分為三個階段:首先,買方、賣方和仲裁者完成鏈下訊息交換以建立多簽錢包;其次,只有在錢包完全建立後,資金才會被鎖定在多簽錢包中;第三,買賣雙方簽署支付交易以結算,或由仲裁者介入解決爭議。所有通訊均透過 Tor 運行,每個節點僅由其 .onion 地址標識。

漏洞分析

5 月 20 日,Haveno 專案開啟了一個名為「核心:拒絕在多簽建立前更新節點地址」的拉取請求 [2]。屆時,RetoSwap 已經遭受攻擊。

該修補程式揭示了 TradeProtocol.java:onAckMessageAux(...) 中的漏洞。客戶端依賴訊息提供的 senderNodeAddress 來識別對等點,卻未驗證該發送者是否確實匹配預期的仲裁者公鑰。攻擊者可以發送一條攜帶攻擊者控制之 .onion 地址的偽造 ACK 訊息,客戶端便會將儲存的仲裁者地址改寫。

由於這發生在第一階段(多簽錢包建立之前),攻擊者的地址取代了真正的仲裁者地址。因此,攻擊者同時掌握了交易者的金鑰與仲裁者的多簽錢包金鑰,從而能在資金存入後竊取全部餘額。

該修正方案從兩個方面解決了問題:它會驗證發送者是否匹配對等點的已知公鑰,拒絕來自未經驗證對等點的訊息;並將地址更新限制在 trade.isDepositRequested() 之後,防止在多簽錢包建立前發生覆寫。

攻擊分析

此事件未發現任何鏈上攻擊交易。RetoSwap 完全透過 Tor 運作並處理鏈下訊息,因此關鍵動作發生在任何公共帳本之外。以下復原內容均基於公開的修補程式和官方通訊:

  • 第 1 步:攻擊者以買方或賣方身份加入現有交易。

  • 第 2 步:攻擊者發送了一條偽造且順序錯誤的 ACK 訊息,該訊息看似來自仲裁者,並將攻擊者控制的 .onion 地址作為 senderNodeAddress

  • 第 3 步:受害者的客戶端接受了該訊息,並在未針對仲裁者已知公鑰驗證發送者的情況下,覆寫了儲存的仲裁者地址。

  • 第 4 步:所有旨在發送給仲裁者的後續通訊(包括多簽錢包建立)都被路由至攻擊者,攻擊者因此獲得了第三個多簽金鑰。

  • 第 5 步:當買賣雙方將資金存入被破解的多簽錢包後,攻擊者竊取了錢包中的全部資金。總獲利約為 7,000 枚 XMR (~270 萬美元)。

結論

此事件並非加密技術失敗,而是協議層級的身份驗證漏洞:訊息內容格式正確,但發送者在進行地址更新前,並未經加密方式繫結至已知的公鑰。結果,客戶端將偽造 ACK 訊息中未經驗證的 senderNodeAddress 當作仲裁者的新聯絡點,從而允許攻擊者劫持仲裁者角色。

主要教訓是:(1) 任何更新對等點身份的訊息,在應用更新前必須針對該對等點的已知公鑰進行加密驗證;(2) 身份關鍵狀態(如交易對方地址)一旦進入安全敏感階段(例如多簽錢包建立),即應改為不可變。

參考資料

開始使用 Phalcon Security

偵測所有威脅,預警關鍵風險,攔截攻擊。

立即免費試用

關於 BlockSec

BlockSec 是一家提供全端區塊鏈安全與加密合規服務的供應商。我們致力於研發各類產品與服務,協助客戶在協議與平台的生命週期中執行代碼審計(包括智慧合約、區塊鏈與錢包),即時攔截攻擊、分析事件、追蹤非法資金,並協助滿足反洗錢 (AML) 與打擊資助恐怖主義 (CFT) 的義務。

BlockSec 已在各大著名學術研討會發表多篇區塊鏈安全論文,通報了多項 DeFi 應用的零日漏洞,成功阻截多起駭客攻擊並挽回逾 2,000 萬美元的資金,並保障了價值數十億美元的加密資產安全。

Best Security Auditor for Web3

Validate design, code, and business logic before launch. Aligned with the highest industry security standards.

BlockSec Audit