Révoquer une autorisation de token signifie indiquer à un smart contract Ethereum qu'il ne peut plus dépenser vos tokens, même si vous lui avez accordé cette permission il y a plusieurs mois. La plupart des utilisateurs DeFi ont des autorisations « infinies » restantes sur d'anciens contrats ou des contrats compromis, et les kits de vidage de portefeuille les ciblent spécifiquement. Vérifier, révoquer les autorisations à risque et passer à des autorisations finies est donc l'une des mesures de sécurité les plus économiques en crypto.
Points clés
- Une autorisation ERC-20 est un message signé qui permet à un smart contract de déplacer, en votre nom, une quantité donnée d'un token spécifique depuis votre wallet, et « infinie » signifie sans plafond tant que vous ne l'annulez pas.
- Les kits de vidage de portefeuille trient les wallets en fonction des anciennes autorisations qui détiennent encore une allowance. Ainsi, une autorisation accordée à un protocole autrefois fiable peut devenir un vecteur d'exploitation actif si ce protocole est ensuite piraté ou redéployé par une équipe malveillante.
- Revoke.cash et le panneau d'autorisations de tokens d'Etherscan sont les deux outils les plus fiables pour auditer les allowances sur Ethereum et la plupart des chaînes EVM.
- Passer d'autorisations infinies à des autorisations finies (le paramètre par défaut dans les wallets modernes comme Frame, Rabby et les nouveaux flux de MetaMask) élimine la majeure partie du risque résiduel sans perturber l'usage normal de la DeFi.
Ce qu'est réellement une autorisation de token
Lorsque vous échangez un token sur Uniswap, prêtez des ETH sur Aave ou bridgez des USDC entre chaînes, vous ne remettez pas réellement vos tokens au protocole. Vous signez un petit message on-chain qui dit : « le smart contract X est autorisé à retirer jusqu'à N token Y de mon wallet. » Cette permission signée s'appelle une autorisation ERC-20, et elle vit on-chain pour toujours, sauf si vous — ou le contrat lui-même — l'annulez.
La raison pour laquelle les autorisations existent est technique. Les tokens ERC-20 sont des actifs au porteur rudimentaires : ils ne connaissent pas la notion de « Alice prête 100 USDC à Bob ». Ils ne comprennent que les soldes et les allowances. Pour qu'un contrat tiers, comme un routeur de DEX ou un pool de prêt, puisse déplacer vos tokens à votre place, ce contrat doit recevoir une allowance, définie à l'aide de deux fonctions : approve et increaseAllowance.
La plupart des protocoles demandent la valeur maximale possible, le plus grand entier non signé sur 256 bits (2^256 moins 1), car cela leur évite de vous demander de signer une nouvelle autorisation à chaque interaction. Du point de vue de l'UX, les autorisations infinies sont pratiques. Du point de vue de la sécurité, elles créent une permission que vous avez peut-être oubliée.
Pourquoi les autorisations infinies sont dangereuses
Une autorisation infinie n'est pas un « risque infini » en soi. Elle n'est dangereuse qu'à hauteur du contrat qui détient l'allowance. Si le protocole que vous avez autorisé est bien audité, éprouvé dans le temps et toujours opéré par la même équipe, l'autorisation est à peu près aussi sûre que le protocole lui-même. Le danger apparaît dans trois situations précises, et elles sont suffisamment fréquentes pour être prises au sérieux.
Premièrement, les protocoles se font pirater. Un smart contract peut être exploité via un bug logique, une manipulation d'oracle de prix ou une attaque de gouvernance. Si l'attaquant peut appeler transferFrom sur une liste d'utilisateurs autorisés, une autorisation infinie transforme un bug de protocole en drain direct de vos tokens. Ce n'est pas hypothétique : plusieurs incidents DeFi bien connus au cours des dernières années ont inclus des chemins de drainage de tokens qui profitaient d'allowances actives.
Deuxièmement, des projets sont abandonnés, puis redéployés par quelqu'un d'autre sous le même nom ou à la même adresse. Une fois qu'une équipe abandonne un contrat, le bytecode présent à cette adresse n'est plus que du code. Si un nouveau propriétaire ou mécanisme de mise à jour permet à un attaquant de devenir admin, votre ancienne autorisation pointe désormais vers une entité hostile.
Troisièmement, et c'est le point que la plupart des utilisateurs sous-estiment, les kits de vidage de portefeuille filtrent activement les wallets comportant des autorisations restantes. Lorsque vous signez une signature malveillante sur un site de phishing, le kit ne se contente pas de voler le token affiché sur la page : il parcourt chaque allowance active que votre wallet a jamais accordée et tire sur chacune. Les dégâts d'un simple clic de phishing sont proportionnels à la surface d'attaque accumulée. Moins vous avez d'autorisations ouvertes, plus le rayon d'impact est limité.
Quelles autorisations peuvent réellement rester actives
Toutes les autorisations ne sont pas des bombes à retardement, et chercher à tout révoquer est à la fois peu pratique et inutile. L'objectif est de réduire votre surface d'attaque, pas d'anéantir la capacité de fonctionnement de votre portefeuille. Une règle empirique raisonnable comporte trois niveaux.
Conserver les autorisations accordées à des contrats que vous utilisez activement, gérés par des équipes réputées, qui ont été audités et qui n'ont pas été exploités récemment. Si vous utilisez toujours Aave ou Uniswap chaque semaine, l'autorisation que ces front-ends gèrent fait partie du fonctionnement du système. La révoquer signifie simplement qu'il faudra re-signer la prochaine fois que vous effectuerez une transaction, ce qui coûte du gaz et un peu d'attention.
Réduire les autorisations infinies sur les contrats que vous utilisez rarement. Les portefeuilles modernes comme Rabby, Frame et la version mise à jour de MetaMask appliquent par défaut une autorisation finie basée sur le montant de la transaction. Si un contrat que vous avez touché une fois dispose encore d'une autorisation infinie datant d'il y a deux ans, ramenez-la à zéro ou à un petit montant fini.
Révoquer les autorisations liées à tout ce que vous ne reconnaissez pas, tout ce qui porte un nom dont vous n'avez jamais entendu parler, et surtout tout contrat non vérifié sur Etherscan. Les contrats non vérifiés disposant d'autorisations actives constituent de loin le schéma le plus couramment exploité par les drainer kits.
Comment trouver toutes les autorisations accordées par votre portefeuille
Deux outils méritent votre confiance pour cette tâche, et ils couvrent presque toutes les chaînes EVM en usage actif. Le premier est Revoke.cash, une dApp open source conçue spécifiquement pour la gestion des autorisations. Vous connectez votre portefeuille, il analyse la chaîne et répertorie tous les contrats qui détiennent actuellement une autorisation non nulle sur vos jetons, regroupés par jeton. Chaque ligne affiche le spender, l'autorisation actuelle et un lien direct vers la transaction de révocation on-chain.
Le second est le vérificateur d'autorisations de jetons d'Etherscan, disponible sur Etherscan pour Ethereum et sur les explorateurs de blocs équivalents pour des chaînes comme BNB Chain, Polygon, Arbitrum, Optimism et Base. Vous collez l'adresse de votre portefeuille, vous cliquez sur l'onglet des autorisations et vous obtenez les mêmes données avec une interface un peu plus technique. Etherscan est utile comme recoupement, car Revoke.cash oublie parfois certaines autorisations sur des jetons récents ou peu courants.
Quel que soit l'outil utilisé, le processus est le même. Lisez chaque spender. Si vous ne le reconnaissez pas, marquez-le pour révocation. Si vous le reconnaissez, décidez si vous en avez encore besoin et si vous souhaitez conserver une autorisation infinie. Notez que révoquer est une transaction en écriture : cela coûte du gaz, donc procédez par lots à un moment où les frais sont bas plutôt qu'un par un aux heures de pointe.
Comment révoquer les autorisations de jetons étape par étape
Voici le processus pratique que suivent réellement les utilisateurs DeFi expérimentés. Il suppose que vous utilisez un portefeuille en self-custody comme Rabby, MetaMask, Frame ou Ledger Live et que vous disposez d'une petite quantité d'ETH sur la chaîne que vous nettoyez, suffisante pour couvrir le gaz.
Ouvrez Revoke.cash dans votre navigateur. Connectez le portefeuille que vous souhaitez auditer. Le site affichera Ethereum mainnet par défaut ; si vos autorisations se trouvent sur une autre chaîne EVM comme Arbitrum, Polygon ou BNB Chain, changez de réseau via le sélecteur en haut de la page. Le site récupérera alors en une seule passe tous les jetons que vous détenez et toutes les autorisations actives.
Parcourez la liste. Pour chaque spender que vous ne reconnaissez pas, ou pour tout spender auquel vous ne souhaitez plus accorder d'autorisation permanente, cliquez sur le bouton de révocation à côté. Votre portefeuille affichera une demande de transaction qui ramène l'autorisation à zéro. Confirmez-la et payez les frais de gaz.
Pour les autorisations que vous souhaitez conserver mais réduire, Revoke.cash vous permet de définir une valeur personnalisée plutôt que zéro. Une pratique courante consiste à fixer l'autorisation au montant exact nécessaire pour la prochaine transaction, ce que les portefeuilles modernes peuvent remplir automatiquement pour vous. Une fois vos transactions de révocation confirmées, actualisez la page et vérifiez que l'autorisation affiche désormais zéro ou la nouvelle valeur finie.
Répétez l'opération pour toute autre chaîne sur laquelle vous avez eu une activité DeFi significative. De nombreux utilisateurs sont surpris de découvrir des autorisations sur des chaînes qu'ils ont utilisées une seule fois pour un airdrop et qu'ils ont oubliées. Chaque chaîne nécessite sa propre passe, car les autorisations ne sont pas inter-chaînes par défaut.
Comment définir des autorisations finies à l'avenir
La meilleure habitude que vous puissiez prendre après avoir nettoyé votre portefeuille est de cesser de signer des autorisations infinies dès le départ. La protection est intégrée à la plupart des interfaces de portefeuilles modernes, mais encore faut-il y prêter attention.
Lorsqu'une dApp demande une autorisation, examinez la valeur. Si la valeur par défaut est le nombre maximum sur 256 bits, votre portefeuille propose l'ancien chemin infini. Si la valeur par défaut correspond au montant exact du swap ou du dépôt, votre portefeuille propose une autorisation finie. Rabby et Frame appliquent par défaut une autorisation finie pour les contrats connus. MetaMask a évolué vers des valeurs par défaut finies dans ses versions récentes, même si les anciens flux exposent encore l'option héritée.
Si un contrat exige une autorisation infinie et n'offre aucune option finie, considérez cela comme un signal d'alerte. Certains contrats ont réellement besoin d'une autorisation permanente, comme les agrégateurs DEX qui routent à travers plusieurs pools, mais la plupart n'en ont pas besoin. En cas de doute, autorisez le montant exact de la transaction que vous vous apprêtez à effectuer, puis révoquez ou réduisez l'autorisation dès que l'action est terminée.
Une autre bonne pratique consiste à utiliser un portefeuille « chaud » séparé pour les activités à haut risque comme le farming d'airdrops, les interactions en testnet et la signature de dApps inconnues, et un portefeuille « froid » séparé pour les détentions à long terme et les positions DeFi importantes. Le portefeuille chaud encaisse les clics de phishing ; le portefeuille froid n'interagit qu'avec des protocoles audités et bien connus. Même si un drainer kit vide votre portefeuille chaud, votre capital principal reste sur un portefeuille avec une surface d'autorisation bien plus réduite.
À quoi cela ressemble quand quelque chose tourne mal
Il vaut la peine d'être concret sur ce à quoi ressemble un drain en pratique, car la peur que « mes approbations soient exploitées » est parfois traitée comme quelque chose d'abstrait. Imaginez que vous avez signé il y a dix-huit mois une approbation infinie pour des USDT à destination d'un routeur d'un petit DEX. Le DEX a fermé, l'équipe est passée à autre chose, et l'adresse du contrat a ensuite été reprise par un déployeur différent.
Six mois après cela, vous consultez un site à l'apparence familière, cliquez sur ce que vous pensez être une approbation de routine, et vous signez en réalité un permit malveillant ou une autorisation hors chaîne. Le kit de drain constate que votre portefeuille dispose toujours d'une allowance illimitée envers ce routeur. En une seule transaction, il appelle transferFrom et vide l'intégralité de votre solde d'USDT. La transaction est valide, l'allowance était réelle, et il n'y a aucun retour en arrière possible.
Imaginez maintenant le même portefeuille, mais cette fois vous avez révoqué l'allowance d'USDT envers ce routeur six mois plus tôt et l'avez remplacée par zéro. Le kit de drain analyse votre portefeuille, ne trouve rien à prélever pour ce token, et passe son chemin. Le coût de la révocation initiale était de quelques centimes de gas ; le coût de l'absence de révocation était l'intégralité de votre solde d'USDT. Le calcul n'a rien de subtil.
Comment suivre le risque d'approbation de manière intelligente
L'hygiène des approbations est l'un des rares domaines de la sécurité crypto où l'utilisateur dispose d'un contrôle direct, mais il est facile d'oublier une fois que votre portefeuille « fonctionne ». Zippfeed suit l'actualité liée aux approbations de tokens, y compris les exploits de protocoles, les campagnes de kits de drain et les mises à jour de sécurité des portefeuilles, avec une notation de sentiment (bullish, neutre ou bearish) et un indice d'importance, afin que vous puissiez repérer les nouveaux schémas d'attaque avant qu'ils n'atteignent votre boîte de réception plutôt qu'après qu'ils aient atteint votre portefeuille.