Aller au contenu
Fondé MMXXVIVol. VI · № 273RSS
Blockchain Breaches

Archive des incidents de sécurité dans les cryptomonnaies — piratages, exploits, défaillances de ponts et rug pulls, documentés avec des preuves on-chain.

Dossier № 139Attaque de gouvernance

Prise de contrôle de gouvernance Tornado Cash

La DAO Tornado Cash détournée : l'attaquant a selfdestruct une proposition adoptée et redéployé du code malveillant à la même adresse, saisissant 1,2M votes.

Date
Chaîne(s)
Statut
Récupéré

Le 20 mai 2023, la DAO Tornado Cash a été prise par un attaquant qui a exploité une propriété subtile du redéploiement de contrat. La proposition malveillante prétendait être identique bit à bit à une précédente proposition approuvée par la communauté — donc les votants l'ont approuvée. Une fois adoptée, l'attaquant a selfdestruct la logique de la proposition et redéployé du code malveillant entièrement différent à la même adresse, saisissant 1,2 million de votes contre ~70 000 légitimes et drainant la DAO. Vol net : environ 2,17 millions de dollars (le leaderboard de Rekt liste 750 K$, reflétant une comptabilité différente de la valeur réalisée). L'attaquant a plus tard rendu le contrôle de la gouvernance.

Ce qui s'est passé

La DAO de Tornado Cash exécutait les propositions approuvées via delegatecall vers un contrat de proposition. L'attaque a abusé de la différence entre quand les votants examinent une proposition et quand son code s'exécute réellement :

  1. L'attaquant a soumis une proposition avec une logique qui semblait identique à une proposition précédemment approuvée et fiable. Les votants, reconnaissant le « même » code, l'ont approuvée.
  2. Le contrat de proposition contenait une fonction emergencyStop() cachée avec selfdestruct.
  3. Après l'adoption de la proposition mais avant/à l'exécution, l'attaquant a appelé emergencyStop(), détruisant le code du contrat de proposition et — crucialement — réinitialisant le nonce de déploiement / libérant l'adresse.
  4. L'attaquant a redéployé un code malveillant complètement différent à la même adresse (en utilisant la propriété de réutilisation d'adresse style CREATE2 que selfdestruct activait à l'époque).
  5. Lorsque la DAO a exécuté la proposition « approuvée » via delegatecall, elle a maintenant exécuté le code malveillant substitué de l'attaquant — qui a minté 10 000 votes de gouvernance à chacune de nombreuses adresses contrôlées par l'attaquant, totalisant 1,2 million de votes contre les ~70 000 votes légitimes existants.
  6. Avec le contrôle de la supermajorité, l'attaquant a drainé les avoirs TORN de la DAO et les frais du routeur verrouillés.

Conséquences

  • Le jeton TORN a chuté de ~40-50 % à la nouvelle.
  • Dans un tournant inhabituel, l'attaquant — après avoir démontré un contrôle total — a soumis une proposition pour restaurer la gouvernance légitime et a renoncé au contrôle, retournant la DAO à sa communauté. Il a gardé les produits des jetons réalisés.
  • L'incident est devenu une étude de cas canonique sur le danger de la réutilisation d'adresse activée par selfdestruct et l'écart entre l'examen et l'exécution de proposition.

Pourquoi c'est important

L'attaque de gouvernance de Tornado Cash est l'un des exploits les plus techniquement élégants du catalogue, et il enseigne deux leçons distinctes :

  1. « Le code que vous avez examiné n'est pas nécessairement le code qui s'exécute. » Les votants de gouvernance ont examiné le code au moment de la soumission de la proposition ; le code qui s'est exécuté au moment de l'exécution était différent, parce que selfdestruct + redéploiement permettait à l'attaquant d'échanger le bytecode du contrat à une adresse fixe. C'est la même leçon structurelle que Swaprum et Hope Finance (déployé ≠ audité), généralisée à la gouvernance.

  2. La réutilisation d'adresse activée par selfdestruct est un risque fondamental. L'attaque dépendait de la propriété EVM (depuis contrainte par EIP-6780) que selfdestruct libérait une adresse pour redéploiement avec un code différent. L'exploit est l'une des raisons les plus médiatisées pour lesquelles la sémantique selfdestruct de l'EVM a été ultérieurement resserrée.

Le choix de l'attaquant de rendre le contrôle de la gouvernance est également notable — l'un de plusieurs cas du catalogue (Mango Markets, les white-hats DODO, celui-ci) où la relation du perpétrateur aux fonds était ambiguë entre « voleur » et « démonstrateur agressif ». La ligne juridique et éthique — exécuter une logique que le contrat permet constitue-t-il un crime ? — reste la question non résolue qui traverse toute l'ère des exploits DeFi.

Sources & preuves on-chain

  1. [01]halborn.comhttps://www.halborn.com/blog/post/explained-the-tornado-cash-hack-may-2023
  2. [02]coindesk.comhttps://www.coindesk.com/tech/2023/05/21/attacker-takes-over-tornado-cash-dao-with-vote-fraud-token-slumps-40
  3. [03]medium.comhttps://medium.com/@zan.top/unpacking-the-tornado-cash-governance-attack-15b40691ca2e

Dépôts liés