Back to Blog

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

Code Auditing
September 19, 2022
5 min read

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

Sign up for the latest updates
~$135萬美元損失:BarnBridge、DeFiTuna | BlockSec 週報
Security Insights

~$135萬美元損失:BarnBridge、DeFiTuna | BlockSec 週報

本週報告涵蓋2026年7月13日至19日的2起安全事件,以太坊和Solana總損失約135萬美元。Solana借貸協議DeFiTuna損失約57萬美元,原因是倉位健康檢查將零值倉位視為健康而忽略未償債務,攻擊者利用可控的交換路由和低流動性池觸發此缺陷。BarnBridge損失約77.6萬美元,攻擊者利用以太坊上已棄用但仍活躍的治理系統通過惡意提案並竊取用戶授權的USDC。

~$800K損失:Hinkal雙重支付事件 | BlockSec週報
Security Insights

~$800K損失:Hinkal雙重支付事件 | BlockSec週報

本週安全報告涵蓋2026年6月29日至7月5日1起重大事件,以太坊損失約80萬美元。Hinkal隱私池協議遭雙重花費攻擊,攻擊者疑似利用舊版票據格式漏洞,從單筆存款衍生出多個無效化符號。報告分析了可能的電路層漏洞、攻擊流程及對基於無效化符號的隱私協議的廣泛影響。

電子報 - 2026年6月
Security Insights

電子報 - 2026年6月

本月報告涵蓋2026年6月三起最大安全事件,確認損失合計約2200萬美元。一次精密蜜罐攻擊利用未受檢查的代幣授權,從JaredFromSubway的MEV機器人抽走約1500萬美元。兩個舊版Aztec rollup部署因證明結算邊界漏洞損失約435萬美元。SecondFi的Ed25519實現缺陷暴露錢包私鑰,導致374個錢包共損失約240萬美元。三起事件共同模式:表面完整但從未真正執行的安全保證。

Best Security Auditor for Web3

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

BlockSec Audit