La blockchain Proof-of-Work (PoW) ETHW, issue de la mise à niveau d'Ethereum, a tenté de démentir les allégations selon lesquelles elle aurait subi une attaque par rejeu au cours du week-end.

La société d'audit de smart contracts BlockSec a signalé ce qu'elle a décrit comme une attaque par rejeu qui a eu lieu le 16 septembre, au cours de laquelle les pirates ont prélevé des tokens ETHW en reprenant les données d'appel de la blockchain Proof-of-Stake (PoS) d'Ethereum sur la blockchain EthereumPoW.

Selon BlockSec, la cause fondamentale de l'attaque était due au fait que le pont cross-chain Omni sur la blockchain ETHW utilisait un ancien chainID, et ne vérifiait pas correctement celui du message cross-chain.

Le Mainnet et les testnets d'Ethereum utilisent deux identifiants pour des usages différents, à savoir un identifiant de réseau et un chain ID (chainID). Les messages entre nœuds utilisent l'ID de réseau, tandis que les signatures de transaction utilisent les chain ID. L'EIP-155 a introduit le chainID comme moyen de prévenir les attaques par rejeu entre les blockchains Ethereum et Ethereum Classic (ETC).

1/ Alerte | BlockSec a détecté que des pirates reprennent le message (calldata) de la blockchain PoS sur @EthereumPow. La principale cause de cette exploitation est que le pont ne vérifie pas correctement le ChainID réel (qui est maintenu par lui-même) du message cross-chain. - BlockSec (@BlockSecTeam) 18 septembre 2022

BlockSec a été le premier service d'analyse à signaler l'attaque par rejeu et à en informer ETHW, qui a rapidement réfuté les affirmations initiales selon lesquelles une attaque par rejeu avait été menée sur la blockchain. ETHW a tenté d'informer le pont Omni de l'exploitation au niveau du contrat :

J'ai essayé par tous les moyens de contacter Omni Bridge hier. Les ponts doivent vérifier correctement le réel ChainID des messages cross-chain. Encore une fois, il ne s'agit pas d'un rechargement de transaction au niveau de la plateforme, mais d'un rechargement de données d'appel en raison de la faille du contrat spécifique. https://t.co/bHbYR4b2AW pic.twitter.com/NZDn61cslJ- EthereumPoW (ETHW) Official #ETHW #ETHPoW (@EthereumPoW) 18 septembre 2022

L'analyse de l'attaque a révélé que le pirate a commencé par transférer 200 WETH via le pont Omni de la plateforme Gnosis avant de retransmettre le même message sur la plateforme PoW, obtenant ainsi 200 WETH supplémentaires. Le solde du contrat déployé sur la blockchain PoW a ainsi été vidé.

À lire également : Les ponts cross-chain sont dans le collimateur des pirates

L'analyse par BlockSec du code source du pont Omni a montré que la logique de vérification du chainID était présente. Par contre, le chainID vérifié utilisé dans le contrat était tiré d'une valeur conservée dans le stockage nommé unitStorage.

L'équipe a expliqué que ce n'était pas le chainID collecté par l'opcode CHAINID qui a été proposé par l'EIP-1344 et exacerbé par le fork résultant après la mise à niveau d'Ethereum :

« Cela est probablement dû au fait que le code est assez ancien (utilisant Solidity 0.4.24). Le code a bien fonctionné jusqu'au fork de la blockchain PoW. »

Cela a permis aux pirates de prendre des ETHW et potentiellement d'autres tokens détenus par le pont de la blockchain PoW, et de les échanger sur des marketplaces répertoriant les tokens concernés. Cointelegraph a contacté BlockSec pour connaître la valeur soutirée pendant cette exploitation.

Après le succès de l'événement Merge d'Ethereum, qui a vu la blockchain des smart contracts passer du PoW au PoS, un groupe de mineurs a décidé de poursuivre ses activités sur la blockchain PoW par un hard fork.