BlockSec : Analyse du principe d'attaque de GMX

DeepFlowTech
GMX4,06%

Rédaction : BlockSec

GMX a subi une attaque de hacker, avec des pertes dépassant 40 millions de dollars. Les attaquants ont exploité une vulnérabilité de réentrance et ont ouvert une position courte dans le cadre de l’activation de la fonctionnalité de levier, pour mener l’attaque.

La racine du problème réside dans l’utilisation incorrecte de la fonction executeDecreaseOrder. Le premier paramètre de cette fonction aurait dû être un compte externe (EOA), mais l’attaquant a passé une adresse de contrat intelligent. Cela a permis à l’attaquant de réintégrer le système pendant le processus de rachat, de manipuler l’état interne, et finalement de racheter des actifs bien supérieurs à la valeur GLP qu’il détenait réellement.

Mécanisme de rachat normal GLP

Dans GMX, GLP est un jeton de fournisseur de liquidité, représentant une part des actifs de la trésorerie (comme USDC, ETH, WBTC). Lorsque les utilisateurs appellent unstakeAndRedeemGlp, le système utilise la formule suivante pour calculer la quantité d’actifs à restituer :

redeem_amount = (user_GLP / total_GLP_supply) * AUM

La méthode de calcul de l’AUM (Actifs sous gestion) est :

AUM = valeur totale de tous les pools de tokens + pertes non réalisées globales sur les shorts - gains non réalisés globaux sur les shorts - montant réservé - déduction prédéfinie (aumDeduction)

Ce mécanisme garantit que les détenteurs de GLP reçoivent une part proportionnelle des actifs réels du trésor.

Problèmes après l’activation du levier

Lorsque enableLeverage est activé, les utilisateurs peuvent ouvrir des positions à effet de levier (longues ou courtes). Avant de racheter le GLP, un attaquant a ouvert une position courte importante sur le WBTC.

Étant donné que l’ouverture d’une position courte augmente la taille globale des positions courtes, et que le prix n’ayant pas encore changé, le système considère par défaut que cette position courte est à perte, cette perte non réalisée sera comptabilisée comme « actif » du coffre, entraînant une augmentation artificielle de l’AUM. Bien que le coffre n’ait pas réellement acquis de valeur supplémentaire, le calcul des rachats sera basé sur cet AUM gonflé, permettant ainsi à l’attaquant d’obtenir des actifs bien supérieurs à ce qu’il devrait recevoir.

Processus d’attaque

attaque de transaction

Écrit à la fin

Cette attaque a révélé de graves défauts dans le mécanisme de levier et la conception de la protection contre la réentrance de GMX. Le problème central réside dans la confiance excessive accordée à la logique de rachat d’actifs vis-à-vis de l’AUM, sans effectuer de vérifications de sécurité suffisamment prudentes sur ses composants (comme les pertes non réalisées). De plus, l’hypothèse sur l’identité de l’appelant dans les fonctions clés (EOA vs contrat) manque également de vérification obligatoire. Cet événement rappelle une fois de plus aux développeurs qu’en matière d’opérations sensibles aux fonds, il est impératif de s’assurer que l’état du système ne peut pas être manipulé, surtout lors de l’introduction de logiques financières complexes (comme le levier et les dérivés), où il est encore plus crucial de se prémunir contre les risques systémiques liés à la réentrance et à la pollution de l’état.

Voir l'original
Avertissement : Les informations contenues dans cette page peuvent provenir de tiers et ne représentent pas les points de vue ou les opinions de Gate. Le contenu de cette page est fourni à titre de référence uniquement et ne constitue pas un conseil financier, d'investissement ou juridique. Gate ne garantit pas l'exactitude ou l'exhaustivité des informations et n'est pas responsable des pertes résultant de l'utilisation de ces informations. Les investissements en actifs virtuels comportent des risques élevés et sont soumis à une forte volatilité des prix. Vous pouvez perdre la totalité du capital investi. Veuillez comprendre pleinement les risques pertinents et prendre des décisions prudentes en fonction de votre propre situation financière et de votre tolérance au risque. Pour plus de détails, veuillez consulter l'avertissement.
Commentaire
0/400
Aucun commentaire