Juste quelques jours après avoir pris le contrôle de la gouvernance du projet, l'assaillant de Tornado Cash a soumis une nouvelle proposition pour annuler les dommages qu'il a causés.
Le 18 mai, le DAO de Tornado Cash a accidentellement voté en faveur de la proposition malveillante après avoir omis de vérifier correctement son contenu.
Tornado Cash est un mixer préservant la vie privée sur le réseau Ethereum.
L'attaquant a ensuite pu s'octroyer 1,2 million de jetons TORN, lui donnant le contrôle sur le DAO. Il a ensuite échangé 380 000 des jetons TORN nouvellement acquis contre 372 ETH et les a renvoyés à travers le protocole de confidentialité.
Un DAO, ou organisation autonome décentralisée, est une façon pour un projet de s'organiser sans avoir besoin d'une entreprise ou d'un individu spécifique au pouvoir. Des jetons de gouvernance - tels que le jeton TORN de Tornado Cash - sont distribués à la communauté pour faire et voter sur diverses propositions pour le projet en question.
La proposition n'avait rien à voir avec la remise de jetons à des membres. Au lieu de cela, elle a demandé aux membres de la communauté de voter pour ou contre l'augmentation du montant de jetons TORN mis en jeu nécessaires pour devenir un relais Tornado Cash et de pénaliser les relais tentant d'éviter d'avoir leur mise réduite.
L'attaquant a prétendu avoir la même logique qu'une proposition antérieure qui avait déjà été adoptée.
Cependant, la proposition malveillante a ajouté une fonction d'auto-destruction qui, une fois utilisée, a remplacé la proposition originale par une nouvelle proposition malveillante.
«L'auto-destruction est, comme on peut l'imaginer, l'une des choses les plus effrayantes que l'on puisse ajouter facilement en tant que fonction supplémentaire», a déclaré à Decrypt un ingénieur de contrat intelligent chez Immunefi, Gonçalo Magalhães. «Changer la logique d'un contrat offre des possibilités infinies.»
Avec la proposition malveillante maintenant en place, l'attaquant a pu retirer tous les votes de gouvernance verrouillés et vider tous les jetons du contrat de gouvernance.
«En résumé, l'attaquant a vidé les jetons TRON du coffre-fort de gouvernance, ce qui signifie qu'il avait alors tout le pouvoir de vote», a déclaré un porte-parole de la société de sécurité PeckShield à Decrypt. «Ils ont ensuite échangé une partie des TORN volés contre de l'ETH et l'ont déposé dans le protocole Tornado Cash.»
Peu de temps après que la proposition ait été révélée comme étant malveillante, une autre proposition a été faite pour annuler les changements.
«Parce que l'attaquant a maintenant la majorité du pouvoir de vote, les mécanismes de gouvernance sont essentiellement sans signification», a déclaré Magalhães.
L'attaquant a également soumis une autre nouvelle proposition qui rendrait les jetons TORN qu'ils s'étaient donnés. Après avoir échangé 380 000 TORN contre de l'ETH, l'attaquant détient toujours 820 000 jetons TORN, ce qui signifie qu'il a toujours un contrôle total sur le DAO.
L'utilisateur de Twitter 0xdeadf4ce a suggéré, cependant, que tout cela pourrait être un «gigatroll,» affirmant que la nouvelle proposition de revenir sur les changements n'était qu'un moyen de stimuler le prix du jeton.
TornadoCash attacker deployed new proposal that, if executed, would seemingly revert the damage done to the Governance functionality. Either they're giga trolling or it will end up being an expensive but not disastrous lesson in Governance security.https://t.co/QMWYFsi8kP
— 0xdeadf4ce (@0xdface) May 21, 2023
Comment les DAO restent-ils en sécurité ?
Cela a suscité un débat en ligne sur le fait que les propositions de DAO ne sont pas correctement auditées, voire pas du tout.
«Ce n'est pas le premier cas d'attaque de gouvernance cette année», a déclaré Nathan van der Heyden, responsable de la croissance de Snapshot, à Decrypt. «L'attaque de gouvernance de Beanstalk est l'une des plus grandes attaques de l'année, et celle de Tornado est probablement l'une des plus médiatisées.»
Dans ce cas, la proposition était bien conçue pour être non descriptive et inattendue.
Beaucoup, sinon tous, les votants auraient simplement voté sans plonger plus profondément dans le code du contrat.
«L'audit de tous les processus critiques est certainement une bonne mesure, mais nous ne le voyons pas souvent mis en œuvre», a déclaré Magalhães d'Immunefi à Decrypt. «Il est déjà difficile de voir des audits complets réalisés sur toutes les mises à niveau de proxy de contrat intelligent.»
Un porte-parole de PeckShield a confirmé que l'entreprise reçoit des demandes d'audit de proposition et qu'ils «croient que de nombreux protocoles célèbres ont leurs propositions auditées».
PeckShield a refusé de révéler qui paie pour les audits de sécurité de proposition ou quels projets choisissent d'auditer leurs propositions.
Mais que doit faire un DAO ?
«Les DAO devraient encourager l'examen actif des propositions et la participation des détenteurs. Essentiellement, un code malveillant comme celui-ci ne devrait pas passer inaperçu par tous les membres du DAO», a déclaré Magalhães. «Un électeur individuel devrait avoir une compréhension approfondie de ce pour quoi il vote. Les propositions on-chain, bien que numériques, sont définitivement réelles et ont de vraies conséquences.»
Bien que cette attaque ait été astucieuse, toute personne ayant un œil attentif examinant le code aurait dû voir la fonction d'auto-destruction. «Une fonction d'auto-destruction dans un contrat aurait dû déclencher toutes les sirènes du quartier général», a-t-il déclaré.
Cette attaque devrait servir de leçon d'apprentissage, bien qu'elle soit coûteuse, pour les DAO et leurs membres afin d'empêcher une autre attaque de gouvernance de se produire cette année.
«Nous avons besoin de cadres de gouvernance généralisés sur la chaîne qui permettent à ces exploits d'être des moments d'enseignement pour la communauté qui adapte ensuite ses propres cadres à cette nouvelle connaissance», a déclaré van der Heyden, «Si nous n'apprenons pas collectivement, alors nous sommes obligés de répéter des erreurs similaires individuellement.»