Jarvis Network a subi une attaque de réentrance via Prêts Flash, entraînant une perte de 663,101 MATIC.

robot
Création du résumé en cours

Analyse de l'attaque par réentrance des Prêts Flash sur le projet Jarvis Network

Les données montrent qu'au 15 janvier 2023 à 17:43:37 UTC, le projet Jarvis_Network a été attaqué, entraînant une perte de 663 101 MATIC.

En analysant la pile d'appels de transaction, il a été constaté qu'il existe une logique de réentrance lors du processus de retrait de liquidité. Avant et après la réentrance, l'appel de la même fonction sur le même contrat avec les mêmes paramètres entraîne des valeurs de retour très différentes :

  • Avant la réinsertion : 1,002,157,321,772,769,944
  • Réentré : 10,091,002,696,492,234,934

Analyse de l'incident d'attaque par réinjection de Prêts Flash de Jarvis Network

La réinjection se produit dans la fonction remove_liquidity. Cette fonction renvoie les tokens ajoutés par l'utilisateur lors de la suppression de la liquidité. Étant donné que Polygon et EVM sont des chaînes isomorphes, le transfert de MATIC au contrat déclenchera la réinjection du contrat.

Une analyse approfondie a révélé que le problème résidait dans l'implémentation de la fonction getUnderlyingPrice. Cette fonction implique une série de calculs internes et d'appels externes, dont la clé est la valeur de retour de la fonction get_virtual_price.

Analyse de l'incident d'attaque par réinjection de Prêts Flash de Jarvis Network

La valeur de retour de la fonction get_virtual_price est influencée par la variable self.D. Dans la fonction remove_liquidity, la mise à jour de self.D se produit après le transfert de jetons. Lors de la suppression de la liquidité, MATIC est transféré au contrat d'attaque, et lors de l'appel de fallback, le prix du jeton est d'abord interrogé. Comme self.D n'a pas encore été mis à jour, cela entraîne une erreur dans l'obtention du prix.

Analyse de l'incident d'attaque par réentrance de Prêts Flash Jarvis Network

Processus de la fonction remove_liquidity :

  1. Détruire le LP de l'utilisateur
  2. Envoyer les fonds de mise en jeu des utilisateurs
  3. Mettre à jour self.D

L'attaquant a effectué une réinjection à l'étape 2, utilisant une valeur self.D non mise à jour pour emprunter et obtenir des fonds équivalents à 10 fois le prix normal.

Analyse de l'événement d'attaque par réentrance des Prêts Flash de Jarvis Network

Bien que la fonction remove_liquidity utilise @nonreentrant('lock') pour empêcher les réentrées, l'attaquant a contourné ce mécanisme de protection par des réentrées inter-contrats.

Analyse de l'incident d'attaque par réinjection des Prêts Flash de Jarvis Network

Cette attaque a révélé plusieurs problèmes clés :

  1. La logique de modification des variables après l'appel externe a entraîné une anomalie dans l'obtention des prix.
  2. La réentrance inter-contrat rend le verrou de réentrance inefficace
  3. Ne pas suivre le modèle "Vérifications-Effectifs-Interactions" (Checks-Effects-Interactions)

Analyse de l'incident d'attaque par réinjection de Prêts Flash de Jarvis Network

Pour améliorer la sécurité, l'équipe du projet doit :

  • Effectuer un audit de sécurité rigoureux
  • Placez la modification de la variable avant l'appel externe.
  • Utiliser plusieurs sources de données pour obtenir les prix
  • Suivre la norme de codage "d'abord juger, puis écrire dans la variable, puis effectuer l'appel externe".

Analyse de l'incident d'attaque par réentrance des Prêts Flash de Jarvis Network

Grâce à ces mesures, il est possible d'améliorer considérablement la sécurité et la stabilité du projet, tout en prévenant efficacement des attaques similaires.

Analyse de l'événement d'attaque par réinsertion de Prêts Flash de Jarvis Network

Analyse de l'incident d'attaque par réentrance des Prêts Flash de Jarvis Network

Analyse de l'événement d'attaque par réinjection de Prêts Flash de Jarvis Network

Analyse de l'attaque par réinjection des Prêts Flash de Jarvis Network

Analyse de l'événement d'attaque par réentrance des Prêts Flash de Jarvis Network

Voir l'original
Cette page peut inclure du contenu de tiers fourni à des fins d'information uniquement. Gate ne garantit ni l'exactitude ni la validité de ces contenus, n’endosse pas les opinions exprimées, et ne fournit aucun conseil financier ou professionnel à travers ces informations. Voir la section Avertissement pour plus de détails.
  • Récompense
  • 5
  • Partager
Commentaire
0/400
DisillusiionOraclevip
· 07-25 05:19
Encore des poissons ont été tués par une explosion.
Voir l'originalRépondre0
FlatlineTradervip
· 07-23 14:13
Encore un pigeon qui a pris son repas à emporter.
Voir l'originalRépondre0
MidnightGenesisvip
· 07-23 14:09
Le niveau d'obfuscation du code n'est pas suffisant, cela aurait dû se produire plus tôt.
Voir l'originalRépondre0
CryptoGoldminevip
· 07-23 13:59
Une nouvelle preuve de données : pertes de revenus de 65 000 liées aux smart contracts.
Voir l'originalRépondre0
TooScaredToSellvip
· 07-23 13:50
Encore un plancher chute à zéro
Voir l'originalRépondre0
Trader les cryptos partout et à tout moment
qrCode
Scan pour télécharger Gate app
Communauté
Français (Afrique)
  • 简体中文
  • English
  • Tiếng Việt
  • 繁體中文
  • Español
  • Русский
  • Français (Afrique)
  • Português (Portugal)
  • Bahasa Indonesia
  • 日本語
  • بالعربية
  • Українська
  • Português (Brasil)