1. Accueil
  2. /
  3. Marketplace
  4. /
  5. Les causes de la vulnérabilité du contrat intelligent de...

Les causes de la vulnérabilité du contrat intelligent de Minswap ainsi que les leçons à en tirer

Récemment, la plateforme d’échange décentralisée Minswap a été mise à l’arrêt suite à la découverte d’une vulnérabilité. Dans cet article, nous allons passer en revue l’incident, la façon dont l’équipe de Minswap a résolu le problème et les leçons à tirer de l’évènement.

Qu’est ce que Minswap

Minswap est une plateforme d’échange de jetons sur la blockchain Cardano qui a été lancée en production le 9 Mars 2022.

L’équipe s’est fait remarquée car plusieurs membres ont fait partie de la première cohorte de développeurs (Pioneer Program). Aujourd’hui, le programme dirigé par Lars Brünjes en est à sa 3ème édition. Il a été mis en place par IOG (précédemment IOHK) afin de former les gens au langage de programmation propriétaire de Cardano, Plutus.

Minswap a aussi été l’une des premières équipes à proposer une collecte de fonds par le bias du staking (voir le lexique en bas d’article) sur Cardano (via une FISO pour “Fair Initial Stake Offering” ou Offre initiale équitable de mise à contribution). La FISO (et plus généralement, la classe des ISPOs – “Initial Stake Pool Offerings” – dont la FISO fait partie) tire partie des caractéristiques uniques du protocole de staking de Cardano et est maintenant abondamment copiée afin de collecter des fonds dans l’écosystème. 

Cependant, contrairement à ces concurrents, Minswap s’est beaucoup appuyée sur les SPOs de petites pool, ce qui a l’avantage de maintenir la décentralisation du réseau (en promettant de ne pas ouvrir ces propres pools de stacking et risquer de forcer des migrations vers les nouvelles pools dédiées). Cet initiative a été très bien vu par la communauté de Cardano, ce qui a mené beaucoup de gens à attendre avec impatience le lancement officiel du DEX sur le réseau principal. 

Ce fut chose faite le 9 Mars 2022. Très vite Minswap est devenu un DEX important de l’environnement Cardano, dépassant sa populaire concurrente Sundaeswap en terme de TVL. À la date d’écriture de ces lignes (31 Mars 2022), Minswap représente 63.36% de la somme totale bloquée dans des contrats intelligents sur Cardano (voir https://defillama.com/chain/Cardano).

Fort de ce succès et toujours dans l’esprit de transparence, le 20 Mars Minswap décida de rendre publique le code source de son contrat intelligent écrit en Plutus.

Le 22 Mars, soit quelques jours après cette annonce, Minswap commença à signaler que leurs plateforme serait lente car ils essayaient de corriger quelques erreurs, puis très vite cela fut suivi d’une mise à l’arrêt complète qui dura 50 heures. 

La vulnérabilité 

Comme détaillé dans le bulletin post-mortem sur l’incident, une vulnérabilité majeure a été mise en évidence par l’équipe de WingRiders, un DEX concurrent encore en phase de test. Celui-ci est d’ailleurs lui aussi très attendu car ce sera le premier DEX à garantir de vous faire gagner à la fois des dividendes lorsque vous fournirez de la liquidité, et des revenus de staking de Cardano. 

Une fois le problème résolu, Minswap a déclaré que la vulnérabilité donnait la possibilité de dupliquer les tokens non fongibles d’une pool de liquidité et de les utiliser afin de produire une infinité de coins LP (voir lexique en bas de page pour une définition). De fait, les fonds dans chaque pool de liquidité pouvaient être siphonnés à tout moment si la faille de sécurité venait à être exploitée.

Afin de remédier au problème, l’équipe de Minswap a ingénieusement mis à profit cette faille afin de transférer les fonds présents sur le contrat ayant la vulnérabilité, vers un contrat exempt de vulnérabilité. Ils ont aussi pu corriger quelques failles de sécurité mineures révélées encore une fois par l’équipe de WingRiders dans les jours qui suivirent. Au final, grâce à une sauvegarde de l’état des contrats intelligents de Minswap (pools de liquidité et offres d’achats/ventes), les opérations ont pu redémarrer sans affecter les utilisateurs du DEX

A noter que la vulnérabilité n’avait pas été mise en évidence lors de l’audit des contrats intelligents effectué par la compagnie Tweag. Ceux-ci ont toutefois après-coups fournit des excuses et les détails précis sur la vulnérabilité dans un article qui sera bientôt traduit ici afin d’en faciliter l’accès aux non-anglophones désireux d’en apprendre plus sur les aspects techniques de la vulnérabilité. Un autre article en anglais de Wingridders fait aussi écho sur ce qui a été dit par Minswap, Tweag, et répété ici.

Tweag et Minswap notent que du au fait que Plutus soit un langage de programmation très jeune (Il est fortement inspiré de Haskell, mais est spécifique à Cardano), les développeurs et les auditeurs n’ont pas suffisamment d’expérience pour anticiper toutes les failles majeures. En effet, malgré le fait que Plutus soit un langage déclaratif (on ne spécifie pas comment arriver au résultat, mais juste ce que l’on veut au final. Ce qui est à l’opposé d’un language impératif tel que Solidity, C, Python, etc…), l’assurance que le code fera exactement ce qu’on lui demande nécessite des années de pratiques et d’expériences. Mais cela nécessite aussi des outils techniques avancés pour identifier et évaluer les erreurs lors de la compilation (erreurs identifiées à la compilation par le compilateur) et à l’exécution (tracer les chemins d’exécutions avec par exemple un débogueur, ou faire de la vérification formelle avec des outils spécifiques).

Or avec un langage jeune, ce genre d’outils n’existe pas encore et il faudra du temps pour que l’écosystème mature suffisamment afin de garantir un environnement aussi sécuritaire que ce qui existe pour les autres langages déclaratifs.

Conclusion

Pour conclure, les utilisateurs de DEX doivent être conscients qu’il existe toujours un risque de faille de programmation, et que ce risque est d’autant plus élevé que la plateforme DEX est récente et utilise un langage de programmation jeune. Donc mesurez votre risque et ne mettez pas tous vos oeufs dans le même panier si vous participez aux pools de liquidité tels que ceux proposés par les DEX. Si vous n’êtes pas certains de ce que vous faites, il est préférable de se contenter des avantages que le staking vous offre (autour de 4.5% par an) avec les stakepools de Cardano: Ceci est sécuritaire, robuste et garantie de marcher.

Lexique

Afin de naviguer dans les anglicismes propres au domaine des cryptomonnaies et en particulier de Cardano, voici un lexique des termes anglophones repris dans l’article ainsi que leurs définitions.

DEX ou “Decentralized Exchange”:  Plateforme d’échange de cryptomonnaies décentralisée.  

Blockchain : chaine de données réparties en blocs interdépendants dont la séquence et le contenu sont établis et vérifiés par des procédés cryptographiques

Stake: Dans le cas de Cardano se réfère à l’argent mis à contribution afin de garantir la sécurité du protocole d’enjeu (PoS). De ce mot dérive l’anglicisme staking, désignant le fait de mettre l’argent à contribution sur le protocole.

Pool: Piscine. Dans le contexte de l’écosystème Cardano, cela se réfère à la structure qui permet d’accueillir/gérer des fonds mis à contribution par les détenteurs du coin ADA ou d’un jeton disponible sur Cardano.