La logique sous-jacente de cette attaque contre Binance

La faille exploitée lors de cette attaque vient de l’EIP-7702, introduit par la mise à niveau Pectra d’Ethereum.

En bref : l’EIP-7702 permet à un portefeuille EOA classique de déléguer temporairement l’exécution d’un morceau de code de contrat. Une fois l’autorisation signée, l’adresse de ce portefeuille acquiert les capacités d’un contrat.
L’attaquant avait obtenu à l’avance 50 autorisations EIP-7702 signées par le portefeuille chaud de Binance, chacune correspondant à un nonce différent.
Impossible pour lui de connaître à l’avance la valeur exacte du nonce actuel du portefeuille ; il a donc diffusé les 50 autorisations en une seule fois. Il suffisait que le nonce de l’une d’entre elles corresponde à l’état actuel pour que la délégation prenne effet.
L’autorisation qui a correspondu a directement lié le contrat de siphonnage à l’adresse du portefeuille chaud de Binance. Le pirate a alors vidé instantanément tous les actifs du portefeuille.

Voici le point essentiel : le transfert de stablecoin TRX sur la blockchain Tron n’a pas été effectué par le pirate, mais par Binance elle-même. Il s’agissait d’un transfert de fonds interne à la plateforme d’échange ; ne l’incluez pas dans le bilan des sommes volées.

Beaucoup de gens ont vu les 5,6 milliards sortir, sans comprendre la gravité de cette vulnérabilité.
Ce ne sont pas les clés privées qui ont été directement divulguées : c’est le mécanisme d’autorisation par signature qui a été exploité. Dès que le nonce correspond, le contrat prend le contrôle du compte et le vide d’un seul coup.
À l’origine, l’EIP-7702 devait ouvrir la voie à l’abstraction de compte ; il est désormais devenu une arme permettant de dépouiller les portefeuilles chauds de géants.