Chibi Finance tire un tapis présumé de 1 million de dollars : comment c’est arrivé

Le 26 juin, l’agrégateur de financement décentralisé (DeFi) Chibi Finance a été exploité par son propre compte de déploiement, et 1 million de dollars de crypto-monnaie ont été drainés de ses contrats dans une apparente arnaque de tirage ou de sortie. L’interface utilisateur officielle du protocole a disparu, produisant une erreur 404, et tous les médias sociaux de l’application ont été supprimés. Une fois les fonds épuisés, ils ont été échangés contre Wrapped Ether (WETH) et reliés à Ethereum, où ils ont ensuite été envoyés à Tornado Cash par l’attaquant.

Le prix du jeton de gouvernance Chibi Finance (CHIBI) a chuté de plus de 90 % à l’annonce de la nouvelle.

Prix ​​du jeton CHIBI. Source : CoinGecko.

Mais les «tirs de tapis» ne devraient pas être possibles dans DeFi. Après tout, ces applications, par définition, ne fonctionnent pas sur une infrastructure centralisée. Ainsi, le créateur de l’application ne devrait pas pouvoir s’enfuir avec la crypto ou l’argent de tout le monde.

Pour cette raison, il pourrait être utile d’analyser comment l’escroquerie présumée a été réalisée.

CertiK a produit un rapport détaillé après avoir enquêté sur l’incident. Lorsqu’il est combiné avec les données de la blockchain, ce rapport peut faire la lumière sur la façon dont l’attaque s’est produite et sur ce que les utilisateurs peuvent faire pour se protéger contre des attaques ou des escroqueries similaires à l’avenir.

L’application Chibi Finance

Avant que son interface utilisateur ne soit mise hors ligne, Chibi se décrivait comme « l’agrégateur de rendement le plus populaire sur Arbitrum ». Il prétendait permettre aux utilisateurs de gagner du rendement à travers l’écosystème Arbitrum.

Selon CertiK, l’agrégateur DeFi a augmenté en valeur totale verrouillée (TVL) – une mesure de la valeur de la crypto détenue dans les contrats d’une application – depuis son lancement en avril. Le 21 juin, Chibi a annoncé avoir atteint 500 000 $ en TVL. À l’époque, l’équipe s’était fixé pour objectif d’atteindre 1 million de dollars.

Le 26 juin, l’application a été répertoriée sur CoinGecko pour la première fois, ce qui lui a donné une plus grande visibilité. Il semble avoir atteint son objectif de 1 million de dollars peu de temps après cet événement, juste avant que les jetons ne soient retirés de ses contrats. En conséquence, les investisseurs ont perdu plus d’un million de dollars de crypto dans l’attaque ou l’escroquerie.

Contrats Chibi Finance

L’attaque a exploité une faille dans huit contrats différents utilisés dans le protocole Chibi Finance. Ces contrats ont été dérivés d’autres projets et n’étaient pas propres à Chibi. Par exemple, l’un d’entre eux était StrategyAave.sol à l’adresse Arbitrum 0x45E8a9BA6Fcd612a30ae186F3Cc93d78Be3E7d8d, qui a également été déployé sur plusieurs autres adresses sur Abitrum, Ethereum, la chaîne intelligente BNB et d’autres réseaux.

Un autre exemple est le contrat StrategySushiSwap.sol à 0x9458Ea03af408cED1d919C8866a97FB35D06Aae0. Cela a également plusieurs versions sur Arbitrum et d’autres réseaux.

Ces contrats semblent être couramment utilisés dans les applications d’agrégation DeFi, pas seulement dans Chibi Finance.

En rapport: Agrégation DeFi : ouvrir la voie à une adoption massive

Fonction panique

Les données de la blockchain révèlent que certains des contrats utilisés par Chibi Finance contiennent une fonction «panique» qui peut être utilisée pour retirer tous les jetons d’un pool et les envoyer à une adresse particulière. Cette fonction était essentielle à la méthode de l’attaquant. Voici une explication de son fonctionnement, avec StrategySushiSwap.sol utilisé comme exemple :

Les lignes 340 à 343 de StrategySushiSwap.sol indiquent que si la fonction panic () est appelée, elle appellera une deuxième fonction nommée « emergencyWithdraw » sur le contrat ISushiStake.

La fonction panic() dans le contrat StrategySushiSwap.sol. Source : données de la chaîne de blocs.

Le contrat ISushiStake, à son tour, n’est qu’une interface. Il ne contient aucun code exécutable. Au lieu de cela, il pointe vers le contrat SushiSwap: MiniChefV2 à 0xF4d73326C13a4Fc5FD7A064217e12780e9Bd62c3.

L’adresse du MiniChefV2 est listé en tant que contrat officiel pour l’échange décentralisé, SushiSwap. Ainsi, la fonction « panique » appelle une fonction « emergencyWithdraw » dans SushiSwap.

À l’adresse SushiSwap, la fonction emergencyWithdraw peut être vue sur les lignes 626–643.

Fonction de retrait d’urgence SushiSwap MiniChefV2. Source : données de la chaîne de blocs.

Cette fonction permet au propriétaire des fonds de retirer sans prendre de récompenses. Cela peut être utile en cas d’urgence. Par exemple, un utilisateur peut souhaiter appeler cette fonction si un bogue dans le contrat de récompense l’empêche de recevoir des récompenses.

La fonction emergencyWithdraw a une sécurité intégrée pour empêcher l’utilisation par des personnes non autorisées. Il indique à la ligne 360, « UserInfo storage user = userInfo[pid][msg.sender]”, ce qui signifie que “l’utilisateur” est défini comme l’expéditeur du message. Dans des circonstances normales, cela devrait permettre à un utilisateur de retirer d’urgence ses propres fonds, mais pas les fonds appartenant à quelqu’un d’autre.

Il ne semble pas y avoir quoi que ce soit de malveillant à propos de cette fonction dans SushiSwap. Cependant, un problème peut survenir si l’utilisateur n’appelle pas cette fonction directement depuis son propre portefeuille.

Par exemple, lorsqu’un utilisateur déposait des fonds à l’aide de Chibi Finance, sa crypto était envoyée à SushiSwap par le contrat StrategySushiSwap, et non directement par l’utilisateur final. Cela signifiait que l’application Chibi Finance était reconnue comme « l’utilisateur » lors d’une tentative de retrait d’urgence de fonds. Ceci, à son tour, a permis à Chibi de retirer les fonds des utilisateurs au nom des utilisateurs.

En rapport: Comment repérer une traction de tapis dans DeFi: 6 conseils de Cointelegraph

Cependant, les fonds auraient dû être en sécurité tant que la fonction panique ne pouvait être appelée que par l’utilisateur final.

Malheureusement, la fonction panique n’a pas cette exigence. Au lieu de cela, il est simplement répertorié dans le contrat Chibi Finance en tant que fonction « onlyGov », ce qui signifie qu’un administrateur peut l’appeler, mais personne d’autre. L’attaquant s’est appuyé sur cette faille pour mener à bien son attaque.

Comment l’attaque de Chibi Finance a été menée

Selon le rapport CertiK, le nom d’utilisateur Ethereum Shadowout.eth a retiré 10 Ether (ETH) de Tornado Cash le 15 juin. Ces fonds ont été transférés à Arbitrum, et 0,2 ETH ont été envoyés par cet utilisateur à l’adresse 0x80c1ca8f002744a3b22ac5ba6ffc4dc0deda58e3. Ce deuxième compte alors créé un contrat malveillant le 23 juin à l’adresse 0xb61222189b240be3da072898eda7db58b00fd6ee.

L’attaquant a appelé huit fois la fonction « add pool » sur ce contrat malveillant le 23 juin. Le contrat n’étant pas vérifié, le code de cette fonction « add pool » est inconnu. Cependant, CertiK a émis l’hypothèse que chacune de ces transactions peut avoir ajouté un contrat Chibi Finance à une liste dans les données du contrat malveillant pour un total de huit contrats dans la liste.

Le 27 juin, le déployeur compte pour Chibi Finance transféré droits d’administrateur pour les huit contrats Chibi Finance sur le contrat malveillant. Il l’a fait à travers huit transactions distinctes, chacune appelant la fonction « setGov » sur un contrat particulier.

Modification des droits d’administrateur pour l’un des contrats Chibi Finance. Source : données de la chaîne de blocs.

Une fois que le contrat malveillant a obtenu ces droits de gouvernance, son créateur a appelé sa fonction « d’exécution ». Cela l’a amené à appeler «panique» sur chacun des huit contrats, qui à leur tour ont appelé «emergencyWithdraw» sur des pools connexes dans des applications DeFi telles que SushiSwap, Aave et Global Hectare.

Le résultat a été que tous les fonds déposés par les utilisateurs dans ces pools via Chibi Finance ont été drainés par l’attaquant, entraînant des pertes de plus d’un million de dollars pour les investisseurs.

Comment éviter les tirages de tapis de style Chibi ?

Étant donné que l’attaque reposait sur une fonction « panique » qui permettait à un administrateur de drainer tous les fonds des utilisateurs, une façon d’éviter une traction de tapis de style Chibi serait de ne pas utiliser les applications qui ont cette fonction.

D’un autre côté, si un agrégateur n’a pas de fonction « panique », il y a un risque que les fonds de l’utilisateur soient bloqués si un bogue ou un exploit est découvert dans l’application d’agrégation. Les utilisateurs peuvent envisager ces compromis s’ils décident d’utiliser des applications d’agrégation au lieu d’interagir directement avec les pools sous-jacents.

En rapport: Plus de 204 millions de dollars ont été perdus dans les hacks et les escroqueries DeFi du deuxième trimestre : rapport

Les utilisateurs de DeFi peuvent également vouloir considérer que le code de contrat intelligent peut être extrêmement complexe, et il peut ne pas être possible pour la plupart des utilisateurs de déterminer par eux-mêmes si une application présente une faille de sécurité. Comme CertiK l’affirme dans son rapport :

« L’incident de Chibi Finance démontre les risques associés à la centralisation dans l’espace Web3.[…]C’est une attente irréaliste pour les investisseurs réguliers de repérer et de comprendre les risques de centralisation au sein de projets comme Chibi Finance en faisant simplement leurs propres recherches.

Pour cette raison, les utilisateurs peuvent vouloir vérifier les audits publiés d’une application avant de l’utiliser, a déclaré CertiK.

Chibi Finance a affirmé avoir été audité par la société de sécurité blockchain SolidProof. Le contenu de l’audit présumé n’est plus disponible, car le GitHub du projet a été supprimé et n’a jamais été enregistré par les archives Internet. Cointelegraph n’a pas pu déterminer si les risques posés par la fonction « panique » ont été divulgués dans le rapport d’audit ou même si un audit a eu lieu.

Cointelegraph a contacté SolidProof pour commentaires mais n’a pas reçu de réponse par publication.

Les tirages de tapis ou les escroqueries à la sortie sont devenus un problème courant dans l’espace DeFi. Le 1er juin, la société de sécurité blockchain Beosin a signalé que plus de 45 millions de dollars avaient été perdus à cause des tirages de tapis en mai, dépassant les exploits DeFi réguliers. En avril, le protocole Ordinals Finance aurait également été renforcé pour 1 million de dollars via une fonction de transfert « safuToken ».