Chargement des prix…

Faux mints NFT et signatures usurpées : comment ils vous vident

Les drainer kits proposent des pages de mint en un clic qui demandent une approbation de token ou une signature hors chaîne. Découvrez les quatre signatures à ne jamais signer.

Faux mints NFT et signatures usurpées : comment ils vous vident

Qu’est-ce qu’un faux mint de NFT, et pourquoi ressemble-t-il à un mint normal ?

Un faux mint de NFT est une page web, un lien Discord ou une publication Twitter qui imite la page de mint d’une vraie collection afin de vous faire signer quelque chose que vous ne comprenez pas. Le but n’est pas de vous donner un NFT. Le but est d’obtenir un message signé ou une approbation on-chain qui permet à l’attaquant de déplacer plus tard vos tokens ou vos NFTs existants. La page se charge généralement, votre wallet s’ouvre, et vous cliquez sur confirmer sans lire parce que le libellé paraît plausible, que le compte à rebours défile et que les visuels sont convaincants.

Deux éléments distinguent cette attaque des formes de phishing plus anciennes. Premièrement, l’attaquant n’a souvent même pas besoin de déployer un contrat malveillant. Il peut utiliser les interfaces standard que les vraies collections utilisent déjà, comme setApprovalForAll d’ERC-721, et simplement vous orienter vers une adresse de contrat qu’il contrôle. Deuxièmement, l’attaque peut être répartie sur deux transactions. La première transaction est petite et inoffensive, parfois même un free mint qui ne mint rien. La seconde est exécutée plus tard, parfois des semaines après, par un bot qui appelle transferFrom sur chaque adresse approuvée. Le temps que vous vous en rendiez compte, votre wallet est vide.

Si c’est important pour les collectionneurs, c’est parce que le mint est le seul moment dans la crypto où l’on attend de vous que vous signiez quelque chose que vous n’avez pas écrit. Se connecter à un CEX (centralized exchange) ou acheter sur Uniswap ne vous oblige pas à lire une charge utile de données typées. Le mint, si, ce qui signifie que la porte d’entrée vers la collection de NFT est aussi l’endroit le plus facile pour vider un wallet. Traitez l’invite de signature comme un banquier traiterait une demande de virement : lisez la destination, lisez le montant, et si le texte ne correspond pas à l’histoire affichée à l’écran, partez.

Les vrais risques : comment les kits de drainer vident réellement les wallets

La plupart des drainers NFT modernes sont vendus comme un service. Les opérateurs paient un abonnement, collent une adresse de contrat ou une adresse de wallet vers laquelle drainer les fonds, et reçoivent une page de phishing qui ressemble à un mint, à une réclamation d’airdrop ou à un free mint. Ces kits incluent des fonctions anti-détection qui font tourner les domaines, dissimulent l’approbation dans une sous-transaction, et simulent même un mint réussi pour que la victime voie une fausse confirmation. Au second semestre 2024 et tout au long de 2025, des chercheurs on-chain d’entreprises comme Scam Sniffer et Blockaid ont suivi des volumes de drainer se chiffrant en centaines de millions de dollars par an, avec une part significative attribuée spécifiquement aux pages de mint de NFT.

Quatre modèles de signature représentent l’immense majorité de ces drains. Les connaître par leur nom est la plus grande amélioration que vous puissiez apporter à votre propre sécurité. Aucun d’eux ne vous demande d’envoyer des ETH à l’attaquant. Ils exigent seulement que vous signiez quelque chose, ce qui explique pourquoi l’invite du wallet semble inoffensive.

Au-delà de la signature elle-même, les drainers s’appuient sur quelques astuces sociales. Ils usurpent le Discord officiel d’un projet, mintent sous un nom qui diffère de la vraie collection d’un seul caractère, et planifient leurs drops en même temps que de vrais mints afin que le bruit couvre le signal. Ils publient aussi de faux commentaires sous le projet sur X/Twitter et paient des liens sponsorisés sur Google. Si vous êtes arrivé sur la page de mint via une annonce de recherche, un DM ou un lien Discord envoyé par quelqu’un que vous ne connaissez pas, ralentissez avant de signer quoi que ce soit.

La vérité, c’est qu’aucune routine d’inspection des signatures ne vous protégera 100 % du temps. Les auteurs de drainers mettent à jour leurs charges utiles pour imiter des invites légitimes, et certains utilisent de vrais contrats de mint déployés par le projet lui-même. Le but de cet article n’est pas de vous rendre invincible. Le but est de rendre les attaques bon marché évidentes, afin que le seul risque restant soit celui des attaques sophistiquées, que la plupart des attaquants éviteront parce qu’il existe des victimes plus faciles.

Les quatre signatures à ne jamais signer aveuglément

  • setApprovalForAll: « Autoriser ce contrat à déplacer tous vos NFTs, ou toute une collection, à tout moment, pour toujours, jusqu’à révocation. » Un mint légitime n’en a presque jamais besoin. Si une page de mint le demande, considérez le site comme hostile.
  • permit (ERC-2612): « Autoriser un spender à prélever un montant fixe de votre token à l’avenir, sans expiration, simplement en appelant permit. » Les drainers l’intègrent dans un faux bouton de mint. Le token approuvé est généralement un stablecoin ou un blue-chip comme USDC ou USDT, pas un NFT.
  • increaseAllowance / approve: « Autoriser un spender à déplacer un montant précis d’un token. » Comme permit, mais le montant et le token sont indiqués explicitement. Lisez les deux. Si le token est quelque chose que vous détenez, ne signez pas.
  • eth_sign / personal_sign avec une URL ou un blob hexadécimal: « Signez ce message. » Les vrais sites utilisent personal_sign uniquement pour les connexions, et le message ressemble à de l’anglais. Si l’invite est une longue chaîne hexadécimale ou contient « opensea », « blur » ou une URL de marketplace dans une charge utile personal_sign, il s’agit presque certainement d’un ordre off-chain ou d’un exploit de listing Seaport.

safeMint vs setApprovalForAll : ce que fait réellement un mint légitime

La comparaison la plus utile pour un collectionneur est celle entre une vraie signature de mint et une signature de drainer. Elles se ressemblent superficiellement dans la fenêtre du wallet, mais elles font des choses complètement différentes on-chain, et la différence est visible si vous savez où regarder.

Un mint ERC-721 légitime appelle généralement une fonction nommée safeMint (ou mint, publicMint, teamMint, selon le contrat). Lorsque votre wallet affiche une fenêtre, on vous demande d’envoyer une transaction, ce qui coûte du gas, et la transaction a une adresse « To » claire qui correspond au contrat de mint officiel annoncé par le projet. Le nom de la fonction est lisible dans votre wallet. Le champ value correspond au prix du mint, libellé en ETH ou dans un stablecoin. Aucune approbation n’est demandée séparément, car le contrat n’a pas besoin de toucher à vos actifs existants : il va vous mint un nouveau token. C’est tout l’objectif.

Un mint de drainer fait l’une de deux choses. La version bon marché évite entièrement le mint on-chain et vous demande de signer un message EIP-712 off-chain qui contient un ordre pour une marketplace comme Blur, OpenSea Pro ou LooksRare. La version dangereuse vous demande d’appeler setApprovalForAll sur une adresse de contrat contrôlée par l’attaquant, qui obtient alors une autorisation illimitée d’utiliser transferFrom pour n’importe quel NFT dans votre wallet, à tout moment dans le futur, tant que vous ne révoquez pas.

Lire l’invite du wallet, ligne par ligne

  • To : Doit être l’adresse du contrat officiel. Vérifiez-la sur le site propre au projet, pas via un lien que quelqu’un vous a envoyé. Une seule lettre ou un seul chiffre différent suffit à vous rediriger vers un contrat d’attaquant.
  • Function : Doit être safeMint, mint ou une fonction au nom similaire. Ne doit pas être setApprovalForAll, approve, ni une méthode nommée quelque chose comme « claimRewards » ou « airdrop ».
  • Value : Doit être le prix du mint en ETH ou dans un stablecoin. Ne doit pas être zéro pour un « free mint » qui demande une approbation à l’invite suivante. Les mints à valeur nulle qui demandent des approbations sont un schéma de drainer connu.
  • Spender / Cible d’approbation : Si l’invite mentionne une approbation, le spender doit être un contrat que vous reconnaissez, et vous devriez tout de même la révoquer sur Revoke.cash une fois le mint réglé.

Comment lire les données typées EIP-712 avant de signer

EIP-712 est le standard qui rend les demandes de signature lisibles. Au lieu de vous demander de signer un bloc hexadécimal, le wallet vous montre une charge utile structurée avec des champs nommés comme « from », « to », « value », « deadline » et « nonce ». C’est une amélioration de l’ergonomie, mais seulement si vous la lisez vraiment. La plupart des collectionneurs ne le font pas, ce qui explique pourquoi les drainers adorent EIP-712 : les charges utiles ont l’air officielles.

Pour un mint NFT légitime, les données typées n’ont généralement pas de spender, pas de champs permit et pas de contrat de token. Elles peuvent indiquer « Minting 1 NFT for 0.08 ETH » avec l’adresse de votre wallet comme destinataire. Pour une signature de listing de type Blur ou OpenSea, la charge utile contient une entrée de carnet d’ordres avec des prix, des dates d’expiration et un compteur. Pour un drainer, la charge utile contient généralement un objet permit avec le solde de votre stablecoin comme valeur, ou un ordre Seaport qui liste l’un de vos NFT de valeur à zéro ETH.

Checklist pour les fenêtres EIP-712

  • Domain : Le « name » et la « version » doivent correspondre au projet. Un ordre Blur légitime indique « Blur », un ordre OpenSea légitime indique « Seaport », et un ordre LooksRare légitime indique « LooksRare Exchange ». Si le domaine ressemble à « MintNFT-Free » ou si le champ version est vide, arrêtez-vous.
  • Primary type : Doit correspondre à ce que le site affirme faire. Un site de mint qui affiche un type « Permit » ou « Order » est un signal d’alerte.
  • Token address : Si un token est mentionné, collez l’adresse du contrat dans un explorateur de blocs. Assurez-vous qu’il s’agit du vrai USDC, USDT, WETH, ou de ce que le site prétend, et non d’un token imitateur portant le même nom.
  • Amount : Si un permit ou une approbation mentionne un montant, il doit correspondre à une taille de transaction normale. Tout montant proche de votre solde total, ou tout montant qui utilise la valeur sentinelle spéciale « unlimited » (souvent 2^256 - 1), doit être refusé.
  • Nonce et deadline : Les messages légitimes ont une deadline dans le futur et un nonce qui correspond à votre wallet. Les anciens nonces et les deadlines manquantes sont des signes de replay ou de charge utile fabriquée à la main.

Le « free mint » qui demande une approbation : exemple détaillé

C’est le schéma de drain le plus courant en 2024 et 2025, et il vaut la peine de le parcourir, car c’est celui auquel les collectionneurs se laissent le plus souvent prendre. Un compte Twitter usurpe l’identité d’un vrai projet et annonce que les détenteurs d’une collection partenaire peuvent mint un NFT gratuit. Le lien mène à un clone de la vraie page de mint. Le bouton de mint déclenche deux invites de wallet à la suite.

La première invite est un personal_sign ou eth_sign pour un message de « vérification ». L’attaquant espère que vous signerez sans lire, car cela ressemble à une connexion. La deuxième invite est setApprovalForAll sur le contrat de l’attaquant, souvent limité à une collection blue-chip comme Pudgy Penguins ou Bored Apes. Après votre confirmation, la page vous mint soit un NFT sans valeur, soit échoue silencieusement. Dans les deux cas, l’attaquant a désormais l’approbation nécessaire pour déplacer vos vrais NFTs.

La défense est mécanique. Un vrai free mint coûte soit du gas et appelle safeMint, soit il s’agit d’un merkle-claim qui appelle une fonction nommée claim, claimAirdrop ou similaire, et écrit un token à votre adresse. Il n’a pas besoin d’approuver quoi que ce soit. Dès qu’un « free mint » demande une quelconque approbation ou une signature qui n’est pas une simple connexion, partez du pire principe. Fermez l’onglet, retrouvez le projet via votre propre favori, et confirmez avec leur équipe sur Discord avant de faire quoi que ce soit d’autre.

Déguisements courants de la même attaque

  • Les invites « Vérifiez que vous êtes humain » qui demandent un personal_sign sur une longue chaîne hexadécimale.
  • Les boutons « Claim your gas refund » qui affichent un permit sur USDC.
  • Les boutons « List your NFT for free » sur de fausses pages de marketplace qui produisent une signature d’ordre Seaport ou Blur au lieu d’un listing on-chain.
  • Les « Bridge rewards » et « snapshot registrations » qui demandent setApprovalForAll sur un contrat multisend.

Comment configurer un wallet qui survit à une mauvaise signature

Même avec une hygiène de signature parfaite, vous finirez par signer quelque chose que vous n’aviez pas l’intention de signer. La question est de savoir combien vous perdez quand cela arrive. La réponse standard des collectionneurs professionnels consiste à garder deux wallets : un hot wallet pour mint et trader, et un cold wallet pour le stockage. Le hot wallet ne contient rien que vous ne puissiez pas vous permettre de perdre. Le cold wallet contient les blue-chips et ne se connecte jamais aux pages de mint.

Cela semble paranoïaque jusqu’à ce qu’on en calcule le prix. Un burner wallet ne coûte rien et se configure en dix minutes. Un Bored Ape drainé coûte six chiffres et ne peut pas être remplacé. L’asymétrie est si extrême que « utilisez toujours un burner » est ce qui se rapproche le plus de l’argent gratuit dans la collection de NFT.

Checklist opérationnelle avant chaque mint

  • Utilisez un burner wallet approvisionné uniquement avec l’ETH nécessaire pour le gas et le prix du mint.
  • Simulez la transaction avec Pocket Universe, Blowfish ou Wallet Guard avant de confirmer dans votre vrai wallet.
  • Vérifiez les approbations sur Revoke.cash immédiatement après le mint. Si le mint a demandé une approbation, révoquez-la avant de faire quoi que ce soit d’autre.
  • Révoquez à nouveau le lendemain. Certains drainers utilisent une exécution différée pour contourner les habitudes de révocation immédiate.
  • Ne mintez jamais depuis un wallet qui détient des actifs dérivés d’une seed phrase, comme le compte hot-side d’un hardware wallet qui détient aussi des positions de staking en BTC ou ETH.

Que faire si vous avez déjà signé quelque chose de suspect

Si vous avez signé un setApprovalForAll ou un permit, vous n’avez encore rien perdu, mais l’attaquant a désormais les clés pour s’en emparer. Le temps compte. Le moyen le plus rapide consiste à ouvrir Revoke.cash, connecter le wallet concerné et révoquer chaque approbation accordée à l’adresse du contrat qui vient d’être signée. Si vous ne connaissez pas l’adresse du contrat, révoquez tout ce que vous ne reconnaissez pas.

Si vous avez signé par erreur un ordre Seaport ou Blur, l’attaquant peut déjà disposer d’un ordre ouvert pour acheter votre NFT à zéro ou à un wei. Allez sur la marketplace, trouvez vos listings et annulez-les. Sur Blur, cela se trouve dans 'My bids' et 'My listings'. Sur OpenSea, c’est dans 'Listings'. Annuler un listing hors chaîne nécessite une deuxième signature, ce qui fait partie du coût d’utilisation des marketplaces, mais c’est bien moins cher que de laisser l’ordre s’exécuter.

Si vos NFTs ont déjà disparu, ne négociez pas avec l’escroc, ne payez pas un 'recovery service' qui vous contacte par message privé sur Twitter et ne signez aucune autre transaction depuis ce wallet. Déplacez les actifs restants vers un nouveau wallet, déposez un signalement auprès des modérateurs de la communauté du projet et envisagez de signaler le contrat à Etherscan ou via le mécanisme de signalement du block explorer pertinent afin que le prochain collectionneur soit averti.

Comment suivre l’actualité des mints NFT sans devenir victime d’un drainer

Les annonces de mints NFT évoluent vite, et l’écart entre un vrai drop et un faux clone se mesure en minutes. Suivre manuellement chaque canal officiel est une bataille perdue d’avance, et c’est exactement ce sur quoi comptent les opérateurs de drainers. Zippfeed met en avant les gros titres liés aux mints NFT avec une notation du sentiment indiquée bullish, neutral ou bearish et une note d’importance, afin que vous puissiez repérer les vrais drops, ignorer les imitateurs et ne cliquer que vers les pages de mint que vous avez déjà vérifiées. Associez ce flux à l’habitude du burner wallet décrite ci-dessus, et vous transformez le moment le plus dangereux de la collection en routine.

Questions fréquemment posées

Est-il sûr de minter des NFTs depuis de nouvelles collections ?
Minter depuis une collection toute nouvelle et non auditée fait partie des actions les plus risquées en crypto, car le contrat est récent et l’équipe est souvent anonyme. Ce n’est pas automatiquement dangereux, mais cela exige plus de prudence que de minter depuis une collection établie. Utilisez un burner wallet, simulez la transaction et considérez toute demande d’approbation comme un signal d’alerte. Rien dans cet article ne constitue un conseil financier. Vos décisions de mint vous appartiennent entièrement.
Comment une fausse signature de mint peut-elle réellement vider mon wallet ?
Un drainer mint ne vole pas vos actifs au moment où vous signez. Il obtient une autorisation, soit un setApprovalForAll on-chain, soit une signature EIP-712 hors chaîne comme un permit ou un ordre de marketplace, qui permet à l’attaquant de déplacer des actifs plus tard. L’attaquant lance ensuite un script qui appelle transferFrom, permit ou l’exécution d’ordre contre chaque wallet ayant donné son accord, souvent des heures ou des jours plus tard. La signature est la clé, le drain est le crochet.
Dois-je utiliser le même wallet pour minter et stocker mes actifs ?
Non. Les collectionneurs expérimentés gardent un cold storage wallet pour les blue-chips et un hot wallet séparé, alimenté uniquement avec assez de ETH pour couvrir le prix du mint et le gas. Si vous signez un jour une mauvaise signature depuis le hot wallet, vous ne pouvez perdre au maximum que ce qui s’y trouvait, et vous pouvez le remplacer en quelques minutes. Mélanger stockage et mint transforme une erreur récupérable en perte totale.
Quelle est la différence entre setApprovalForAll et permit ?
setApprovalForAll est une fonction ERC-721 ou ERC-1155 qui permet à un contrat de déplacer tous vos NFTs d’une collection donnée, sans expiration, jusqu’à révocation. permit est une fonction ERC-2612 qui permet à un spender de retirer plus tard un montant précis d’un token ERC-20 comme USDC. Les deux sont puissants, les deux sont souvent exploités par les drainer kits, et un mint légitime n’a presque jamais besoin de l’un ou de l’autre.