Euler Finance a subi une attaque par Prêts Flash, avec des pertes de près de 200 millions de dollars.
Le 13 mars 2023, le projet Euler Finance a subi une importante attaque par prêts flash. Selon les données de surveillance en chaîne, l'attaquant a exploité une vulnérabilité dans le contrat du projet, réussissant à voler environ 197 millions de dollars de fonds, impliquant 6 types de jetons différents.
Analyse du processus d'attaque
L'attaquant a d'abord obtenu un prêt flash de 30 millions de DAI d'une plateforme de prêt, puis a déployé deux contrats clés : un pour les opérations de prêt et l'autre pour la liquidation.
Les principales étapes de l'attaque sont les suivantes :
Pousser 20 millions de DAI dans le contrat Euler Protocol, obtenir 19,5 millions d'eDAI.
Utiliser la fonction de levier de 10x du protocole Euler pour emprunter 195,6 millions d'eDAI et 200 millions de dDAI.
Utiliser les 10 millions de DAI restants pour rembourser une partie de la dette et détruire le dDAI correspondant.
Emprunter à nouveau une quantité équivalente d'eDAI et de dDAI.
Faire un don de 100 millions d'eDAI via la fonction donateToReserves, puis appeler la fonction liquidate pour procéder à la liquidation et obtenir 310 millions de dDAI et 250 millions d'eDAI.
Enfin, extraction de 38,9 millions de DAI, remboursement de 30 millions de Prêts Flash, bénéfice net d'environ 8,87 millions de DAI.
Analyse des causes de la vulnérabilité
La vulnérabilité centrale de cette attaque réside dans le fait que la fonction donateToReserves du contrat Euler Finance manque de vérifications de liquidité nécessaires. Comparée à d'autres fonctions clés (comme la fonction mint), la fonction donateToReserves n'exécute pas l'opération checkLiquidity, ce qui permet aux attaquants de manipuler l'état de leur compte pour répondre aux conditions de liquidation.
En temps normal, la fonction checkLiquidity appelle le module RiskManager pour s'assurer que le nombre d'eTokens de l'utilisateur est toujours supérieur au nombre de dTokens. Cependant, en raison de l'absence de cette étape clé dans la fonction donateToReserves, les attaquants ont pu contourner le mécanisme de sécurité et réaliser des profits indus.
Conseils de sécurité
Pour faire face à ce type d'attaque, les projets de blockchain devraient :
Effectuer un audit de sécurité complet avant le lancement du contrat, afin d'assurer la qualité et la sécurité du code.
Accordez une attention particulière aux étapes clés telles que le remboursement des fonds, la détection de la liquidité et le règlement des dettes dans les projets de prêt.
Assurez-vous que toutes les fonctions susceptibles d'affecter l'état des actifs des utilisateurs contiennent les étapes de vérification de sécurité nécessaires.
Effectuer régulièrement des revues de code et des analyses de vulnérabilité, et corriger rapidement les risques potentiels.
Envisagez d'introduire des mécanismes de signature multiple ou des verrouillages temporels comme mesures de sécurité supplémentaires, afin de prévoir un temps de tampon pour faire face aux situations d'urgence.
Cet événement met à nouveau en évidence l'importance de la sécurité des contrats intelligents. Les équipes de projet doivent toujours placer la sécurité en priorité, en construisant ensemble un écosystème Web3 plus sûr et plus fiable grâce à des pratiques de sécurité continues et à l'innovation technique.
This page may contain third-party content, which is provided for information purposes only (not representations/warranties) and should not be considered as an endorsement of its views by Gate, nor as financial or professional advice. See Disclaimer for details.
17 J'aime
Récompense
17
5
Partager
Commentaire
0/400
liquidation_surfer
· 07-11 22:36
Prêts Flash encore en problème
Voir l'originalRépondre0
ZKSherlock
· 07-11 21:59
L'audit des contrats n'est pas assez strict.
Voir l'originalRépondre0
ResearchChadButBroke
· 07-10 21:58
Il est vraiment difficile de se protéger contre les vulnérabilités des contrats.
Euler Finance a subi une attaque de Prêts Flash de 197 millions de dollars à cause d'une vulnérabilité dans la fonction donateToReserves.
Euler Finance a subi une attaque par Prêts Flash, avec des pertes de près de 200 millions de dollars.
Le 13 mars 2023, le projet Euler Finance a subi une importante attaque par prêts flash. Selon les données de surveillance en chaîne, l'attaquant a exploité une vulnérabilité dans le contrat du projet, réussissant à voler environ 197 millions de dollars de fonds, impliquant 6 types de jetons différents.
Analyse du processus d'attaque
L'attaquant a d'abord obtenu un prêt flash de 30 millions de DAI d'une plateforme de prêt, puis a déployé deux contrats clés : un pour les opérations de prêt et l'autre pour la liquidation.
Les principales étapes de l'attaque sont les suivantes :
Pousser 20 millions de DAI dans le contrat Euler Protocol, obtenir 19,5 millions d'eDAI.
Utiliser la fonction de levier de 10x du protocole Euler pour emprunter 195,6 millions d'eDAI et 200 millions de dDAI.
Utiliser les 10 millions de DAI restants pour rembourser une partie de la dette et détruire le dDAI correspondant.
Emprunter à nouveau une quantité équivalente d'eDAI et de dDAI.
Faire un don de 100 millions d'eDAI via la fonction donateToReserves, puis appeler la fonction liquidate pour procéder à la liquidation et obtenir 310 millions de dDAI et 250 millions d'eDAI.
Enfin, extraction de 38,9 millions de DAI, remboursement de 30 millions de Prêts Flash, bénéfice net d'environ 8,87 millions de DAI.
Analyse des causes de la vulnérabilité
La vulnérabilité centrale de cette attaque réside dans le fait que la fonction donateToReserves du contrat Euler Finance manque de vérifications de liquidité nécessaires. Comparée à d'autres fonctions clés (comme la fonction mint), la fonction donateToReserves n'exécute pas l'opération checkLiquidity, ce qui permet aux attaquants de manipuler l'état de leur compte pour répondre aux conditions de liquidation.
En temps normal, la fonction checkLiquidity appelle le module RiskManager pour s'assurer que le nombre d'eTokens de l'utilisateur est toujours supérieur au nombre de dTokens. Cependant, en raison de l'absence de cette étape clé dans la fonction donateToReserves, les attaquants ont pu contourner le mécanisme de sécurité et réaliser des profits indus.
Conseils de sécurité
Pour faire face à ce type d'attaque, les projets de blockchain devraient :
Effectuer un audit de sécurité complet avant le lancement du contrat, afin d'assurer la qualité et la sécurité du code.
Accordez une attention particulière aux étapes clés telles que le remboursement des fonds, la détection de la liquidité et le règlement des dettes dans les projets de prêt.
Assurez-vous que toutes les fonctions susceptibles d'affecter l'état des actifs des utilisateurs contiennent les étapes de vérification de sécurité nécessaires.
Effectuer régulièrement des revues de code et des analyses de vulnérabilité, et corriger rapidement les risques potentiels.
Envisagez d'introduire des mécanismes de signature multiple ou des verrouillages temporels comme mesures de sécurité supplémentaires, afin de prévoir un temps de tampon pour faire face aux situations d'urgence.
Cet événement met à nouveau en évidence l'importance de la sécurité des contrats intelligents. Les équipes de projet doivent toujours placer la sécurité en priorité, en construisant ensemble un écosystème Web3 plus sûr et plus fiable grâce à des pratiques de sécurité continues et à l'innovation technique.