Résoudre une attaque d'empoisonnement : comment cela fonctionne et comment l'arrêter
Par Al Jobson · 10 minutes de lecture · septembre 2026
Le 3 mai 2024, un seul portefeuille Ethereum a envoyé 1 155 WBTC, d'une valeur de 68 millions de dollars à l'époque, à un attaquant dans le cadre d'une attaque par empoisonnement d'adresse de manuel[1]. La victime venait de déplacer les mêmes fonds entre deux de ses propres portefeuilles. L'attaquant a observé la transaction, a généré une adresse personnalisée dont les six premiers et derniers caractères correspondaient au destinataire prévu, a envoyé un transfert de 0 $ à partir de celle-ci pour apparaître dans l'historique de l'expéditeur et a attendu. Le transfert suivant a copié la mauvaise adresse hors de l'historique. Les fonds ont disparu en un clic. Voici comment fonctionne l'attaque, pourquoi l'interface utilisateur la fait fonctionner et ce qui aide réellement en 2026.
Le mécanicien, en une page
Une adresse Ethereum comporte 42 caractères : 0x plus 40 caractères hexadécimaux. Aucune interface utilisateur de portefeuille n'affiche les 40. MetaMask, Trust Wallet, Rabby, Etherscan et chaque explorateur mobile tronqué en 0xABCD…1234 ou similaire. Ce raccourcissement est la vulnérabilité. Si un attaquant génère une clé privée dont l'adresse correspond aux 4 à 8 premiers caractères hexadécimaux et aux 4 à 8 derniers caractères hexadécimaux de votre cible, les deux adresses semblent identiques dans chaque interface utilisateur de portefeuille livrée aujourd'hui[2].
La génération d'une adresse personnalisée correspondant à un préfixe de 8 hexadécimaux et à un suffixe de 8 hexadécimaux prend environ 2 ^ 64 générations de paires de clés à courbe elliptique. Infaisable sur un ordinateur portable, trivial sur un rack de GPU. Halborn a estimé le coût à des centaines de dollars pour un match 8+8 ; Les outils de type grossièreté produisent 6+6 en quelques minutes[3]. L'économie fonctionne à ce prix-là, car un coup réussi rembourse toute la batterie de GPU.
Une fois que l'attaquant a l'adresse personnalisée, il insère une transaction dans l'historique de la victime. Three variants:
- ETH à valeur nulle / transfert natif. La variante la plus ancienne. A 0-ETH tx from lookalike to victim. Appears in Etherscan's "Transactions" tab. Les portefeuilles modernes ont commencé à les filtrer, mais la plupart des interfaces utilisateur dérivées d'Etherscan les affichent toujours.
- transferFrom ERC-20 de valeur nulle. Toute adresse peut émettre un événement de transfert à partir de n'importe quelle autre adresse en utilisant un appel
transferFromde valeur zéro sur certains jetons non conformes. L'historique des jetons du portefeuille montre alors la victime envoyant 0 jeton à l'adresse similaire, ce qui la fait ressembler à un destinataire en qui la victime avait déjà confiance[4]. Cette variante a même vaincu le filtrage de MetaMask pendant des mois. - Faux largage de jetons. L'attaquant déploie un jeton avec le même ticker et 18 décimales que l'USDT ou l'USDC, en frappe 1 000 à la victime et l'utilise comme véhicule pour l'événement de valeur nulle. L'historique de la victime montre une transaction apparente « USDT » avec le sosie ; it copies clean.
Scale, 2023 to 2025
Résoudre les intoxications est un problème à volume élevé et à faible taux de réussite. Bitrace et PeckShield ont répertorié plus de 270 000 expéditeurs d'empoisonnement uniques sur Tron uniquement fin 2024[5]. Cyvers estime les pertes EVM cumulées à 83 millions de dollars entre 2022 et 2024, avec une longue traîne de victimes individuelles de 1 000 à 5 000 dollars et un petit nombre de très grandes victimes[6].
| Date | Chaîne | Montant | Remarques |
|---|---|---|---|
| Mai 2024 | Ethereum | 1 155 WBTC ≈ 68 millions de dollars | L'attaquant a restitué les fonds après négociation[1] |
| janvier 2024 | Arbitrum | 4,7 millions de dollars | USDC pour sosie, PeckShield alerte[7] |
| Décembre 2023 | Ethereum | 1,7 M$ | Chainalysis chronologie[8] |
| Septembre 2024 | Ethereum | 32 millions de dollars | Victime institutionnelle, valeur 0 ERC-20 variante |
| T1 2025 | Tron | 1,8 million de dollars / mois en moyenne | Bitrace trimestriel rapport[5] |
Deux modèles apparaissent dans les données. Premièrement, l’attaque est indépendante de la chaîne. EVM, Tron et Solana ont chacun leur propre variante car chacun a une interface utilisateur à adresse tronquée. Deuxièmement, les pertes au détail sont faibles par victime et élevées par attaquant, exactement le profil qui finance les opérations industrialisées.
Pourquoi l'interface utilisateur est la vulnérabilité
La primitive technique, une adresse de 40 hexadécimaux, n'est pas le problème. Le problème est de savoir ce que les interfaces utilisateur du portefeuille en ont fait. Trois raccourcis UX, chacun individuellement raisonnable, se combinent en une classe d'attaque :
- Affichage tronqué. Les utilisateurs lisent les premiers et derniers caractères, jamais le milieu. La génération d'adresses personnalisées annule la correspondance préfixe+suffixe, et non la correspondance de chaîne complète.
- Historique des transactions comme carnet d'adresses. La manière la plus courante pour les utilisateurs de détail de sélectionner un destinataire est de faire défiler l'historique des transactions et d'appuyer sur. L'historique inclut tout ce qui se trouve sur la chaîne, pas seulement ce que l'utilisateur a choisi.
- Événements de valeur nulle traités comme d'habitude. Les explorateurs et les portefeuilles affichent chaque événement de transfert émis sans distinguer « valeur transférée » de « événement déclenché ». Les attaquants exploitent cela pour faire ressembler les transactions hostiles à des transactions amicales historiques.
Le correctif est sur le client. Chaque atténuation technique ci-dessous ferme l'un de ces trois raccourcis.
Des défenses qui fonctionnent réellement
| Défense | Ce que cela corrige | Effort |
|---|---|---|
| Carnet d'adresses | Ne jamais copier depuis l'historique | Discipline de l'utilisateur, sauvegarde unique |
| Noms ENS/SNS | Destinataire lisible par l'homme | L'expéditeur et le destinataire ont tous deux besoin il[9] |
| Confirmation de l'adresse complète | Attaque par troncature | Fonction portefeuille : afficher les 42 caractères lors de l'envoi |
| Filtrage des émissions à valeur nulle | Historique empoisonné | Fonction de portefeuille : masquer les entrées de valeur nulle |
| Filtrage des jetons anti-spam | Fausse variante USDT/USDC | Fonction portefeuille : liste de jetons vérifiés |
| Avertissement de sosie | Destinataire similaire à une utilisation antérieure | Fonction portefeuille : Levenshtein / préfixe-suffixe check |
| Drapeau du premier destinataire | Nouvelle adresse de l'attaquant | Fonction portefeuille : blocage définitif ou avertissement |
| Simulation de transaction | Affiche le transfert réel + le destinataire | Blockaid, Rabby, Wallet Garde[10] |
Portefeuille par portefeuille, où les atténuations sont expédiées
| Portefeuille | Carnet d'adresses | Filtre de valeur 0 | Avertissement sosie | indicateur de 1ère fois |
|---|---|---|---|---|
| MetaMask | Oui (Contacts) | Partiel (2024 mise à jour)[11] | Pas de natif | Non |
| Rabby | Oui (Liste blanche) | Oui | Oui | Oui[12] |
| Trust Wallet | Oui | Partiel | Non | Bannière d’avertissement |
| Phantom | Oui | Oui (spam Solana filtre)[13] | Non | Avertissement |
| Ledger Live | Oui | Non | Non | Non |
| Portefeuille Coinbase | Oui | Oui | Oui | Oui |
| VEYRNOX | Oui | Oui (par défaut) | Oui (Levenshtein + préfixe-suffixe) | Avertissement brutal sur un destinataire inconnu |
Le modèle est clair. Les portefeuilles qui traitent l’écran d’envoi comme une surface de sécurité (Rabby, Coinbase Wallet, VEYRNOX) offrent de véritables défenses. Les portefeuilles qui héritent de leur vue historique directement d'un explorateur de chaîne expédient la surface d'attaque avec.
Conseils pratiques pour les utilisateurs individuels
- Ne copiez jamais une adresse de réception de votre historique de transactions. Jamais. Même une fois. Même pour la personne à qui vous avez envoyé hier. Enregistrez l'adresse dans les contacts ou dans le carnet d'adresses de votre portefeuille une fois, vérifiée de bout en bout et utilisez cette entrée.
- Pour tout ce qui dépasse un seuil de virement bancaire, vérifiez le milieu de l'adresse. Copiez-le, collez-le dans un éditeur de texte, lisez les 40 caractères hexadécimaux par rapport à l'adresse prévue. Cela prend 20 secondes et arrête l'attaque dans chaque cas documenté.
- Utilisez ENS ou SNS lorsque les deux parties le prennent en charge. Un nom lisible par l'homme qui correspond à l'adresse actuelle ne peut pas être empoisonné. Surveillez les noms ENS expirés réenregistrés par des attaquants.
- Activez la simulation de transaction. Blockaid, Wallet Guard, le chèque intégré de Rabby ou tout portefeuille qui en expédie un. Ils calculent le changement d'état réel et le montrent avant que vous signiez.
- Envoyez d'abord 1 $. Pour tout premier transfert important, envoyez un montant test et vérifiez la réception à la destination hors bande avant l'envoi principal.
- Surveillez le modèle spécifique. Si une transmission récente indique un transfert de 0 $ de votre propre adresse vers un endroit où vous n'avez jamais envoyé d'envoi, vous êtes ciblé. Arrêtez, fermez l'application, vérifiez les adresses hors bande avant votre prochaine transaction.
Ce que l'industrie doit encore corriger
Les explorateurs devraient cesser de rendre les événements de valeur nulle identiques aux transferts réels. Le passage de filtrage d'Etherscan pour 2024 a aidé, mais n'a pas clôturé la variante de l'événement ERC-20. Les portefeuilles devraient par défaut masquer les transactions entrantes de valeur nulle au lieu d’en faire un paramètre. Chaque écran d'envoi doit afficher l'adresse complète du destinataire et signaler les nouveaux destinataires au-dessus d'un seuil de valeur. Rien de tout cela n’est techniquement difficile. Chaque équipe SDK de portefeuille est au courant de l'attaque depuis au moins la variante SafeMoon en 2022[14].
Des réponses au niveau de la chaîne ont été proposées (adresses spécifiques à la chaîne EIP-3770, URI de demande de paiement et abstraction de compte avec listes autorisées côté signataire[15]), mais l'adoption est lente. La défense fiable en 2026 est côté client : utilisez un portefeuille qui expédie les atténuations et ne faites jamais confiance à une adresse que vous avez copiée sur un écran sans lire chaque caractère.
Résultat
L'empoisonnement d'adresse n'est pas un échec cryptographique. Il s’agit d’un échec UX dont l’industrie est au courant depuis quatre ans et qui a fourni des mesures d’atténuation de manière inégale. Un transfert de 0 $, un affichage tronqué et une adresse copiée sont tout ce qui sépare un portefeuille d’une perte totale. Le correctif est ennuyeux : carnet d'adresses, vérification de l'adresse complète, avertissement du premier destinataire, simulation de transaction. Chacun d’entre eux existe aujourd’hui dans les portefeuilles de production. Utilisez un portefeuille qui les expédie et arrêtez de copier les adresses de votre historique.
Adressage de la sécurité dans VEYRNOX
VEYRNOX filtre par défaut les événements entrants de valeur nulle, marque les destinataires dont le préfixe ou le suffixe correspond à une adresse précédemment utilisée et exige une confirmation supplémentaire pour les nouveaux destinataires au-dessus d'un seuil défini par l'utilisateur. Téléchargez ou lisez le modèle de sécurité.
Lecture connexe
- Phishing d'approbation dans la cryptographie : comment fonctionnent les draineurs de signature
- Comment fonctionne le phishing par phrases de départ – et comment l'arrêter
- Protection de sécurité AI pour les portefeuilles de garde personnelle
- Matériel vs logiciel vs portefeuille sans semences : analyse du marché 2026
Sources
- CertiK, "68 millions de dollars d'empoisonnement d'adresse WBTC post-mortem." certik.com
- Chainalysis, "Résoudre l'empoisonnement expliqué." chainalysis.com
- Halborn, "Coût de génération d'adresses personnalisées." halborn.com
- SlowMist, "Technique d'empoisonnement à transfert de valeur nulle." slowmist.medium.com
- Bitrace, "Rapport d'empoisonnement au Tron 2024." bitrace.io
- Cyvers, «Rétrospective sur les empoisonnements 2022-2024». cyvers.ai
- Flux d'alerte PeckShield, Twitter/X. x.com/peckshieldalert
- Chainalysis, « Chronologie de la criminalité cryptographique 2024 ». chainalysis.com
- ENSDocumentation. docs.ens.domains
- Blockaid, simulation de transactions. blockaid.io
- MetaMask, "Atténuations d'empoisonnement d'adresse." support.metamask.io
- Avertissements Rabby, liste blanche et premier destinataire. rabby.io
- Phantom, "Filtrage des jetons anti-spam Solana." phantom.com
- Elliptic, "Variante d'empoisonnement d'adresse SafeMoon." elliptic.co
- EIP-3770, adresses spécifiques à la chaîne. eips.ethereum.org
- Etherscan, "Politique d'affichage de transfert de valeur nulle." info.etherscan.com
- Coinbase Wallet, fonctionnalités de sécurité. help.coinbase.com
- Trail of Bits, "Modèle de menace d'empoisonnement d'adresse." blog.trailofbits.com
- Trust Wallet, documents de vérification d'adresse. community.trustwallet.com
- Cointelegraph, couverture du dossier WBTC de 68 millions de dollars. cointelegraph.com
- ScamSniffer, outil de suivi des empoisonnements d'adresses. x.com/realScamSniffer
- Web3 Antivirus, notation des risques du portefeuille. web3antivirus.io
Al Socrates Jobson, co-fondateur et directeur technique, Veyrnox LTD · ← Retour au blog