Euler Finance a subi une attaque par prêts flash, avec une perte de près de 200 millions de dollars.
Le 13 mars 2023, le projet Euler Finance a subi une attaque par prêts flash en raison d'une vulnérabilité dans son contrat intelligent, entraînant une perte d'environ 197 millions de dollars. L'attaquant a exploité la vulnérabilité du manque de vérification de liquidité dans la fonction donateToReserves du contrat, obtenant d'énormes profits grâce à de multiples opérations.
Analyse du processus d'attaque
L'attaquant a d'abord emprunté 30 millions de DAI via un Prêt Flash sur une plateforme de prêt, puis a déployé deux contrats : un contrat de prêt et un contrat de liquidation.
Payer 20 millions de DAI empruntés dans le contrat du protocole Euler, pour obtenir environ 19,5 millions d'eDAI.
Utilisez 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 l'équivalent de dDAI, puis emprunter à nouveau la même quantité de eDAI et dDAI.
Appeler la fonction donateToReserves pour faire un don de 100 millions d'eDAI, puis procéder à la liquidation via la fonction liquidate, afin d'obtenir 310 millions de dDAI et 250 millions d'eDAI.
Enfin, retirer 38,9 millions de DAI, rembourser les 30 millions de DAI du Prêts Flash, et réaliser un bénéfice net d'environ 8,87 millions de DAI.
Raison de la vulnérabilité
La principale raison du succès de l'attaque est que la fonction donateToReserves manque de vérifications de liquidité nécessaires. Contrairement à d'autres fonctions clés (comme mint), donateToReserves n'appelle pas la fonction checkLiquidity pour valider l'état de liquidité de l'utilisateur. Cela permet à l'attaquant de manipuler son propre compte pour entrer dans un état pouvant être liquidé et d'en tirer profit.
Dans des conditions normales, la fonction checkLiquidity appelle le module RiskManager pour s'assurer que le nombre d'Etoken de l'utilisateur est supérieur au nombre de Dtoken, afin de maintenir la santé du compte. Cependant, la fonction donateToReserves a sauté cette étape cruciale, créant ainsi une opportunité pour une attaque.
Leçons et conseils
Cet événement met de nouveau en évidence l'importance des audits de sécurité des contrats intelligents. Pour les projets de prêt, il est particulièrement nécessaire de se concentrer sur les aspects suivants :
L'intégrité du mécanisme de remboursement des fonds
Exhaustivité de la détection de liquidité
Sécurité du processus de liquidation de la dette
Avant le lancement du contrat, l'équipe du projet doit effectuer un audit de sécurité complet et rigoureux afin d'assurer la sécurité et la stabilité du contrat. De plus, une surveillance continue de la sécurité et des corrections rapides des vulnérabilités sont également indispensables.
Avec le développement rapide de la finance décentralisée, des événements de sécurité similaires pourraient continuer à se produire. Les développeurs et les équipes de projet doivent rester vigilants, apprendre et s'améliorer continuellement afin de construire un écosystème blockchain plus sûr et plus fiable.
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.
5 J'aime
Récompense
5
6
Reposter
Partager
Commentaire
0/400
ChainComedian
· Il y a 10h
Encore un projet de bull qui a échoué.
Voir l'originalRépondre0
OfflineNewbie
· Il y a 10h
Les pigeons ont encore été pris pour des idiots~
Voir l'originalRépondre0
SmartMoneyWallet
· Il y a 10h
197 millions de dollars ? Cette méthode d'opération est trop basique, mais le montant des fonds n'est pas négligeable.
Euler Finance a subi une attaque par Prêts Flash de 200 millions de dollars, la vulnérabilité des smart contracts étant la cause.
Euler Finance a subi une attaque par prêts flash, avec une perte de près de 200 millions de dollars.
Le 13 mars 2023, le projet Euler Finance a subi une attaque par prêts flash en raison d'une vulnérabilité dans son contrat intelligent, entraînant une perte d'environ 197 millions de dollars. L'attaquant a exploité la vulnérabilité du manque de vérification de liquidité dans la fonction donateToReserves du contrat, obtenant d'énormes profits grâce à de multiples opérations.
Analyse du processus d'attaque
L'attaquant a d'abord emprunté 30 millions de DAI via un Prêt Flash sur une plateforme de prêt, puis a déployé deux contrats : un contrat de prêt et un contrat de liquidation.
Payer 20 millions de DAI empruntés dans le contrat du protocole Euler, pour obtenir environ 19,5 millions d'eDAI.
Utilisez 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 l'équivalent de dDAI, puis emprunter à nouveau la même quantité de eDAI et dDAI.
Appeler la fonction donateToReserves pour faire un don de 100 millions d'eDAI, puis procéder à la liquidation via la fonction liquidate, afin d'obtenir 310 millions de dDAI et 250 millions d'eDAI.
Enfin, retirer 38,9 millions de DAI, rembourser les 30 millions de DAI du Prêts Flash, et réaliser un bénéfice net d'environ 8,87 millions de DAI.
Raison de la vulnérabilité
La principale raison du succès de l'attaque est que la fonction donateToReserves manque de vérifications de liquidité nécessaires. Contrairement à d'autres fonctions clés (comme mint), donateToReserves n'appelle pas la fonction checkLiquidity pour valider l'état de liquidité de l'utilisateur. Cela permet à l'attaquant de manipuler son propre compte pour entrer dans un état pouvant être liquidé et d'en tirer profit.
Dans des conditions normales, la fonction checkLiquidity appelle le module RiskManager pour s'assurer que le nombre d'Etoken de l'utilisateur est supérieur au nombre de Dtoken, afin de maintenir la santé du compte. Cependant, la fonction donateToReserves a sauté cette étape cruciale, créant ainsi une opportunité pour une attaque.
Leçons et conseils
Cet événement met de nouveau en évidence l'importance des audits de sécurité des contrats intelligents. Pour les projets de prêt, il est particulièrement nécessaire de se concentrer sur les aspects suivants :
Avant le lancement du contrat, l'équipe du projet doit effectuer un audit de sécurité complet et rigoureux afin d'assurer la sécurité et la stabilité du contrat. De plus, une surveillance continue de la sécurité et des corrections rapides des vulnérabilités sont également indispensables.
Avec le développement rapide de la finance décentralisée, des événements de sécurité similaires pourraient continuer à se produire. Les développeurs et les équipes de projet doivent rester vigilants, apprendre et s'améliorer continuellement afin de construire un écosystème blockchain plus sûr et plus fiable.