Une faille des contrats de xToken coûte 24,5 millions de dollars au protocole
Le 12 mai, le protocole de la DeFi xToken a subi une attaque, entraînant une perte de 24,5 millions de dollars. Le hacker à l'origine de l'exploitation d'une faille a mis à profit les flash loans offerts par xToken pour voler une gamme de jetons afin de les revendre contre de l'Ether (ETH).
Comment fonctionne xToken ?
Offrant des stratégies de liquid staking via des wrappers de jetons natifs appelés xTokens, le projet éponyme s'associe à deux des plus grands projets de finance décentralisée (DeFi) : Kyber Network (KNC) et Synthetix (SNX).
xToken propose divers jetons, tels que xSNXa et xBNTa, qui offrent une exposition aux fluctuations des projets DeFi suscités. Ils se présentent sous la forme de jetons ERC-20 wrappés autour de jetons DeFi, tels que SNX et BNT.
xToken a reconnu le piratage et a promis des informations supplémentaires sur l'incident, en tweetant:
«Nous devons une explication à la communauté et nous fournirons une autre mise à jour sous peu.»
Selon le rapport d’incident publié via Medium, l'attaque a été menée simultanément à l'aide de deux exploits ayant pour cible les contrats xSNX et xBNT.
Une faille de l'oracle du contrat xSNX
Le contrat xSNX, réputé être «un contrat très complexe» par Michael J.Cohen (MJC), co-fondateur de xToken fonctionne comme suit :
Les investisseurs usent des éthers afin de minter des jetons Synthetix wrappés : les fameux xSNXa. Afin d’obtenir un taux de change adéquat, le ratio ETH/SNX est calculé en comparant la valeur en ETH apportée par l’utilisateur au montant de SNX théoriquement obtenu. L’agrégateur de données Kyber Network est ensuite mis à contribution pour effectuer les transactions du contrat xSNX.
Cependant, MJC déclare que ce contrat n'utilisait pas d’oracle on-chain (liées aux données en temps réel des blockchain concernées). Et c’est précisément là que se trouvait la faille qu’a choisi d’exploiter l’attaquant.
Le hacker a contracté un flash loan, empruntant 61 800 ETH (270 millions de dollars), dans le but de corrompre les données de l’oracle de Kyber Network. Se faisant, il a pu modifier le prix du jeton SNX puis utiliser les ETH pour créer des tokens xSNXa a un prix défiant toute concurrence. Il a ainsi pu minter de nombreux jetons xSNXa, qui ont ensuite été vendus pour de l'éther (ETH) et du Synthetix via le bassin de liquidité Balancer du protocole.
Afin de compenser les utilisateurs lésés, l’équipe de xToken prévoit d’opérer un snapshot des soldes xSNXa existants avant l’exploit et de fournir un jeton de substitution afin que les détenteurs puissent récupérer leur fonds. La tâche semble cependant plus ardue en ce qui concerne les 416 ETH extirpés du contrat dont les manières de restaurer la valeur sont encore en discussion.
La fonction «mint» du contrat xBNT exploitée
De même que pour xSNX, le contrat xBNT permet de créer des jetons xBNTa en offrant des ETH en collatéral via la plateforme d’échange de Bancor. Plus précisément le contrat échange les ETH contre des BNT et utilise la valeur jetons BNT acquise pour définir la masse de jetons xBNTa à créer.
En tant que jeton wrappé, xBNTa ne doit être minté qu'à l'aide de jetons BNT. Le contrat, cependant, n'a pas rempli cette condition. L’attaquant a modifié les paramètres de la fonction « mint » du contrat autonome en y incluant des jetons SPD pour usurper la valeur en BNT de la transaction.
L’opération résultait en la création infinie de jetons xBNTa qui a fini par vider les caisses du bassin de liquidités de Bancor.
Malgré tout, l’équipe de xToken se réjouit du fait qu’aucune valeur n'ait été extraite directement du contrat xBNT. Afin d’annuler les conséquences de l'exploit, des snapshot des portefeuilles de détenteurs de jetons xBNTa sont actuellement mis en œuvre. Ainsi la restauration totale de la valeur existant avant l’attaque devrait être possible dans les prochains jours.
? Pour aller plus loin – Uranium Finance, un projet DeFi de la Binance Smart Chain, perd 50 millions de dollars
Un hacker pour le moins talentueux
Comme l'a noté Igor Igamberdiev, analyste chez The Block Research:
« L'attaquant a été assez futé - ou assez proche de ce projet - pour utiliser deux exploits différents pour les jetons de deux projets. »
L'attaquant aurait ainsi récupéré 2400 ETH (10,3 millions de dollars), 781000 BNT (6,2 millions de dollars), 407000 SNX (8 millions de dollars) et 1,9 milliard de jetons xBNTa. Tous les jetons ont déjà été vendus, à l'exception des xBNTa, pour un total de 5600 ethers (24,5 millions de dollars).
Pour mener à bien l'attaque, il aurait payé la modique somme de 5 ETH (21 900 $) de frais. Des frais néanmoins relativement élevés puisqu’il s'agissait d'une transaction très complexe.
Des protocoles DeFi encore trop vulnérables ?
Selon Coingeek, en 2020, 17 exploits et hacks majeurs de DeFi ont eu lieu, entraînant une perte globale de 154 millions de dollars. Concernant 2 de ces 17 attaques, le vol résultait d’une arnaque liée à l'équipe fondatrice. Les 15 autres évènements étaient le résultat de l'exploitation d'une faille dans les protocoles.
Le secteur de la finance décentralisée est devenu une cible de choix pour les hackers. Le marché de la DeFi étant encore jeune, il possède plusieurs vecteurs d'attaque inexplorés.
De nombreux projets de l'espace DeFi se lancent sans être audités par des entreprises spécialisées, et même ceux qui sont audités possèdent souvent des vecteurs d'attaque.
De plus, les plateformes de la DeFi n'ayant d'AML ou de KYC, il est facile d'exécuter une attaque et de blanchir des capitaux via un protocole tout en restant sous les radars. Quand il s'agit de la DeFi, prudence est mère de sureté !
💡 Sur le même thème – Un hacker siphonne 14 millions de dollars au protocole Furucombo
Recevez un récapitulatif de l'actualité crypto chaque jour par mail 👌