Back to Blog

揭秘以太坊PoW上的“消息”重放攻击

Code Auditing
September 19, 2022
3 min read

2022年9月16日,我们发现一些攻击者通过重放EthereumPoW(又称PoW链)的PoS链消息(即calldata)成功窃取了大量ETHW。 此次漏洞利用的根本原因是PoW链上的Omni桥使用了旧的chainId,未能正确验证跨链消息的实际chainId。

我们立即联系了EthereumPoW的官方团队。 该团队积极表示愿意采取行动,并且他们也尝试与Omni Bridge沟通

然而,随着越来越多的攻击被观察到,我们认为应该将风险通知公众,并于2022年9月18日发布了警报

由于目前仍存在对这些攻击的一些误解,例如认为是重放交易而非消息。在本报告中,我们希望提供详细的分析来澄清这一点。

攻击分析

以下是一个利用交易的示例:

请注意,这两笔交易是不同的,然而,这两笔交易的calldata(或输入数据)是完全相同的

0x23caab4900000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000180000000000000000000000000000000000000000000000000000000000000011500050000a7823d6f1e31569f51861e345b30c6bebf70ebe7000000000000e0f6f6a78083ca3e2a662d6dd1703c939c8ace2e268d88ad09518695c6c3712ac10a214be5109a655671000927c00101806401867f7a4d000000000000000000000000c02aaa39b223fe8d0a0e5c4f27ead9083c756cc2000000000000000000000000a6439ca0fcba1d0f80df0be6a17220fed9c9038a0000000000000000000000000000000000000000000000ad78ebc5ac62000000000000000000000000000000000000000000000000000000000000000000080000000000000000000000000000000000000000000000000000000000000001482faed2da812d2e5cced3c12b3baeb1a522dc67700000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000105041c1b1c1c981df6cdaf073d55b78d7f0c7e2b421a569bff677a9464d1d5203672d7b5a3d6af658d14ebc11c26f2547fd0aed01750cca58753a0a79b297bad8a62a71eb6b7ac2099611604eff316e7fe733e9981c1b3890cb04ff9d43612e6f2687227f0226cfa27e4b6cd96a10865e04aa9e0f369dda7548771a094f69bf0a9fa6c27257e22d2b1bbb84beb52ad3966592037b328d352fce375a1fa75cb3fbfd18166f4177a19ad2cc74ce67da68f5ce17b857e6382c3ebf20f76482534135f426f4a74222daa07d9f401cb8baca4339ecd44e285df0e0cb88447a31d08b673cecc67d22c7e6e0ce5afd2ac9439c5a8b68f05077b850cdfdfb79cdaefc5b103bb693609440000000000000000000000000000000000000000000000000000

这仅仅是调用safeExecuteSignaturesWithAutoGasLimit函数的输入数据。

显然,攻击者(0x82fae)首先通过Gnosis链的Omni桥转移了200 WETH,然后又在PoW链上重放了相同的消息,从而获得了额外的200 ETHW。 这样做,PoW链上部署的桥合约的余额可能会被耗尽。

漏洞分析

在分析了Omni桥的源代码后,我们发现其中确实存在验证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桥使用了旧的chainId,未能正确验证跨链消息的实际chainId。 此外,其他协议也可能存在类似的问题。

影响

直接影响是攻击者可以窃取大量ETHW(以及桥在PoW链上拥有的其他代币),并在某些市场上(例如一些中心化交易所)进行交易。 这样做,ETHW的价格可能会因流动性增加而受到影响。 因此,用户/投资者在PoW链上交易这些代币时应保持谨慎。

结论

Solidity开发者在处理由合约本身维护的chainId时,应给予特别关注。

关于BlockSec

BlockSec是一家开创性的区块链安全公司,成立于2021年,由一群全球知名的安全专家创立。公司致力于增强新兴Web3世界的安全性和可用性,以促进其大规模采用。为此,BlockSec提供智能合约和EVM链安全审计服务,Phalcon平台用于安全开发和主动威胁拦截,MetaSleuth平台用于资金追踪和调查,以及MetaDock扩展,为Web3构建者在加密世界中高效冲浪。

迄今为止,公司已为MetaMask、Uniswap Foundation、Compound、Forta和PancakeSwap等300多家知名客户提供服务,并在两轮融资中获得了来自Matrix Partners、Vitalbridge Capital和Fenbushi Capital等知名投资者的数千万美元投资。

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

官方Twitter账号:https://twitter.com/BlockSecTeam

Sign up for the latest updates
~$15.9M Lost: Trusted Volumes & More | BlockSec Weekly
Security Insights

~$15.9M Lost: Trusted Volumes & More | BlockSec Weekly

This BlockSec bi-weekly security report covers 11 notable attack incidents identified between April 27 and May 10, 2026, across Sui, Ethereum, BNB Chain, Base, Blast, and Berachain, with total estimated losses of approximately $15.9M. Three incidents are analyzed in detail: the highlighted $1.14M Aftermath Finance exploit on Sui, where a signed/unsigned semantic mismatch in the builder-fee validation allowed an attacker to inject a negative fee that was converted into positive collateral during settlement; the $5.87M Trusted Volumes RFQ authorization mismatch on Ethereum; and the $5.7M Wasabi Protocol infrastructure-to-contract-control compromise across multiple EVM chains.

Newsletter - April 2026
Security Insights

Newsletter - April 2026

In April 2026, the DeFi ecosystem experienced three major security incidents. KelpDAO lost ~$290M due to an insecure 1-of-1 DVN bridge configuration exploited via RPC infrastructure compromise, Drift Protocol suffered ~$285M from a multisig governance takeover leveraging Solana's durable nonce mechanism, and Rhea Finance incurred ~$18.4M following a business logic flaw in its margin-trading module that allowed circular swap path manipulatio

~$7.04M Lost: GiddyDefi, Volo Vault & More | BlockSec Weekly
Security Insights

~$7.04M Lost: GiddyDefi, Volo Vault & More | BlockSec Weekly

This BlockSec weekly security report covers eight attack incidents detected between April 20 and April 26, 2026, across Ethereum, Avalanche, Sui, Base, HyperLiquid, and MegaETH, with total estimated losses of approximately $7.04M. The highlighted incident is the $1.3M GiddyDefi exploit, where the attacker did not break any cryptography or use a flash loan but simply replayed an existing on-chain EIP-712 signature with the unsigned `aggregator` and `fromToken` fields swapped out for a malicious contract, demonstrating how partial signature coverage turns any historical signature into a generic permit. Other incidents include a $3.5M Volo Vault operator key compromise on Sui, a $1.5M Purrlend privileged-role takeover, a $413K SingularityFinance oracle misconfiguration, a $142.7K Scallop cross-pool index injection, a $72.35K Kipseli Router decimal mismatch, a $50.7K REVLoans (Juicebox) accounting pollution, and a $64K Custom Rebalancer arbitrary-call exploit.

Best Security Auditor for Web3

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

BlockSec Audit