
BlockSec : Analyse des principes de l'attaque contre GMX
TechFlow SélectionTechFlow Sélection

BlockSec : Analyse des principes de l'attaque contre GMX
Cette attaque a révélé de graves failles dans la conception du mécanisme de levier et de la protection contre la réentrance de GMX.
Rédaction : BlockSec
GMX a été victime d'une attaque de piratage entraînant une perte supérieure à 40 millions de dollars. L'attaquant a exploité une vulnérabilité de réentrance, en ouvrant une position courte avec effet de levier activé sur le contrat, afin de mener à bien son attaque.
La racine du problème réside dans une mauvaise utilisation de la fonction executeDecreaseOrder. Le premier paramètre de cette fonction aurait dû être un compte externe (EOA), mais l'attaquant y a transmis une adresse de contrat intelligent. Cela lui a permis de réentrer dans le système pendant le processus de rachat, manipulant ainsi l'état interne du contrat, et finalement retirer des actifs largement supérieurs à la valeur réelle de ses GLP détenus.
Mécanisme normal de rachat des GLP
Dans GMX, les GLP sont des jetons destinés aux fournisseurs de liquidités, représentant une part des actifs du coffre-fort (comme USDC, ETH, WBTC). Lorsqu'un utilisateur appelle la fonction unstakeAndRedeemGlp, le système calcule la quantité d'actifs à restituer selon la formule suivante :
montant_rachat = (GLP_utilisateur / offre_totale_GLP) * AUM
Où AUM (Actif Sous Gestion) est calculé comme suit :
AUM = Valeur totale de tous les pools de tokens + Pertes non réalisées globales sur positions courtes - Gains non réalisés globaux sur positions courtes - Montants réservés - Déduction prédéfinie (aumDeduction)
Ce mécanisme garantit que les détenteurs de GLP reçoivent proportionnellement leur part réelle des actifs du coffre-fort.
Problème après activation du levier
Lorsque l'option enableLeverage est activée, les utilisateurs peuvent ouvrir des positions à effet de levier (longues ou courtes). Avant de racheter ses GLP, l'attaquant avait ouvert une importante position courte sur WBTC.
Le fait d'ouvrir une position courte augmente immédiatement l'exposition globale à la vente à découvert. Sans changement de prix, le système considère par défaut cette position comme perdante, et cette perte non réalisée est alors comptabilisée comme un « actif » du coffre-fort, ce qui gonfle artificiellement l'AUM. Bien que le coffre-fort n'ait pas réellement acquis de valeur supplémentaire, le calcul du rachat s'appuie sur cet AUM surestimé, permettant ainsi à l'attaquant d'obtenir des actifs bien supérieurs à ce qu'il était en droit d'attendre.
Déroulement de l'attaque
Transaction de l'attaque
https://app.blocksec.com/explorer/tx/arbitrum/0x03182d3f0956a91c4e4c8f225bbc7975f9434fab042228c7acdc5ec9a32626ef?line=93


Conclusion
Cette attaque a mis en lumière de graves failles dans la conception du mécanisme de levier et dans la protection contre la réentrance chez GMX. Le problème central tient à une confiance excessive accordée par la logique de rachat des actifs à l'AUM, sans vérification suffisamment rigoureuse de ses composantes (telles que les pertes non réalisées). En outre, l'hypothèse implicite concernant l'identité de l'appelant dans certaines fonctions critiques (EOA vs contrat) ne fait pas l'objet d'une validation obligatoire. Cet incident rappelle une fois de plus aux développeurs qu'il est impératif, lors d'opérations sensibles impliquant des fonds, d'assurer que l'état du système ne puisse pas être manipulé — d'autant plus lorsque des logiques financières complexes (levier, produits dérivés) sont introduites, où il devient crucial de se prémunir strictement contre les risques systémiques liés à la réentrance et à la corruption d'état.
Bienvenue dans la communauté officielle TechFlow
Groupe Telegram :https://t.me/TechFlowDaily
Compte Twitter officiel :https://x.com/TechFlowPost
Compte Twitter anglais :https://x.com/BlockFlow_News














