Analyse de l'attaque de réentrance par Prêts Flash sur le projet Jarvis Network
Récemment, une attaque contre le projet Jarvis Network a attiré l’attention de l’industrie. Selon la surveillance des données on-chain, l’attaque s’est produite le 15 janvier 2023, entraînant une perte de 663 101 jetons MATIC pour le projet.
En analysant la pile d'appels des transactions d'attaque, nous avons découvert que l'attaquant a utilisé une combinaison de Prêts Flash et de vulnérabilités de réentrance. Lors du retrait de liquidités, l'attaquant a réussi à exécuter une attaque par réentrance, entraînant des valeurs complètement différentes retournées par la même fonction avant et après la réentrance.
En creusant plus profondément, il s’avère que le problème réside dans la fonction remove_liquidity. Cette fonction est responsable de la suppression de la liquidité et du retour des jetons de l’utilisateur. Étant donné que la chaîne Polygon est compatible EVM, la logique de ré-entrée du contrat est déclenchée pendant le processus de transfert.
La vulnérabilité clé réside dans la variable self.D utilisée pour le calcul des prix. Normalement, self.D devrait être mis à jour en temps opportun lors du retrait de liquidités. Cependant, en raison d'un défaut de logique dans le code, la mise à jour de self.D a été retardée jusqu'après l'appel externe. Cela a donné aux attaquants l'opportunité d'insérer des opérations au milieu, en profitant de la valeur non mise à jour de self.D pour effectuer des arbitrages.
Bien que la fonction remove_liquidity utilise le décorateur @nonreentrant('lock') pour prévenir les réentrées, des attaquants ont habilement contourné ce mécanisme de protection. Ils ont contourné la restriction du verrou de réentrées en réentrant dans les fonctionnalités de prêt d'autres contrats, plutôt que de réentraîner directement la fonction remove_liquidity elle-même.
L’attaque met en évidence l’importance de plusieurs principes de sécurité clés dans le développement de contrats intelligents :
Suivez strictement le modèle Vérifications-Effets-Interactions.
Assurez-vous que la mise à jour des variables clés est effectuée avant tout appel externe.
Utiliser plusieurs sources de données pour obtenir les prix, afin d'améliorer la robustesse du système.
Un audit de sécurité complet est essentiel pour trouver et corriger les vulnérabilités potentielles.
Cet incident est un autre rappel que la sécurité est toujours une priorité absolue dans l’écosystème blockchain en pleine croissance. L’équipe de développement du projet doit surveiller en permanence les dernières pratiques de sécurité et effectuer régulièrement des revues de code et des tests de vulnérabilité pour garantir la sécurité des actifs des utilisateurs.
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.
6 J'aime
Récompense
6
7
Partager
Commentaire
0/400
MidnightSnapHunter
· 07-18 10:01
Les bogues de contrat sont vraiment difficiles à éviter.
Voir l'originalRépondre0
StablecoinEnjoyer
· 07-17 23:27
Un autre projet a été piraté.
Voir l'originalRépondre0
OnChainSleuth
· 07-17 00:48
Un autre projet a été complètement siphonné.
Voir l'originalRépondre0
shadowy_supercoder
· 07-17 00:40
Tsk, encore une attaque par réentrance, on n'apprend vraiment pas.
Voir l'originalRépondre0
DeFi_Dad_Jokes
· 07-17 00:37
Un autre projet a explosé~
Voir l'originalRépondre0
DecentralizeMe
· 07-17 00:30
Encore une fois, nous avons été envahis.
Voir l'originalRépondre0
0xSherlock
· 07-17 00:24
Hé, encore une fois on se fait prendre pour des cons.
Le réseau Jarvis a subi une attaque de réentrance par prêts flash, entraînant une perte de 660 000 jetons MATIC.
Analyse de l'attaque de réentrance par Prêts Flash sur le projet Jarvis Network
Récemment, une attaque contre le projet Jarvis Network a attiré l’attention de l’industrie. Selon la surveillance des données on-chain, l’attaque s’est produite le 15 janvier 2023, entraînant une perte de 663 101 jetons MATIC pour le projet.
En analysant la pile d'appels des transactions d'attaque, nous avons découvert que l'attaquant a utilisé une combinaison de Prêts Flash et de vulnérabilités de réentrance. Lors du retrait de liquidités, l'attaquant a réussi à exécuter une attaque par réentrance, entraînant des valeurs complètement différentes retournées par la même fonction avant et après la réentrance.
! Analyse de l’incident d’attaque de réentrée de prêt Flash Jarvis Network
En creusant plus profondément, il s’avère que le problème réside dans la fonction remove_liquidity. Cette fonction est responsable de la suppression de la liquidité et du retour des jetons de l’utilisateur. Étant donné que la chaîne Polygon est compatible EVM, la logique de ré-entrée du contrat est déclenchée pendant le processus de transfert.
La vulnérabilité clé réside dans la variable self.D utilisée pour le calcul des prix. Normalement, self.D devrait être mis à jour en temps opportun lors du retrait de liquidités. Cependant, en raison d'un défaut de logique dans le code, la mise à jour de self.D a été retardée jusqu'après l'appel externe. Cela a donné aux attaquants l'opportunité d'insérer des opérations au milieu, en profitant de la valeur non mise à jour de self.D pour effectuer des arbitrages.
Bien que la fonction remove_liquidity utilise le décorateur @nonreentrant('lock') pour prévenir les réentrées, des attaquants ont habilement contourné ce mécanisme de protection. Ils ont contourné la restriction du verrou de réentrées en réentrant dans les fonctionnalités de prêt d'autres contrats, plutôt que de réentraîner directement la fonction remove_liquidity elle-même.
! Analyse de l’incident d’attaque de réentrée de prêt Flash Jarvis Network
L’attaque met en évidence l’importance de plusieurs principes de sécurité clés dans le développement de contrats intelligents :
Cet incident est un autre rappel que la sécurité est toujours une priorité absolue dans l’écosystème blockchain en pleine croissance. L’équipe de développement du projet doit surveiller en permanence les dernières pratiques de sécurité et effectuer régulièrement des revues de code et des tests de vulnérabilité pour garantir la sécurité des actifs des utilisateurs.
! Analyse de l’incident d’attaque de réentrée de prêt Flash Jarvis Network