Un contrat intelligent de l’application de finance décentralisée (DeFi) SushiSwap a été exploité dimanche 9 avril au matin, selon les développeurs. L’exploitation concerne le contrat « RouterProcessor2 », utilisé pour effectuer le routage des échanges sur SushiSwap. La société de sécurité PeckShield a signalé un bug lié à la fonction « approve » du contrat, entraînant une perte de plus de 3,3 millions de dollars.
D’après plusieurs tweets de différentes sociétés de sécurité, les 3,3 millions de dollars appartiendraient un seul utilisateur, @0xsifu, un trader populaire dans l’écosystème Crypto Twitter à l’origine d’autres dramas comme la célèbre affaire QuadrigaCX, un exchange Canadien ayant disparu avec 169 millions de dollars de fonds.
Le développeur DefiLlama, @0xngmi, a déclaré que l’exploitation ne semblait affecter que les utilisateurs qui avaient approuvé les contrats SushiSwap au cours des 4 derniers jours.
Le responsable du développement de SushiSwap, Jared Grey, a demandé aux utilisateurs de révoquer les autorisations pour tous les contrats sur SushiSwap par mesure de sécurité, ajoutant que l’équipe de Sushiswap travaillait avec des experts en sécurité pour atténuer le problème.
La faille a été déployée sur plus blockchains EVM compatibles
PeckShield a rapporté que le contrat exploité avait été déployé sur plusieurs chaînes, notamment Ethereum (ETH), BNB Chain (BNB), Polygon (MATIC), Fantom (FTM) et Avalanche (AVAX). Vous pouvez retrouver sur ce Github la liste précise des contrats à révoquer.
L’analyste Kevin Peng (The Block Research) a rapporté que 190 adresses Ethereum ont approuvé le contrat problématique et plus de 2000 adresses sur le Layer 2 Arbitrum ont également autorisé le contrat.
Suite à l’annonce de cette exploitation, le jeton SUSHI a chuté de 6 % en 24 heures, atteignant 1,10 $ au moment de la rédaction.
La société de cybersécurité Ancilla a donné une explication plus technique de ce qui s’est passé, indiquant que la cause principale résidait dans la fonction interne « swap() » qui appelait « swapUniV3() » pour définir la variable « lastCalledPool » au niveau de l'emplacement de stockage 0x00. Plus tard, dans la fonction « swap3callback », la vérification des autorisations était contournée.
Résumé : Une faille dans le contrat RouterProcessor2 de SushiSwap a provoqué une perte de 3,3 millions de dollars pour les utilisateurs, entraînant une chute du jeton SUSHI de 6 %. Les utilisateurs sont invités à révoquer les autorisations pour tous les contrats.