Glossaire / Confidentialité et sécurité
Empoisonnement d'adresse
Aussi appelé Address poisoning.
- Qu'est-ce que l'empoisonnement d'adresse ?
- L'empoisonnement d'adresse est une technique de vol dans laquelle un escroc vous envoie une transaction sans valeur depuis une adresse qui imite une adresse que vous utilisez déjà, en espérant que vous copierez la sienne depuis votre historique.
La cible est une habitude : puiser dans la liste des transactions d'un portefeuille pour réutiliser une adresse au lieu de demander une adresse neuve au destinataire. Les attaquants génèrent des adresses sosies qui correspondent aux premiers et aux derniers caractères, soit tout ce qu'affichent la plupart des écrans de portefeuille et des explorateurs de blocs. En mai 2024, un trader a perdu 1 155 bitcoin enveloppés, d'une valeur d'environ 68 millions de dollars, à cause d'un seul collage empoisonné.
Comment cela fonctionne
L'empoisonnement d'adresse comporte trois étapes, et seule la dernière vous concerne.
La génération du sosie. Les adresses bitcoin sont longues par conception, et les interfaces masquent le milieu. Une adresse bech32 utilise un alphabet de 32 caractères, si bien que produire une adresse qui correspond à quatre caractères de tête et quatre caractères de queue d'une cible suppose de chercher environ 32 puissance huit, soit près de 1,1 billion de candidats. Un simple GPU grand public tournant une nuit y parvient, et la recherche est massivement parallèle, si bien qu'une machine louée peut empoisonner des milliers de cibles à la fois. L'attaquant n'a pas besoin de votre clé, seulement d'une adresse qui lui appartienne et qui ressemble à celle à laquelle vous faites confiance.
La plantation. Sur bitcoin, l'attaquant dépense une somme infime, généralement 330 ou 546 satoshis, depuis l'adresse sosie vers la vôtre. Votre portefeuille enregistre un paiement entrant, et le champ expéditeur affiche désormais une adresse qu'un coup d'œil ne permet pas de distinguer de celle que vous utilisez réellement. Certaines campagnes empoisonnent plutôt dans l'autre sens, en envoyant depuis une adresse qui ressemble à l'adresse de dépôt de la plateforme d'échange que vous ne cessez de coller dans vos propres retraits.
L'attente. Des semaines plus tard, vous vous apprêtez à envoyer. Vous faites défiler l'historique, vous trouvez « l'adresse que j'ai utilisée la dernière fois », vous copiez, vous collez, vous confirmez. La transaction est valide, correctement signée, et irréversible dès qu'elle est confirmée environ dix minutes plus tard. Il n'y a pas de service antifraude, car aucune fraude n'a eu lieu au niveau du protocole : vous avez payé exactement la personne que vous avez indiquée au réseau.
L'économie diffère selon la chaîne. Ethereum permet à un attaquant d'émettre un transfert de valeur nulle pour le seul coût du gaz, si bien que l'empoisonnement y est presque gratuit et se pratique à l'échelle industrielle. La règle de la poussière de bitcoin impose un petit paiement par tentative, ce qui est l'un des rares endroits où cette politique agit discrètement comme un contrôle du spam.
Pourquoi cela compte quand vous achetez du bitcoin
La minute la plus risquée dans la vie d'un nouvel acheteur est le premier retrait d'une plateforme d'échange vers un portefeuille qu'il vient de créer.
C'est le moment où vous copiez une chaîne inconnue entre deux applications, où vous n'avez pas encore de carnet d'adresses, et où vous êtes le moins susceptible de remarquer que les 20 caractères du milieu ont changé. C'est aussi le moment où le montant correspond souvent à la totalité de votre position. Trois mesures éliminent presque tout le risque, et aucune ne dépend de votre prudence.
Définissez une liste blanche de retrait. Kraken, Coinbase et Binance vous permettent tous d'enregistrer les adresses vers lesquelles votre compte est autorisé à envoyer, et la plupart imposent un délai avant qu'une adresse nouvellement ajoutée devienne utilisable. Vous la configurez une fois, tranquillement, alors que rien n'est en train d'être volé. Une adresse empoisonnée collée dans un compte soumis à liste blanche est simplement rejetée.
Obtenez l'adresse à partir de l'appareil récepteur, pas depuis l'historique. Un portefeuille matériel génère et affiche votre adresse de réception sur son propre écran. Trezor et Ledger vous obligent tous deux à la confirmer à cet endroit, et un logiciel malveillant ou un historique falsifié sur l'ordinateur ne peut pas modifier ce que l'appareil affiche. Faites de même en sens inverse lorsque vous envoyez : lisez l'adresse de destination sur l'écran de l'appareil avant d'approuver.
Vérifiez le milieu. Comparer les quatre premiers et les quatre derniers caractères est précisément la vérification que l'attaque est conçue pour franchir. Comparez une suite de caractères du centre de la chaîne ou, mieux, comparez la totalité en scannant un QR code plutôt qu'en lisant.
Le collage à 68 millions de dollars
Le 3 mai 2024, un trader s'apprêtait à déplacer 1 155 bitcoin enveloppés, alors d'une valeur d'environ 68 millions de dollars, et a d'abord fait la chose responsable : un petit transfert d'essai.
Un attaquant surveillait la mempool pour repérer exactement ce schéma. En quelques minutes, il a créé une adresse correspondant aux premiers et aux derniers caractères de la destination légitime et a envoyé depuis elle un transfert de jeton, afin que l'entrée empoisonnée apparaisse dans l'historique de l'expéditeur immédiatement au-dessus de la vraie. Le transfert de 1 155 bitcoins est allé à l'attaquant.
Le dénouement est inhabituel. Des enquêteurs on-chain ont tracé l'infrastructure de l'attaquant et l'ont rendue publique, et environ une semaine plus tard, les fonds ont été restitués en totalité. Rien dans ce résultat n'est reproductible. La récupération a eu lieu parce que la somme était assez importante pour attirer l'attention publique et celle des enquêteurs, et que l'attaquant a jugé que la pression ne valait pas le coup, non parce qu'un protocole ou une entreprise aurait eu un moyen d'annuler le paiement.
Empoisonnement d'adresse vs attaque de poussière
L'empoisonnement d'adresse et les attaques de poussière se présentent tous deux comme un minuscule dépôt inattendu, et ils visent des erreurs différentes. Une attaque de poussière veut que le bitcoin lui-même retourne en circulation, dépensé avec vos autres sorties afin qu'un analyste de chaîne puisse fusionner les deux en un même groupe. L'empoisonnement d'adresse ne se soucie pas du tout de ce qu'il advient de la poussière ; la charge utile est l'adresse de l'expéditeur qui siège dans votre historique. Geler la sortie vous protège de la première attaque et ne fait rien contre la seconde, c'est pourquoi la véritable contre-mesure ici est de ne jamais tirer une adresse d'une liste de transactions.
Empoisonnement d'adresse vs logiciel malveillant du presse-papiers
Les deux attaques se terminent par du bitcoin envoyé vers une chaîne que vous ne vouliez pas, et elles s'attaquent à des parties différentes de la chaîne de conservation. Un logiciel malveillant du presse-papiers exige du code exécuté sur votre machine et remplace l'adresse entre la copie et le collage, si bien que l'adresse que vous avez regardée était correcte et que celle vers laquelle vous avez envoyé ne l'était pas. L'empoisonnement d'adresse n'a besoin d'aucun accès à votre appareil : la mauvaise adresse se trouvait déjà dans l'historique de votre propre portefeuille, placée là par un paiement que n'importe qui pouvait effectuer. Cela rend l'empoisonnement insensible aux antivirus et accessible à quiconque connaît l'une de vos adresses.