Qu'est-ce qu'une attaque par rejeu?
Accueil
Articles
Qu'est-ce qu'une attaque par rejeu?

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

Intermédiaire
Publié le Feb 4, 2019Mis à jour le Oct 25, 2023
4m

Une attaque par rejeu, parfois également appelée attaque par relecture, est une cyberattaque dans laquelle l'entité malveillante intercepte puis réitère (on dit également rejoue, ou répète) une transmission de données valide en passant par un réseau. En raison de la validité des données d'origine (qui proviennent généralement d'un utilisateur autorisé), les protocoles de sécurité du réseau traitent l'attaque comme s'il s'agissait d'une transmission de données normale. Étant donné que les messages originaux sont interceptés et retransmis textuellement, les pirates informatiques utilisant des attaques par rejeu n’ont pas forcément besoin de les déchiffrer.


Que peuvent faire les pirates avec une attaque par rejeu?

Les attaques par rejeu peuvent être utilisées pour accéder aux informations stockées sur un réseau normalement protégé, en lui transmettant des informations d'identification apparemment valides. Elles peuvent également être utilisées pour tromper les institutions financières en dupliquant des transactions, permettant ainsi aux attaquants de retirer de l’argent directement sur les comptes de leurs victimes. Dans certains cas, les pirates informatiques assembleront des parties de plusieurs messages cryptés et transmettront le texte chiffré résultant au réseau, dans le cadre d'une attaque dite de “couper-coller”. La réaction du réseau à ce type d'attaque donnera souvent au pirate informatique des informations précieuses pouvant être ensuite utilisées pour exploiter davantage le système.

Malgré les dangers évidents qui y sont associés, il y a des limites à ce que les pirates informatiques peuvent réaliser avec les seules attaques par rejeu. Les attaquants ne peuvent pas modifier les données envoyées sans que le réseau les rejette, ce qui limite l'efficacité de l'attaque à la répétition d'actions passées. De plus, ces attaques sont également relativement faciles à défendre. Une défense aussi simple que l'ajout d'un horodatage à la transmission de données peut vous protéger contre des tentatives de rejeu simples. Les serveurs peuvent également mettre en cache des messages répétés et les couper après un certain nombre de répétitions, afin de limiter le nombre de tentatives qu'un attaquant peut faire, en répétant rapidement et successivement la « relecture » des messages.


Pourquoi les attaques par rejeu concernent particulièrement le monde des crypto-monnaies ?

Bien qu’elles ne soient pas seulement limitées à ce milieu, ces attaques sont particulièrement pertinentes dans le monde lié aux transactions des crypto-monnaie et des registres blockchain. Notamment parce que les registres basés sur la blockchain subissent parfois des modifications de protocole ou des mises à jour, connues sous le nom de «hard forks». Quand un « hard fork » (ou bifurcation rigide) a lieu, le registre existant se scinde en deux, l'un exécutant la version originale du logiciel et l'autre exécutant la nouvelle version mise à jour. Certains « hard forks » sont simplement destinés à mettre à jour le registre, alors que d'autres créent une nouvelle ramification et forment alors concrètement de nouvelles crypto-monnaies. L'un des exemples les plus connus de ce dernier type de « hard fork » est la mise à jour qui a permis à Bitcoin Cash de se séparer du registre Bitcoin, le 1er août 2017.

Lorsque ce type de « hard fork » intervient, il devient théoriquement possible pour les attaquants d’utiliser des attaques par rejeu contre les registres blockchain. Une transaction exécutée sur un registre par une personne dont le portefeuille était valide avant ce « hard fork » sera également valide sur l'autre. Ainsi, quelqu’un qui a reçu un certain nombre d’unités de crypto-monnaie d’une autre personne depuis le registre original, pourrait en basculant sur l’autre registre, dupliquer la transaction et transférer frauduleusement un nombre identique d’unités sur son compte une seconde fois. Étant donné que leurs portefeuilles ne font pas partie de l’historique partagé sur les registres, les utilisateurs qui se servent d’une blockchain après un « hard fork » ne sont pas vulnérables à ces attaques.


Comment les Blockchains peuvent-elles être protégées contre ces attaques?

Bien que la vulnérabilité des registres blockchain « forkés » aux attaques par rejeu soit une préoccupation légitime, la plupart des « hard forks » incluent des protocoles de sécurité spécifiquement conçus pour empêcher le succès de ces attaques. Les mesures efficaces contre les attaques par rejeu des chaînes de blocs se répartissent en deux catégories, appelées protection forte contre le rejeu (Strong Replay Protection) et protection contre le rejeu optionnelle (Opt-in Replay Protection). Dans la protection anti-rejeu forte, un marqueur spécial est ajouté au nouveau registre qui émerge du hard fork, afin de garantir que les transactions effectuées sur celui-ci ne seront pas valables dans l’ancien registre, et inversement. C'est le type de protection qui a été implémenté lorsque Bitcoin Cash s’est séparé de Bitcoin.

Une fois implémentée, la protection anti-replay forte est exécutée automatiquement dès que le hard fork intervient. De l’autre côté, la protection de rejeu optionnelle oblige les utilisateurs à modifier manuellement leurs transactions pour s'assurer que celles-ci ne puissent pas être exécutées à nouveau. La protection optionnelle peut être utile dans les cas où le hard fork est pensé comme une mise à jour du registre principal d'une crypto-monnaie, plutôt que comme une scission complète de du registre (et donc de la chaîne de blocs).

Outre ces solutions à l'échelle du registre, les utilisateurs individuels peuvent également prendre des mesures pour se protéger des attaques par rejeu. Une méthode consiste à empêcher les coins d'être transférées jusqu'à ce que le registre atteigne un certain nombre de blocs, bloquant ainsi toute attaque par rejeu impliquant les unités en question, le réseau ne pouvant les vérifier. Il convient de noter, cependant, que tous les portefeuilles ou tous les registres n'offrent pas cette fonction.


Pour conclure

Les attaques par rejeu représentent une menace réelle pour la sécurité du réseau lorsqu'elles réussissent. Contrairement à de nombreux autres types d'attaques, les attaques par rejeu ne reposent pas sur le décryptage des données, ce qui en fait une solution de contournement efficace pour les acteurs malveillants qui sont de plus en plus confrontés à des protocoles de cryptage renforcés. En raison des « hard forks » utilisées pour les mettre à jour ou les séparer, les registres blockchain sont particulièrement vulnérables à ce type de cyberattaques. Cependant, il existe des solutions robustes qui sont suffisamment efficaces pour protéger les systèmes blockchain. En particulier, l’utilisation d’une protection renforcée contre le rejeu peut garantir que les attaquants ne seront pas en mesure de répliquer les transactions après qu’un « hard fork » soit exécuté.