Dégringolade chez Agave et Hundred Finance : 11,7 millions de $ dérobés par un hacker
À chaque semaine son attaque – L’écosystème de la finance décentralisée (DeFi) comptabilise plus de 200 milliards de dollars répartis à travers différentes blockchains. En pratique, cet écosystème est majoritairement open source. Par conséquent, de nombreux protocoles se fondent, en forkant le code d’autres protocoles. Malheureusement, certaines modifications faites à la hâte engendrent l’apparition de failles critiques. Les protocoles Agave et Hundred Finance viennent de l’apprendre aux dépens de leurs utilisateurs.
11,7 millions de dollars envolés
Agave Finance et Hundred Finance sont 2 protocoles ayant vu le jour sur la Gnosis Chain (anciennement xDai) suite à des forks de deux protocoles de renom, à savoir Aave et Compound.
Le mardi 15 mars, les 2 protocoles ont averti leurs utilisateurs qu’une attaque était en cours. Suite à cette annonce, les protocoles ont tous 2 mis en pause leurs contrats afin de limiter les dégâts.
Malheureusement, ces mesures n’auront pas empêché le ou les attaquants. Ainsi, 2 116 ETH (soit 5,5 millions de dollars) ont été dérobés sur Agave et 2 363 ETH (soit 6,2 millions de dollars) ont été dérobés au protocole Hundred Finance.
Sans grande surprise, l’attaquant a directement fait transiter le fruit de son butin via le protocole Tornado Cash pour brouiller les pistes.
Flash loan, re-entrancy : une recette bien connue
Pour mener son attaque, le hacker a utilisé une méthode déjà bien connue de l’écosystème DeFi. Cette méthode a été la même pour chacun des 2 protocoles attaqués.
Ainsi, celui-ci a contracté un flash loan en xDAI et a déposé les fonds sur chacun des protocoles pour obtenir un prêt. Malheureusement, la fonction callAfterTransfer() présente dans le jeton xDAI présente une mauvaise conception entraînant une faille re-entrancy.
En pratique, cette faille permet à l’attaquant de multiplier les appels à la fonction d’emprunt, sans que le solde de sa dette soit mis à jour. Ainsi, avec un collatéral de base réduit, l’attaquant a été en mesure de siphonner plusieurs pools en multipliant les emprunts.
Une fois les pools siphonnées, l’attaquant n’avait plus qu’à rembourser son flash loan et empocher les millions de dollars dérobés.
« L’attaquant a déposé environ 2 millions de dollars comme garantie et a emprunté jusqu’à 1,5 million de dollars de tous les autres actifs en exploitant la ré-entrance. Il a emprunté 1,5 million de dollars sur le premier actif et, avant que le système n’enregistre sa dette, il s’est réinscrit et a également emprunté 1,5 million de dollars sur le second actif. Ainsi, leur dette s’élevait à 3 millions de dollars, alors que leur garantie n’était que de 2 millions de dollars. Il a (…) répété cette opération pour emprunter tous les actifs disponibles. »
Tweet du développeur de blockchains, Mudit Gupta
Fork ≠ sécurisé
Comme nous l’avons vu, Agave et Hundred sont tous 2 des forks d’Aave et Compound. Cependant, utiliser le même code ne permet pas forcément d’hériter de la sécurité de ces derniers.
En effet, la moindre modification effectuée dans le code pour l’adapter peut entraîner l’apparition de faille. Dans le cas de ces 2 attaques, c’est le déploiement sur la Gnosis Chain qui a entraîné la faille.
Ces attaques auraient pu être évitées si les développeurs avaient pris le soin de vérifier chaque jeton ajouté à leur protocole, afin de s’assurer qu’il n’introduit pas de faille de re-entrancy.
« Les équipes des protocoles Agave et Hundred se sont fourvoyées en listant un jeton qui peut se faire re-entrancy. La gouvernance d’Aave et de Compound vérifie activement la re-entrancy avant de lister les jetons sur le réseau principal pour éviter des attaques similaires. »
Mudit Gupta
Désormais, les protocoles vont s’associer aux forces de l’ordre avec l’espoir de remettre un jour la main sur les fonds. Récemment, le hacker de TheDAO, le premier et plus important hack ayant eu lieu sur Ethereum, a été retrouvé. Malheureusement, ce n’est pas le cas de la majorité des hacks.