BlockPulseNews
Définition

Signature replay : définition

Le signature replay, ou rejeu de signature, est une attaque qui consiste à réutiliser une signature valide dans un contexte non prévu, par exemple sur une autre chaîne, sur un autre contrat ou plusieurs fois de suite, pour déclencher une action non voulue.

Thème : Sécurité et arnaques

Signature replay : comment ça marche ?

Une signature prouve qu'un détenteur de clé a approuvé un message précis. Elle ne dit rien du contexte si ce contexte n'est pas inclus dans le message signé. Un attaquant qui intercepte une signature peut donc la présenter à nouveau ailleurs : sur un autre réseau, dans un autre contrat qui vérifie le même format de message, ou une seconde fois dans le même contrat.

Plusieurs protections se complètent. Pour les transactions Ethereum, l'EIP-155 intègre l'identifiant de chaîne dans la signature, ce qui empêche de rejouer une transaction sur un autre réseau. Pour les messages signés hors chaîne, l'EIP-712 définit un séparateur de domaine qui peut contenir le nom de l'application, l'identifiant de chaîne et l'adresse du contrat vérificateur. Ces mesures ne suffisent pas contre un rejeu dans le même contrat. Celui-ci doit enregistrer les signatures déjà utilisées ou exiger un nonce, un numéro à usage unique incrémenté à chaque opération, et idéalement une date d'expiration. L'oubli de l'un de ces éléments est une faille récurrente dans les audits de smart contracts.

Un exemple concret

Imaginons un contrat qui permet de retirer des fonds sur présentation d'une signature de l'administrateur indiquant un destinataire et un montant. Si le contrat ne mémorise pas les signatures déjà utilisées, le destinataire peut soumettre la même signature dix fois et retirer dix fois le montant prévu.

Les risques à connaître

Un rejeu peut vider un contrat ou exécuter plusieurs fois une autorisation. Les utilisateurs sont aussi exposés lorsqu'une application leur fait signer des messages sans domaine clair. Il est prudent de vérifier dans le portefeuille le nom du domaine, la chaîne et le contrat avant de signer.

À ne pas confondre avec

  • Malleability : La malléabilité consiste à modifier une signature pour en obtenir une autre tout aussi valide, alors que le rejeu réutilise la même signature dans un autre contexte.
  • EIP-155 : L'EIP-155 est une protection contre le rejeu de transactions entre chaînes, pas le nom de l'attaque.
  • EIP-712 : L'EIP-712 structure les messages signés et ajoute un domaine, ce qui aide à prévenir le rejeu sans le supprimer totalement.

Questions fréquentes sur Signature replay

Comment un contrat se protège-t-il contre le rejeu ?

En liant chaque signature à une chaîne et à un contrat via un domaine, en utilisant un nonce à usage unique et en refusant toute signature déjà consommée ou expirée.

Une transaction peut-elle être rejouée sur une autre blockchain ?

Sur les réseaux compatibles avec Ethereum, l'identifiant de chaîne introduit par l'EIP-155 l'empêche pour les transactions qui l'utilisent. Le risque subsiste pour les messages signés mal conçus.

Termes liés

Dans le même thème : Sécurité et arnaques

Tous les termes du thème Sécurité et arnaques →

À lire

L'actualité : Sécurité et arnaques

Les derniers articles de BlockPulseNews sur ce sujet.

Approfondir avec l'Académie : La Sécurité Crypto Un module gratuit, en leçons courtes et quiz, pour maîtriser ce thème pas à pas.
Découvrir le module

Les autres termes en S

← Tout le lexique crypto de A à Z