返回部落格

揭露以太坊工作量證明(EthereumPoW)上的「訊息」重放攻擊

Code Auditing
2022年9月19日
閱讀約 5 分鐘

2022 年 9 月 16 日,我們檢測到部分攻擊者通過在 EthereumPoW(即 PoW 鏈)上重放 PoS 鏈的訊息(即調用數據,calldata),成功竊取了大量 ETHW。 本次攻擊的根本原因是 PoW 鏈上的 Omni Bridge 使用了舊的 chainId,且未正確驗證跨鏈訊息的實際 chainId。

我們隨即聯繫了 EthereumPoW 的官方團隊。 該團隊展現了積極應對的意願,並已嘗試 與 Omni Bridge 進行溝通。

然而,由於隨後觀察到越來越多的攻擊行為,我們認為有必要向公眾通報此風險,因此我們於 2022 年 9 月 18 日發布了 預警。

鑒於目前對於這些攻擊存在一些誤解(例如認為是重放交易而非重放消息),我們希望通過本報告進行詳細剖析以釐清事實。

攻擊分析

以下是攻擊交易的範例:

請注意,這兩筆交易有所不同,但它們的 調用數據(即輸入數據,calldata)完全相同:

0x23caab4900000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000180000000000000000000000000000000000000000000000000000000000000011500050000a7823d6f1e31569f51861e345b30c6bebf70ebe7000000000000e0f6f6a78083ca3e2a662d6dd1703c939c8ace2e268d88ad09518695c6c3712ac10a214be5109a655671000927c00101806401867f7a4d000000000000000000000000c02aaa39b223fe8d0a0e5c4f27ead9083c756cc2000000000000000000000000a6439ca0fcba1d0f80df0be6a17220fed9c9038a00000000000000000000000000000000000000000000000ad78ebc5ac62000000000000000000000000000000000000000000000000000000000000000000080000000000000000000000000000000000000000000000000000000000000001482faed2da812d2e5cced3c12b3baeb1a522dc67700000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000105041c1b1c1c981df6cdaf073d55b78d7f0c7e2b421a569bff677a9464d1d5203672d7b5a3d6af658d14ebc11c26f2547fd0aed01750cca58753a0a79b297bad8a62a71eb6b7ac2099611604eff316e7fe733e9981c1b3890cb04ff9d43612e6f2687227f0226cfa27e4b6cd96a10865e04aa9e0f369dda7548771a094f69bf0a9fa6c27257e22d2b1bbb84beb52ad3966592037b328d352fce375a1fa75cb3fbfd18166f4177a19ad2cc74ce67da68f5ce17b857e6382c3ebf20f76482534135f426f4a74222daa07d9f401cb8baca4339ecd44e285df0e0cb88447a31d08b673cecc67d22c7e6e0ce5afd2ac9439c5a8b68f05077b850cdfdfb79cdaefc5b103bb69360944000000000000000000000000000000000000000000000000000000

這僅僅是調用 safeExecuteSignaturesWithAutoGasLimit 函數的輸入數據。

很明顯,攻擊者(0x82fae)首先通過 Gnosis 鏈的 Omni bridge 轉移了 200 WETH,然後在 PoW 鏈上重放了 相同的消息,並額外獲得了 200 ETHW。 通過這種操作,部署在 PoW 鏈上的橋接合約餘額將被耗盡。

漏洞分析

在分析了 Omni bridge 的 原始碼 後,我們發現合約中確實存在驗證 chainId 的邏輯:

    function _isDestinationChainIdValid(uint256 _chainId) internal returns (bool res) {
        return _chainId == sourceChainId();
    }

遺憾的是,此合約中用於驗證的 chainId 來源於名為 unitStorage 的存儲空間:

    /**
     * Internal function for retrieving chain id for the source network
     * @return chain id for the current network
     */
    function sourceChainId() public view returns (uint256) {
        return uintStorage[SOURCE_CHAIN_ID];
    }

它並非透過 EIP-1344 提出的 CHAINID 操作碼所取得的實際 chainId。 這可能是因為該代碼較為老舊(使用的是 Solidity 0.4.24)。 在 PoW 鏈分叉之前,該代碼一直運作良好。

簡而言之,本次漏洞的根本原因是 ETHW 鏈上的 Omni Bridge 使用了舊的 chainId,且未正確驗證跨鏈訊息的真實 chainId。 此外,類似的問題也可能存在於其他協議中。

影響範圍

最直接的影響是攻擊者可能竊取大量 ETHW(以及 PoW 鏈上橋接合約擁有的其他代幣),並在各個市場(例如某些中心化交易所)進行交易。 這可能會因流動性的增加而影響 ETHW 的價格。 因此,用戶與投資者在 PoW 鏈上進行相關代幣交易時應保持謹慎。

結論

Solidity 開發者在處理設計由合約自身維護的 chainId 時,應給予特別注意。

關於 BlockSec

BlockSec 是一家領先的區塊鏈安全公司,由一群全球傑出的安全專家於 2021 年創立。公司致力於提升新興 Web3 世界的安全性和可用性,以推動其大規模採用。為此,BlockSec 提供智能合約與 EVM 鏈的安全審計服務,開發了用於安全開發與主動威脅攔截的 Phalcon 平台,用於資金追蹤與調查的 MetaSleuth 平台,以及協助開發者在加密世界中高效航行的 MetaDock 擴充套件。

迄今為止,公司已服務超過 300 家知名客戶,包括 MetaMask、Uniswap Foundation、Compound、Forta 和 PancakeSwap,並獲得了包括 Matrix Partners(經緯創投)、Vitalbridge Capital(唯獵資本)和 Fenbushi Capital(分佈式資本)在內的頂尖投資者兩輪數千萬美元的融資。

官方網站:https://blocksec.com/

官方 Twitter 帳號:https://twitter.com/BlockSecTeam

訂閱最新動態
Bitget 3.875億美元鏈下違規事件:超越金鑰與合約的範疇
Security Insights

Bitget 3.875億美元鏈下違規事件:超越金鑰與合約的範疇

2026年9月24日,攻擊者利用第三方安全產品漏洞,獲取內部憑證並偽造提款指令,導致約3.875億美元從Bitget部分營運錢包(涵蓋Ethereum、其他EVM網絡、XRP Ledger、Zcash及TRON)轉出;私鑰及冷錢包未受影響。本文深入梳理事件路徑與資金流向,分析快速轉換為原生資產及生態恢復應對,提出機構縱深防禦框架,並說明授權區塊鏈滲透測試如何驗證跨層假設。

約1130萬美元損失:Multicall Router、Nostra|BlockSec Weekly
Security Insights

約1130萬美元損失:Multicall Router、Nostra|BlockSec Weekly

本報告涵蓋2026/09/14至2026/09/20期間,探討以太坊與Starknet上兩起合計損失約1130萬美元的安全事件。較大一起中,多重呼叫路由器將自身位址接受為分派目標,導致巢狀呼叫以路由器自身已授權身分而非外部呼叫者身分進入Safe錢包的Gateway模組,約2900枚`aEthrsETH`被轉出至攻擊者建立的Uniswap v4池。在Starknet上,Nostra預言機整合僅要求最少一個聚合來源,當三個設定價格來源中僅兩個達成聚合時,操縱的薄池報價與正常報價平均後將`NSTR`估值約49.52美元,支撐約350萬美元以高估抵押品借貸。

损失約3.2億美元:Liquid Network與Symbiosis遭攻擊事件 | BlockSec
Security Insights

损失約3.2億美元:Liquid Network與Symbiosis遭攻擊事件 | BlockSec

本報告涵蓋2026/09/07至2026/09/13,探討兩起造成約3.2億美元損失的安全事件,包括前份報告未提及、發生於2026/09/06的Liquid Network漏洞事件。較大者為該Liquid Network漏洞:Elements中的rangeproof驗證快取藉由雜湊四個欄位(其中兩個長度可變)串接而成金鑰,且未標示欄位邊界,導致某輸出的驗證結果被錯誤套用至另一個未經檢驗證明的輸出,使攻擊者得以憑空創造4,000枚無擔保L-BTC,並將幾乎全數兌回比特幣。在橫跨BNB Smart Chain、Ethereum與Rootstock的Symbiosis跨鏈橋比特幣路徑中,讀取比特幣存款的鏈下程式碼從存款人可自行控制的欄位取得其身份,並在未檢查手續費是否為負值的情況下自存款中扣除,使330聰的存款鑄造出`46,116,860,184.27388234 syBTC`;其須賣出所經之資金池僅有11.26 syBTC,致使流動性提供者與用戶損失約9.97 BTC(約77萬美元)。

Web3 最佳安全審計方

在上線之前驗證設計、程式碼與業務邏輯,對標業內最高安全標準。

BlockSec 審計