Le dernier hack en date est celui du protocole LeetSwap, le plus gros échange décentralisé (DEX) hébergé par le réseau Base de Coinbase (une blockchain de couche 2 qui vise à réduire les coûts et les délais des transactions sur Ethereum). Il y a quelques heures, l’équipe de LeetSwap a annoncé une pause en urgence des échanges, après avoir constaté qu’un attaquant avait réussi à voler environ 342 ETH, d’une valeur de plus de 630 000 dollars, en exploitant une faille dans le contrat intelligent qui gère l’échange.
Le modus operandi du hacker de LeetSwap
Comment l’attaquant a-t-il procédé pour dérober ces fonds cette fois ? Selon les premiers éléments réunis par PeckShield, et analysés par le chercheur de Wintermute Igor Igambediev, l’attaquant s’y est pris de manière assez inattendue.
▶ Il a d’abord échangé un peu d’ETH contre des jetons X, qui sont des jetons qui ont des frais associés. Cela lui a permis d’obtenir des jetons X sans payer les frais.
▶ Il a ensuite utilisé une fonction du contrat intelligent de LeetSwap, qui est le programme qui gère les échanges sur la plateforme, pour envoyer les jetons X vers un autre contrat intelligent, appelé contrat de frais. Ce contrat sert à collecter les frais des échanges et à les redistribuer aux utilisateurs.
▶ Dans la foulée, il a appelé une autre fonction du contrat intelligent de LeetSwap, qui sert à mettre à jour les réserves du pool. Cette fonction (dite sync())a créé un déséquilibre entre les actifs du pool, en faisant croire qu’il y avait plus d’ETH que de jetons X.
▶ Enfin, le hacker a échangé les jetons X qu’il avait envoyés vers le contrat de frais contre tout l’ETH du pool, en profitant du déséquilibre créé par la fonction précédente. Il a répété cette opération pour plusieurs pools de liquidité, en volant au total environ 340 ETH.
Mais comment l’attaque a-t-elle été possible ? Tout simplement parce que la fonction qui permet d’envoyer des jetons vers le contrat de frais (dite _transferFeesSupportingTaxTokens(address, uint256)) était disponible de manière publique, c’est-à-dire qu’elle pouvait être appelée par n’importe qui, et non interne ou privée comme elle peut l’être sur n’importe quel protocole DeFi sérieux.
It was easy:
– swap a bit of WETH for X tokens (should have fees)
– call _transferFeesSupportingTaxTokens(address, uint256) to move token to a Fees contract
– call sync()
– swap X tokens for all WETH from the poolDon’t think that this function should be public
GG WP pic.twitter.com/a7vXvWf0HY
— Igor Igamberdiev (@FrankResearcher) August 1, 2023
Les répercussions du hack pour le réseau Base, deux semaines après l’ouverture de son mainnet
Le monde des cryptomonnaies est souvent comparé à un Far West numérique, où les opportunités de profit côtoient les risques de perte. Et le hack de LeetSwap semble étroitement lié au jeton BALD.
Hier, nous parlions dans nos colonnes de ce jeton de type mème qui avait imprimé une hausse délirante de 3.000.000%, suivie d’une chute verticale, dans ce qui est aujourd’hui un rug pull avéré (une forme de fraude dans laquelle les développeurs retirent soudainement la liquidité et repartent avec la caisse).
Le développeur de BALD aurait retiré plus de 7000 ETH du pool de liquidité contennt les jetons BALD sur LeetSwap, faisant chuter le prix du jeton de 95%. Par contrecoup, l’opération a fait plonger le jeton LEET, le jeton natif du DEX LeetSwap, qui a effacé près de 52% de sa valeur en une nuit.
Pour ne rien arranger, le hack de LeetSwap a soulevé des doutes sur la sécurité et la fiabilité du réseau Base et des projets qui y sont construits. Il faut dire que LeetSwap est un fork (une copie modifiée) de Solidly, un protocole décentralisé pair à pair qui permet aux gens de créer de la liquidité et d’échanger des jetons ERC-20 sur Ethereum. Or d’’autres projets ont forké Solidly et sont donc théoriquement vulnérables à la même faille que LeetSwap …
Ouvert aux développeurs il y a deux semaines, le mainnet de Base sert de surcouche à Ethereum. L’objectif ? Réduire les coûts et les délais des transactions sur Ethereum, en utilisant un mécanisme de validation optimiste. Cela signifie que les transactions sont considérées comme valides par défaut, sauf si quelqu’un prouve le contraire. Cela permet d’accélérer les échanges et de diminuer les frais, mais cela implique aussi un risque plus élevé d’erreurs ou de fraudes.
Sources : Igor Igambediev, PeckShield
Sur le même sujet :
- Le créateur de BALD retire des millions de dollars de liquidité, le jeton chute de 90%
- Coinbase : ouverture de la version mainnet du réseau Base