Bug sur Solana (SOL) : des centaines de millions de $ à risque
Tout est bien qui finit bien – L’écosystème de la finance décentralisée (DeFi) est malheureusement truffé de bugs et autres failles. L’année 2021 est un exemple parfait, avec plus de 10,5 milliards de dollars dérobés aux protocoles DeFi. Heureusement, dans la plupart des cas, ces bugs sont découverts avant qu’ils ne soient exploités.
Spl-token-lending : un bug caché
En l’espace de quelques mois, le réseau Solana (SOL) a su devenir une place incontournable de l’écosystème DeFi. Celui-ci se positionne actuellement à la quatrième place du classement DeFi en termes de TVL, avec plus de 14 milliards de dollars déposés à travers ses protocoles.
Cependant, celui-ci aurait être mis à mal si une faille, qui vient d’être découverte, avait été exploitée par un hacker malintentionné. C’est ce que vient de révéler l’entreprise Neodyme, avec la publication de leur rapport « How to Become a Millionaire, 0.000001 BTC at a Time ».
L’histoire commence il y a quelques mois, lorsque Simon, l’un des auditeurs de Neodyme, a découvert un bug dans Spl-token-lending. Pour rappel, Spl-token-lending est une suite de contrats permettant de déployer un protocole de lending sur Solana, s’insiprant du fonctionnement de Compound (COMP) et d’Aave (AAVE).
Concrètement, ces contrats permettent de déposer des jetons sur le protocole, en échange de cJetons qui représentent le dépôt. Par la suite, ces cJetons peuvent être renvoyés sur le protocole en échange des jetons initiaux.
Toutefois, les cJetons sont des objets complexes. En effet, en plus de faire référence au dépôt, les cJetons représentent les intérêts générés par un dépôt donné. Par conséquent, le ratio jetons/cJetons n’est pas de 1 pour 1.
« Alice dépose 2 SOL à un taux de change de 1,5, et reçoit 2 * 1,5 = 3 cSOL. Après quelques années de HODLing, Solana a atteint Mars, et Alice souhaite encaisser ses SOL qui ont pris de la valeur afin d’acheter quelques îles privées. Elle retire les 3 cSOL et les échange à un taux de change de 0,5 et reçoit 3/0,5 = 6 SOL. »
Exemple tiré du rapport de Neodyme
Détail de la faille
En réalité, la faille en question affectait le fonctionnement de Spl-token-lending. En effet, le contrat est codé de telle manière que les calculs de jetons sont arrondis à l’entier supérieur. Bien que cela n’ait que peu d’incidence dans le cas de jetons comme le SOL, cet arrondi peut avoir des conséquences dramatiques appliquées à d’autres jetons.
Par exemple, dans le cas du bitcoin (BTC) ou de l’ether (ETH), cet arrondi peut entrainer un écart de 0,005 à 0,05 dollar par transaction. De prime abord, ce chiffre ne semble pas si impressionnant que cela. Impossible d’imaginer titrer un article « Hécatombe sur Solana – 0,05 $ dérobés par un attaquant ».
Cependant, cet écart multiplié de nombreuses fois peut engendrer des pertes colossales. En effet, Solana permet d’effectuer plusieurs actions au sein d’une même transaction. Par conséquent, il serait possible d’effectuer 150 à 200 exécutions au sein d’une même transaction ce qui peut entrainer un écart de 7,5 dollars par transaction, dans le cas du bitcoin.
« Là, on parle ! Nous pouvons faire inclure cette transaction environ 300 fois par seconde, volant 7 500 dollars par seconde ou environ 27 millions de dollars par heure (soit une Lamborghini Huracan par minute). »
Rapport de Neodyme
Au total, Neodyme estime qu’environ 2,6 milliards de dollars étaient à risque, bien que « seuls » plusieurs centaines de millions de dollars disposaient de suffisamment de liquidités pour être exploités. Heureusement, tous les projets impactés par cette faille l’ont depuis corrigé, sans avoir été la cible d’une attaque.
Malheureusement, tout le monde ne profite pas d’une telle chance. Plus récemment, le protocole BadgerDAO a fait les frais d’une faille. Cette fois-ci, l’attaquant a réussi à drainer plus de 120 millions de dollars, en profitant d’une faille dans l’un des contrats du protocole.