Euler Finance a subi une attaque de prêt flash, avec des pertes d'environ 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 significative d'environ 197 millions de dollars. L'attaquant a exploité une faille dans la fonction donateToReserves du contrat, qui manquait de vérification de liquidité, pour réaliser l'attaque par plusieurs opérations.
Analyse du processus d'attaque
Les principales étapes de l'attaquant sont les suivantes :
Emprunter 30 millions de DAI via Prêts Flash d'une plateforme de prêt, et déployer deux contrats pour le prêt et la liquidation.
Payer 20 millions de DAI dans le contrat du protocole Euler, obtenir 19,5 millions d'eDAI.
Utiliser la fonction de levier de 10x du protocole Euler pour emprunter 195,6 millions eDAI et 200 millions dDAI.
Rembourser une partie de la dette avec les 10 millions de DAI restants, détruire le dDAI correspondant, puis emprunter à nouveau une quantité équivalente d'eDAI et de dDAI.
Faire un don de 100 millions eDAI via la fonction donateToReserves, puis appeler la fonction liquidate pour procéder à la liquidation, obtenant 310 millions dDAI et 250 millions 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.
Causes de la vulnérabilité
Le cœur de l'attaque réside dans le fait que la fonction donateToReserves du contrat Euler Finance manque de vérification de liquidité nécessaire. Contrairement à d'autres fonctions clés (comme mint), la fonction donateToReserves n'appelle pas checkLiquidity pour valider la liquidité de l'utilisateur. Cela permet à l'attaquant de se mettre dans un état pouvant être liquidé par des opérations spécifiques, puis de réaliser un profit grâce à la liquidation.
Dans des conditions normales, la fonction checkLiquidity appelle le module RiskManager pour s'assurer que l'Etoken de l'utilisateur est toujours supérieur au Dtoken, afin de maintenir la sécurité du contrat. Cependant, la fonction donateToReserves a contourné cette étape importante, entraînant une grave vulnérabilité de sécurité.
Leçons et conseils
Cet événement souligne encore une fois l'importance des audits de sécurité des contrats intelligents. Pour les projets de prêt, il est nécessaire de prêter une attention particulière aux aspects clés suivants :
L'intégrité du mécanisme de remboursement des fonds
Exhaustivité de la détection de liquidité
La sécurité du processus de liquidation de la dette
Avant le lancement, l'équipe du projet doit effectuer un audit de sécurité complet pour s'assurer que chaque fonctionnalité du contrat a été soumise à des contrôles de sécurité rigoureux. De plus, une surveillance continue de la sécurité et un programme de récompense pour les vulnérabilités sont également des mesures efficaces pour garantir la sécurité à long terme du projet.
De plus, les développeurs doivent veiller à la cohérence entre les fonctions, en s'assurant que les vérifications de sécurité essentielles (comme les vérifications de liquidité) sont correctement mises en œuvre dans toutes les fonctions concernées. Cela inclut non seulement les fonctionnalités principales, mais doit également couvrir les fonctionnalités auxiliaires telles que les dons, etc.
Enfin, il est conseillé aux équipes de projet et aux développeurs de rester vigilants face aux nouvelles méthodes d'attaque, et de mettre à jour régulièrement les stratégies de sécurité pour faire face aux menaces de sécurité blockchain en constante évolution.
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.
8 J'aime
Récompense
8
7
Partager
Commentaire
0/400
StableGenius
· Il y a 15h
eh bien eh bien eh bien... comme prévu, un autre protocole apprend la rigueur mathématique à ses dépens. Empiriquement parlant, c'était inévitable.
Voir l'originalRépondre0
SelfCustodyBro
· Il y a 15h
Allongé, je vais manger des melons~
Voir l'originalRépondre0
PoetryOnChain
· Il y a 15h
Encore un contrat à peau croustillante condamné
Voir l'originalRépondre0
MevHunter
· Il y a 15h
Encore un Rug Pull sur les contrats.
Voir l'originalRépondre0
SorryRugPulled
· Il y a 15h
Un contrat sans audit technique n'est-il pas aussi de l'argent offert ?
Voir l'originalRépondre0
0xInsomnia
· Il y a 15h
Encore un bug des smart contracts
Voir l'originalRépondre0
GasFeeNightmare
· Il y a 15h
Je suis resté éveillé toute la nuit à regarder le gas et j'ai failli perdre tout... sur dix transactions, sept ont échoué et je dois encore payer la taxe sur l'intelligence aux mineurs.
Euler Finance a été victime d'une attaque par Prêts Flash, avec des pertes proches de 200 millions de dollars.
Euler Finance a subi une attaque de prêt flash, avec des pertes d'environ 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 significative d'environ 197 millions de dollars. L'attaquant a exploité une faille dans la fonction donateToReserves du contrat, qui manquait de vérification de liquidité, pour réaliser l'attaque par plusieurs opérations.
Analyse du processus d'attaque
Les principales étapes de l'attaquant sont les suivantes :
Emprunter 30 millions de DAI via Prêts Flash d'une plateforme de prêt, et déployer deux contrats pour le prêt et la liquidation.
Payer 20 millions de DAI dans le contrat du protocole Euler, obtenir 19,5 millions d'eDAI.
Utiliser la fonction de levier de 10x du protocole Euler pour emprunter 195,6 millions eDAI et 200 millions dDAI.
Rembourser une partie de la dette avec les 10 millions de DAI restants, détruire le dDAI correspondant, puis emprunter à nouveau une quantité équivalente d'eDAI et de dDAI.
Faire un don de 100 millions eDAI via la fonction donateToReserves, puis appeler la fonction liquidate pour procéder à la liquidation, obtenant 310 millions dDAI et 250 millions 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.
Causes de la vulnérabilité
Le cœur de l'attaque réside dans le fait que la fonction donateToReserves du contrat Euler Finance manque de vérification de liquidité nécessaire. Contrairement à d'autres fonctions clés (comme mint), la fonction donateToReserves n'appelle pas checkLiquidity pour valider la liquidité de l'utilisateur. Cela permet à l'attaquant de se mettre dans un état pouvant être liquidé par des opérations spécifiques, puis de réaliser un profit grâce à la liquidation.
Dans des conditions normales, la fonction checkLiquidity appelle le module RiskManager pour s'assurer que l'Etoken de l'utilisateur est toujours supérieur au Dtoken, afin de maintenir la sécurité du contrat. Cependant, la fonction donateToReserves a contourné cette étape importante, entraînant une grave vulnérabilité de sécurité.
Leçons et conseils
Cet événement souligne encore une fois l'importance des audits de sécurité des contrats intelligents. Pour les projets de prêt, il est nécessaire de prêter une attention particulière aux aspects clés suivants :
Avant le lancement, l'équipe du projet doit effectuer un audit de sécurité complet pour s'assurer que chaque fonctionnalité du contrat a été soumise à des contrôles de sécurité rigoureux. De plus, une surveillance continue de la sécurité et un programme de récompense pour les vulnérabilités sont également des mesures efficaces pour garantir la sécurité à long terme du projet.
De plus, les développeurs doivent veiller à la cohérence entre les fonctions, en s'assurant que les vérifications de sécurité essentielles (comme les vérifications de liquidité) sont correctement mises en œuvre dans toutes les fonctions concernées. Cela inclut non seulement les fonctionnalités principales, mais doit également couvrir les fonctionnalités auxiliaires telles que les dons, etc.
Enfin, il est conseillé aux équipes de projet et aux développeurs de rester vigilants face aux nouvelles méthodes d'attaque, et de mettre à jour régulièrement les stratégies de sécurité pour faire face aux menaces de sécurité blockchain en constante évolution.