ALLER AU CONTENU
STANDARDS ETHEREUM7 minComptes intelligents / Ép. 1 · Niveau 1-4

Délégation EIP-7702 : quoi vérifier avant de signer ?

Une seule signature peut faire exécuter à votre compte le code d’un autre. Que doit vérifier votre wallet avant de signer ?

XIN
Port de nuit en pixel art : une grue soulève des caisses modulaires lumineuses depuis une vieille barge vers un nouveau quai de pierre bâti dans la digue. La plupart des caisses brillent en bleu-vert pendant la traversée ; une caisse éteinte reste sur la barge.

EN 30 SECONDES

Une délégation EIP-7702 est une permission signée qui fait exécuter à un compte ordinaire le code d’un contrat. Un délégué mal écrit peut livrer à un attaquant le contrôle quasi complet du compte, et des attaquants s’en servent déjà. Un wallet devrait vérifier la chaîne, le nonce et le code audité du délégué avant de signer.

À RETENIR · 3

  • Une délégation 7702 persiste jusqu’à son remplacement, et la spec 7702 prévient qu’un délégué mal écrit peut livrer à un attaquant le contrôle quasi complet du compte.
  • Un article de USENIX Security ’26 associe plus de 63 % des autorisations 7702 étudiées, sur sept chaînes avant le 15 juillet 2025, à des attaques malveillantes visant des EOA.
  • Avant de signer, un wallet devrait vérifier la chaîne et le nonce, et s’assurer que le délégué figure sur une liste auditée avec un code conforme.
Sur cette page

Ce qui peut mal tourner avec une délégation EIP-7702

EN BREF Une délégation 7702 confie votre compte au code du délégué : un délégué mal écrit peut vous coûter le compte.

LES MOTS À CONNAÎTRE

EOA
Un « externally owned account » : un compte Ethereum classique, contrôlé par une seule clé privée.
Délégué
Avec EIP-7702, le contrat vers lequel pointe un compte ordinaire, et dont il exécute le code comme si c’était le sien.
Autorisation
Le message signé qui fait pointer un EOA vers un délégué. Il indique la chaîne, l’adresse du délégué et un nonce.
Nonce
Un compteur des transactions envoyées par un compte et des autorisations traitées pour lui, pour qu’une ancienne signature ne puisse pas être rejouée.

La suite vient de la spec et d’un article de USENIX Security ’26.

EN CLAIR

EIP-7702, créé en mai 2024, est Final et en production depuis Pectra, le 7 mai 2025. Il permet à un EOA Un « externally owned account » : un compte Ethereum classique, contrôlé par une seule clé privée. Voir le glossaire de signer une Autorisation Le message signé qui fait pointer un EOA vers un délégué. Il indique la chaîne, l’adresse du délégué et un nonce. Voir le glossaire qui le fait pointer vers un Délégué Avec EIP-7702, le contrat vers lequel pointe un compte ordinaire, et dont il exécute le code comme si c’était le sien. Voir le glossaire. L’ancienne clé marche toujours. La spec est sans détour sur le risque :

« A poorly implemented delegate can allow a malicious actor to take near complete control over a signer’s EOA. »

EIP-7702, considérations de sécurité

Un délégué mal écrit peut donc livrer l’EOA à un attaquant. Une délégation persiste jusqu’à son remplacement, et n’est pas annulée si la transaction échoue. Une autorisation avec chain_id 0 est valable sur toutes les chaînes.

ATTENTION

Aucun code d’initialisation ne s’exécute pendant la délégation : un observateur peut envoyer l’appel d’initialisation avant vous, sauf si l’initialisation vérifie la signature de la clé de l’EOA sur ses données d’initialisation. Le stockage survit aussi à un changement de délégué, d’où la recommandation d’utiliser des espaces de noms ERC-7201.

Si le délégué est aussi un compte 4337, ERC-4337 ajoute une exigence impérative (un MUST) : sa fonction d’initialisation n’accepte que les appels de entryPoint.senderCreator(). La raison : l’EntryPoint ne peut pas savoir si un compte 7702 a déjà été initialisé.

Coming up next: Quelqu’un exploite-t-il déjà ce risque ?

Ce que les attaquants font déjà des délégations 7702

EN BREF Un article de USENIX Security ’26 associe plus de 63 % des autorisations 7702 étudiées à des attaques malveillantes visant des EOA.

CE QUE MONTRENT LES DONNÉES DE TERRAIN
3 664 166
Transactions d’autorisation étudiées
plus de 63 %
Part associée à des attaques malveillantes visant des EOA
924
Contrats malveillants recensés
2 362 848 USD
Pertes
près de la moitié
Délégués malveillants parmi les 30 plus autorisés de chaque chaîne, en moyenne
Huang, Liu, Yang, Wu et Wang, USENIX Security ’26. Sept chaînes compatibles EIP-7702, transactions d’autorisation antérieures au 15 juillet 2025. Les chiffres de l’article, pas les miens.

Les chiffres viennent d’un article de USENIX Security ’26. Certains attaquants ont redélégué leurs propres comptes vers des contrats bénins après une attaque, pour échapper à la détection. Juger un compte demande donc tout son historique d’autorisations, pas seulement son code actuel.

ATTENTION

Vos contrats utilisent msg.sender == tx.origin comme garantie d’un « appel direct » ? Depuis 7702, précise la spec, ce test identifie toujours un EOA, mais ne garantit plus l’appel de premier niveau. Les protections qui en dépendent tombent, comme l’anti-sandwich et l’anti-réentrance.

L’article compte 124 contrats malveillants dans sa catégorie d’attaques visant des contrats, où un compte mis à niveau garde son identité d’EOA pour passer ce genre de contrôle.

Cinq contrôles avant que le wallet signe

EN BREF Chaque contrôle s’appuie sur la spec, mais refuser chain_id 0 et tenir une liste d’autorisation relèvent de la politique du wallet, pas du protocole.

Cette liste ne doit pas reposer sur l’utilisateur : l’article note que, dans les interfaces de wallet courantes, celui-ci ne voit parfois qu’un résumé du type « upgrade account », sans l’adresse ni le code du délégué.

AVANT QUE LE WALLET SIGNE

Diagramme de flux : 6 étapesDiagramme de flux : 6 étapes. Une autorisation à signer, puis Bonne chaîne, jamais 0 ?. Bonne chaîne, jamais 0 ?, puis Bon nonce ?. Bon nonce ?, puis Sur la liste auditée ?. Sur la liste auditée ?, puis Code conforme à l’audit ?. Code conforme à l’audit ?, puis Signer.1Une autorisation à signer2Bonne chaîne, jamais 0 ?3Bon nonce ?4Sur la liste auditée ?5Code conforme à l’audit ?6Signer

Étape 1. Demande. Une dapp demande au wallet de signer une autorisation 7702.

Choisissez une étape pour la voir bouger
  1. Demande Une dapp demande au wallet de signer une autorisation 7702.
  2. Chaîne : refusée chain_id 0 est valable sur toutes les chaînes : le wallet refuse l’autorisation, comme pour toute autre chaîne que celle-ci.
  3. Nonce Si l’EOA envoie aussi la transaction, prenez son nonce plus un : celui de l’émetteur augmente d’abord. Une adresse de délégué à zéro est une remise à zéro : rien d’autre à vérifier.
  4. Liste Le délégué doit figurer sur votre liste de contrats audités.
  5. Code, puis signature Le code déployé doit correspondre à la version auditée. Alors seulement, le wallet signe.
Contrôles illustratifs avant signature d’une autorisation EIP-7702, fondés sur les règles de la spec. L’étape 2 montre un refus. C’est à vous de tenir à jour la liste et ses hash de code.

OBJET OBTENU

Vérifier avant de signer

Un délégué mal écrit peut prendre le contrôle quasi complet : ne signez que du code audité, sur cette chaîne.

FAQ

Signez une nouvelle autorisation vers l’adresse zéro, qu’EIP-7702 traite comme une remise à zéro : le code revient au hash de code vide. Le stockage de l’ancien délégué reste. Choisissez un délégué sans risque de collision, ou videz d’abord ce stockage avec un contrat prévu pour cela.

Lisez son code. Un EOA délégué porte un marqueur, 0xef0100 suivi de l’adresse du délégué. Lisez aussi ses autorisations passées, car le code actuel seul peut être trompeur.

Sources : EIP-7702, ERC-4337, Huang et al., USENIX Security ’26.

NIVEAU TERMINÉ

Ce que vous savez maintenant

  • Pourquoi une délégation 7702 revient à confier le compte, et quelles règles de la spec rendent cela risqué.
  • Ce que montrent les données de terrain et les cinq contrôles qu’un wallet devrait faire avant de signer, dont deux relèvent de sa politique.

Vérifiez par vous-même

Touchez ou cliquez une question pour voir la réponse.

Une dapp n’admet un appelant que s’il est le compte qui a signé la transaction, pour écarter les comptes programmables. Est-ce encore efficace ?

Non. Ce test identifie toujours un EOA, mais depuis 7702 cet EOA peut exécuter le code d’un délégué : il ne prouve plus que l’appel est direct.

Vous avez fini tous les niveaux publiés de cette série. Retour à la carte de la série

Adam Boudjemaa
Adam Boudjemaa

Ingénieur web3 x IA, ancien CTO d’Integra. Auteur nommé (1 sur 5) d’ERC-3643, premier auteur d’ERC-6960, co-auteur d’ERC-7410 et co-auteur d’ERC-8203, encore à l’état de brouillon.

Un projet à livrer ou un poste à pourvoir ?

Parlons de votre besoin

Mon travail entre web3 et IAMes outils open source

Suivre les notes techniques

Recevez les nouveaux articles sur l’IA en production et les smart contracts par email.