Attaque par rejeu

Dans les applications blockchain et crypto, une attaque par rejeu désigne une situation où un attaquant soumet à nouveau une transaction, un message ou une signature d’autorisation déjà approuvé, dans le même environnement blockchain ou dans un autre, ce qui conduit le système à l’exécuter une seconde fois. Ce type d’attaque résulte le plus souvent de l’absence de nonce unique, du manque de liaison au chainId, d’autorisations sans date d’expiration ou sans liaison à un domaine. Les conséquences peuvent inclure une double dépense d’actifs, des transferts de NFT en double, ou la réutilisation non autorisée de données d’identification pour la connexion.
Résumé
1.
Une attaque par rejeu se produit lorsqu’un attaquant intercepte et retransmet des données valides afin de tromper un système et de lui faire exécuter des opérations non autorisées.
2.
Dans la blockchain, les attaques par rejeu peuvent entraîner l’exécution d’une même transaction sur différentes chaînes, ce qui peut provoquer une perte d’actifs.
3.
Un exemple notable est le hard fork d’Ethereum, où des attaquants ont rejoué des transactions sur les chaînes ETH et ETC.
4.
Les mesures de protection incluent des identifiants de transaction uniques, la vérification des horodatages et la différenciation des IDs de chaîne.
5.
Les utilisateurs doivent choisir des portefeuilles dotés de la protection contre le rejeu et manipuler les transferts d’actifs avec précaution après un hard fork.
Attaque par rejeu

Qu’est-ce qu’une attaque par rejeu ?

Une attaque par rejeu consiste à soumettre à nouveau au système une transaction ou une autorisation précédemment valide, entraînant ainsi son exécution répétée. C’est comme copier un document signé et le présenter à différents guichets pour obtenir plusieurs tampons.

Dans la blockchain, les signatures sont générées à partir de clés privées, agissant comme des sceaux numériques pour confirmer : « J’approuve cette action. » Si une transaction signée est reconnue dans d’autres contextes, elle devient exposée au rejeu.

Pour éviter toute duplication, les blockchains utilisent un identifiant unique appelé nonce. Le nonce fonctionne comme un numéro de série propre à chaque opération, jamais réutilisé. Le système n’accepte que les nonces encore inutilisés.

Dans les environnements cross-chain ou lors d’un fork, un chainId s’avère également indispensable. Le chainId sert d’identifiant réseau, liant la transaction à une chaîne précise et empêchant son rejeu sur une autre.

Pourquoi les attaques par rejeu surviennent-elles ?

Les attaques par rejeu se produisent généralement lorsque le système ne précise pas explicitement le « contexte » d’une action. Ce contexte englobe la blockchain concernée, la présence d’un identifiant unique, une éventuelle date d’expiration, ou encore l’association à un domaine ou à un smart contract spécifique.

Si une signature ne prouve que le consentement à une action sans préciser la chaîne, l’application ou la période de validité, toute personne disposant de cette signature peut la réutiliser dans un autre environnement.

Si une application ne gère l’état « utilisé ou non utilisé » qu’en local ou en cache, sans enregistrement sur la blockchain, les attaques par rejeu deviennent plus simples à réaliser. De même, après un fork, si les deux chaînes partagent le même format de transaction et les mêmes nonces, le rejeu cross-chain est possible.

Comment les attaques par rejeu sont-elles menées sur la blockchain ?

Pour un rejeu sur la même chaîne, l’attaquant intercepte un message d’autorisation ou une transaction spécifique et la soumet à nouveau sur la même chaîne. Ce scénario survient souvent lorsque les « autorisations de signature hors ligne » ne comportent ni nonce unique ni horodatage d’expiration.

Dans le cas d’un rejeu cross-chain, les transactions ou messages ne sont pas liés à un chainId, ou bien, après un fork, les deux chaînes acceptent le même format de signature. L’attaquant peut alors exécuter une transaction valide de la chaîne A sur la chaîne B.

Au niveau des smart contracts, si les contrats ne suivent pas les identifiants de messages traités ou manquent d’idempotence (c’est-à-dire que des appels répétés produisent des effets cumulatifs), l’attaquant peut déclencher plusieurs fois des opérations initialement prévues pour une seule exécution.

Exemples concrets d’attaques par rejeu

En 2016, Ethereum a connu une scission de chaîne, donnant naissance à ETH et ETC. Les premières transactions ne différenciant pas les chaînes, des risques de rejeu cross-chain sont apparus. L’EIP-155, introduit cette année-là, a ajouté le chainId aux transactions, réduisant nettement ces attaques (voir l’historique des Ethereum Improvement Proposals).

Dans les scénarios d’autorisation, si les approbations par signature pour transferts ou plafonds de dépenses ne comportent ni expiration ni nonce unique, les signatures peuvent être resoumises. L’EIP-2612, introduit en 2020, a standardisé l’autorisation par signature des tokens ERC-20, rendant nonce et expiration obligatoires (voir Ethereum Improvement Proposal).

Si les bridges cross-chain et protocoles de messagerie n’attribuent pas d’identifiants uniques ni ne suivent les messages consommés, les attaques par rejeu peuvent entraîner la création ou la libération répétée d’actifs. Le secteur atténue désormais ces risques en utilisant des IDs de messages et le suivi d’état on-chain.

Comment détecter les indices d’une attaque par rejeu ?

Commencez par vérifier le contenu de toute demande de signature. Si votre portefeuille vous propose une « signature à l’aveugle » (sans détails clairs sur la transaction, le domaine ou la chaîne), le risque de rejeu est accru.

Puis, assurez-vous que l’autorisation comporte une date d’expiration et un nonce unique. L’absence de l’un ou de l’autre augmente votre exposition.

Vérifiez la présence d’un contexte de chaîne explicite. L’absence de chainId ou de séparation de domaine (par exemple dans les domaines EIP-712) accroît le risque de rejeu entre environnements différents.

Enfin, surveillez tout signe d’exécution répétée inhabituelle : même autorisation utilisée plusieurs fois, transferts d’actifs répétés en peu de temps, ou messages identiques ayant des effets sur plusieurs chaînes.

Mesures techniques pour se protéger des attaques par rejeu

Étape 1 : Liez les transactions à leur contexte de chaîne. Utilisez le chainId de l’EIP-155 pour restreindre chaque transaction à sa chaîne cible et empêcher les replays cross-chain.

Étape 2 : Attribuez à chaque autorisation un nonce unique et une date d’expiration. Les standards EIP-2612 et Permit2 imposent que chaque signature comporte nonce et date limite ; les autorisations expirées sont invalidées.

Étape 3 : Enregistrez les messages ou nonces utilisés dans les smart contracts. Chaque message doit disposer d’un ID non réutilisable et son état de consommation doit être stocké on-chain pour garantir l’idempotence.

Étape 4 : Utilisez des signatures structurées selon l’EIP-712. Les signatures doivent inclure le nom de domaine (verifyingContract, name, version), le chainId et un contenu lisible, afin de limiter les abus et vecteurs de rejeu.

Étape 5 : Implémentez une validation bidirectionnelle dans les bridges cross-chain et les canaux de messagerie. Contrôlez non seulement les chaînes source et cible, mais aussi l’unicité du message, les numéros de lot et l’état de traitement pour empêcher toute exécution répétée par différentes routes.

Comment les utilisateurs peuvent-ils éviter les attaques par rejeu au quotidien ?

Étape 1 : Ne signez que sur des interfaces affichant des informations explicites. Refusez les signatures à l’aveugle : le message doit toujours contenir le domaine, la chaîne et la finalité.

Étape 2 : Limitez les autorisations accordées. Privilégiez les approbations à durée limitée et plafonnées, et révoquez régulièrement les droits inutilisés via des explorateurs blockchain ou outils de gestion. Lors d’un retrait sur Gate, vérifiez toujours le réseau et l’adresse sélectionnés pour éviter toute erreur cross-environment.

Étape 3 : Séparez vos fonds de vos portefeuilles opérationnels. Conservez les actifs principaux dans des hardware wallets ou portefeuilles en lecture seule ; utilisez de petits portefeuilles chauds pour interagir avec les DApps et limiter les pertes potentielles dues à des autorisations répétées.

Étape 4 : Utilisez un carnet d’adresses et des listes blanches. Enregistrez les adresses de destinataires fréquents dans le carnet d’adresses Gate et activez les listes blanches de retrait afin de réduire les risques liés aux erreurs ou aux signatures de phishing provoquant des soumissions multiples.

Étape 5 : Surveillez toute activité anormale. Si vous détectez des transactions ou autorisations en double sur une courte période, suspendez immédiatement vos opérations, révoquez les autorisations et vérifiez la sécurité de vos appareils et extensions.

En quoi l’attaque par rejeu diffère-t-elle d’une attaque de double dépense ou Sybil ?

L’attaque par rejeu consiste à resoumettre une transaction ou une autorisation valide, le problème étant l’exécution répétée. La double dépense vise à utiliser le même actif à deux reprises, impliquant généralement les mécanismes de consensus et la réorganisation des blocs—cela relève d’une différence fondamentale au niveau du protocole.

L’attaque Sybil consiste à utiliser plusieurs identités pour usurper de nombreux utilisateurs, manipuler des votes ou des distributions ; elle ne concerne pas la répétition de transactions, mais la fraude sur la couche identité. Les attaques par rejeu se situent au niveau transaction/message.

Par ailleurs, les attaques de type « man-in-the-middle » modifient généralement les données ou le routage, alors que les attaques par rejeu se bornent à resoumettre des données identiques sans modification du contenu.

Comment les attaques par rejeu évoluent-elles dans le Web3 ?

Depuis l’introduction du chainId par l’EIP-155 en 2016, les attaques de rejeu cross-chain ont nettement diminué ; l’EIP-2612 (2020) et Permit2 ont renforcé la standardisation des mécanismes de nonce et d’expiration pour les approbations par signature. À l’horizon 2025, avec l’essor des réseaux multi-chaînes et Layer 2, les canaux de messagerie, les IDs anti-rejeu et la conception idempotente deviennent des piliers d’infrastructure.

L’abstraction de compte (par exemple, ERC-4337) favorise la gestion des nonces par domaine et stratégies associées—l’utilisation de nonces distincts pour chaque opération réduit le risque de rejeu à l’intérieur d’un même domaine. Les bridges cross-chain privilégient la vérification de la source et le suivi d’identifiants uniques pour limiter les opportunités d’exécution répétée.

L’attaque par rejeu consiste à exécuter un contenu valide dans un contexte inapproprié. Pour s’en prémunir, il faut clarifier le contexte : identifiants de chaîne, nonces uniques, dates d’expiration, association à un domaine, et consigner systématiquement les états consommés on-chain. Pour les développeurs : adoptez les standards EIP-155, EIP-712, EIP-2612/Permit2 et une conception idempotente. Pour les utilisateurs : évitez les signatures à l’aveugle, privilégiez les autorisations à durée limitée, séparez les portefeuilles par usage et activez les listes blanches sur les exchanges pour limiter les risques. Si vous constatez une répétition anormale impliquant des fonds, suspendez immédiatement toute opération et révoquez les autorisations.

FAQ

Les attaques par rejeu peuvent-elles entraîner la perte de mes actifs ?

Les attaques par rejeu ne permettent pas de voler directement vos actifs, mais peuvent conduire à des transactions répétées à des fins malveillantes. Par exemple, si vous transférez 100 tokens sur la chaîne A et qu’un attaquant rejoue cette transaction sur la chaîne B, vous risquez de perdre des fonds sur les deux chaînes. La meilleure défense consiste à utiliser des portefeuilles qui prennent en charge la vérification du chain ID et à faire preuve d’une vigilance accrue lors des opérations cross-chain.

Dois-je m’inquiéter des attaques par rejeu lors de transactions sur Gate ?

Les exchanges centralisés comme Gate intègrent plusieurs couches de sécurité ; les utilisateurs réguliers sont très peu exposés au risque d’attaque par rejeu lors de transactions sur la plateforme. Le risque principal apparaît lors de transferts cross-chain avec des portefeuilles auto-hébergés. Pour le trading spot ou sur produits dérivés sur Gate, les contrôles de risque de la plateforme assurent la sécurité de votre compte.

Des événements majeurs comme une fusion sur Binance peuvent-ils entraîner des attaques par rejeu à grande échelle ?

Les évolutions majeures de l’écosystème (fusions ou forks de chaînes) augmentent le risque d’attaques par rejeu. Toutefois, les projets mettent généralement en place des mesures de protection, notamment la mise à jour anticipée des chain IDs. En tant qu’utilisateur, attendez toujours les annonces officielles avant toute opération cross-chain pendant ces périodes de transition pour éviter de devenir une cible.

Si ma clé privée est compromise, une attaque par rejeu aggrave-t-elle les pertes ?

La fuite d’une clé privée constitue déjà une faille de sécurité majeure. Les attaques par rejeu aggravent le problème, car un attaquant peut non seulement déplacer des actifs sur une chaîne, mais aussi rejouer les transactions sur plusieurs chaînes, ce qui peut entraîner la perte de tous vos actifs similaires. Transférez immédiatement vos fonds vers un nouveau portefeuille, c’est la seule solution.

Comment l’EIP-155 permet-il de prévenir les attaques par rejeu ?

L’EIP-155 a introduit le chain ID, garantissant que chaque transaction porte un identifiant réseau unique, ce qui empêche son exécution sur d’autres chaînes. Les réseaux Ethereum actuels et les chaînes compatibles appliquent tous ce standard, ce qui rend la plupart des attaques par rejeu inopérantes. Choisir un portefeuille compatible EIP-155 est la méthode la plus simple pour se protéger.

Un simple « j’aime » peut faire toute la différence

Partager

Glossaires associés
Décrypter
Le déchiffrement désigne l'opération permettant de retrouver des données chiffrées dans leur format lisible d'origine. Dans l'univers des cryptomonnaies et de la blockchain, le déchiffrement constitue une opération cryptographique essentielle, reposant généralement sur l'utilisation d'une clé, privée ou publique selon le contexte, afin de donner accès aux informations protégées uniquement aux utilisateurs habilités, tout en préservant la sécurité du système. On distingue deux méthodes principales : le déchi
époque
Dans le Web3, le terme « cycle » désigne les processus récurrents ou les fenêtres propres aux protocoles ou applications blockchain, qui interviennent à des intervalles fixes, qu’il s’agisse du temps ou du nombre de blocs. Il peut s’agir, par exemple, des événements de halving sur Bitcoin, des rounds de consensus sur Ethereum, des calendriers de vesting des tokens, des périodes de contestation des retraits sur les solutions Layer 2, des règlements de taux de financement et de rendement, des mises à jour des oracles ou encore des périodes de vote de gouvernance. La durée, les conditions de déclenchement et la souplesse de ces cycles diffèrent selon les systèmes. Maîtriser le fonctionnement de ces cycles permet de mieux gérer la liquidité, d’optimiser le moment de ses actions et d’identifier les limites de risque.
Effondrement
La vente massive désigne la liquidation rapide de grandes quantités d’actifs numériques sur une courte période. Elle entraîne souvent une chute notable des prix, une augmentation soudaine du volume des transactions, des mouvements de prix abrupts vers le bas et des bouleversements importants dans le sentiment du marché. Ce phénomène peut survenir en raison d’un vent de panique, de la diffusion de nouvelles négatives, d’événements macroéconomiques, ou lorsque de grands investisseurs (baleines) procèdent à de
Qu'est-ce qu'un nonce
Le terme « nonce » désigne un « nombre utilisé une seule fois », dont la fonction est d’assurer qu’une opération donnée ne soit réalisée qu’une fois ou dans un ordre strictement séquentiel. Dans le domaine de la blockchain et de la cryptographie, le nonce intervient principalement dans trois cas : le nonce de transaction garantit le traitement séquentiel des opérations d’un compte et empêche leur répétition ; le nonce de minage est employé pour rechercher un hash conforme à un niveau de difficulté défini ; enfin, le nonce de signature ou de connexion prévient la réutilisation des messages lors d’attaques par rejeu. Ce concept se rencontre lors de transactions on-chain, du suivi des opérations de minage, ou lors de la connexion à des sites web via votre wallet.
Mélange de fonds
Le mélange des actifs désigne une pratique fréquemment observée chez les plateformes d’échange de cryptomonnaies ou les services de garde : ces entités regroupent et gèrent les actifs numériques de plusieurs clients au sein d’un même compte de conservation ou portefeuille numérique. Elles assurent le suivi de la propriété individuelle par le biais de registres internes. Les actifs sont conservés dans des portefeuilles numériques centralisés contrôlés par l’institution, et non directement par les clients sur

Articles Connexes

Guide de prévention des arnaques Airdrop
Débutant

Guide de prévention des arnaques Airdrop

Cet article se penche sur les largages aériens Web3, les types courants et les escroqueries potentielles auxquelles ils peuvent être liés. Il discute également de la manière dont les escrocs se nourrissent de l'excitation autour des largages aériens pour piéger les utilisateurs. En analysant le cas du largage aérien de Jupiter, nous exposons comment les escroqueries cryptographiques opèrent et à quel point elles peuvent être dangereuses. L'article fournit des conseils concrets pour aider les utilisateurs à identifier les risques, à protéger leurs actifs et à participer en toute sécurité aux largages aériens.
2024-10-24 14:33:05
Qu'est-ce que Solscan et comment l'utiliser ? (Mise à jour 2025)
Intermédiaire

Qu'est-ce que Solscan et comment l'utiliser ? (Mise à jour 2025)

Solscan est un explorateur de blockchain Solana amélioré qui offre aux utilisateurs une plateforme web pour explorer et analyser les transactions, les adresses de portefeuille, les contrats, les NFT et les projets DeFi sur la blockchain Solana. Suite à son acquisition par Etherscan en 2025, la plateforme propose désormais un tableau de bord analytique repensé, des outils pour les développeurs élargis, des fonctionnalités de sécurité avancées, un suivi complet des protocoles DeFi sur 78 protocoles, et des intégrations sophistiquées de marché NFT avec des outils d'analyse de rareté.
2024-03-08 14:36:44
Qu'est-ce que Tronscan et comment pouvez-vous l'utiliser en 2025?
Débutant

Qu'est-ce que Tronscan et comment pouvez-vous l'utiliser en 2025?

Tronscan est un explorateur de blockchain qui va au-delà des bases, offrant une gestion de portefeuille, un suivi des jetons, des insights sur les contrats intelligents et une participation à la gouvernance. D'ici 2025, il a évolué avec des fonctionnalités de sécurité renforcées, des analyses étendues, une intégration inter-chaînes et une expérience mobile améliorée. La plateforme inclut désormais une authentification biométrique avancée, une surveillance des transactions en temps réel et un tableau de bord DeFi complet. Les développeurs bénéficient de l'analyse de contrats intelligents alimentée par l'IA et d'environnements de test améliorés, tandis que les utilisateurs apprécient une vue unifiée de portefeuille multi-chaînes et une navigation basée sur des gestes sur les appareils mobiles.
2023-11-22 18:27:42