Le projet Euler Finance a subi une attaque de prêt flash, avec des pertes 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 le contrat, entraînant des pertes allant jusqu'à 197 millions de dollars. L'attaquant a exploité la faille d'absence de vérification de liquidité dans la fonction donateToReserves du contrat du projet, réalisant d'énormes profits grâce à plusieurs opérations.
Analyse du processus d'attaque
L'attaquant emprunte d'abord 30 millions de DAI via un Prêt Flash sur une plateforme de prêt, et déploie deux contrats : le contrat de prêt et le contrat de liquidation.
L'attaquant a mis en garantie 20 millions de DAI empruntés dans le contrat du protocole Euler, obtenant 195 000 eDAI.
En utilisant la fonction de levier de 10x du protocole Euler, l'attaquant a emprunté 1,956 millions d'eDAI et 2 millions de dDAI.
L'attaquant utilise les 10 millions de DAI restants pour rembourser une partie de sa dette, détruit le dDAI correspondant, puis emprunte à nouveau une quantité équivalente d'eDAI et de dDAI.
Étapes clés : l'attaquant appelle la fonction donateToReserves, fait un don de 1 million d'eDAI, puis liquidé par la fonction liquidate, obtenant 3,1 millions de dDAI et 2,5 millions de eDAI.
Enfin, l'attaquant a extrait 389 000 DAI, remboursé 300 000 DAI de Prêts Flash, et a finalement réalisé un bénéfice de 88 700 DAI.
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. Contrairement à d'autres fonctions clés comme mint, la fonction donateToReserves n'exécute pas l'opération checkLiquidity. Cela permet aux attaquants de contourner les vérifications de liquidité normales, de créer artificiellement un état pouvant être liquidé, puis de réaliser un profit lors de la liquidation.
Dans des conditions normales, la fonction checkLiquidity appelle le module RiskManager pour s'assurer que le nombre d'Etokens de l'utilisateur est supérieur au nombre de Dtokens, afin de maintenir la sécurité du contrat. Cependant, en raison de l'absence de cette étape clé dans la fonction donateToReserves, les attaquants ont pu exploiter cette vulnérabilité pour mener des attaques.
Conseils de sécurité
Pour ce type d'attaque, nous conseillons aux projets blockchain :
Effectuer un audit de sécurité complet avant le lancement du contrat, afin d'assurer la sécurité du contrat.
Pour les projets de prêt, il est particulièrement important de prêter attention aux étapes clés telles que le remboursement des fonds, la détection de la liquidité et la liquidation des dettes.
Assurez-vous que toutes les fonctions susceptibles d'affecter l'état des actifs des utilisateurs contiennent les vérifications de sécurité nécessaires, telles que les vérifications de liquidité.
Effectuer régulièrement des revues de code et des mises à jour, et corriger rapidement les vulnérabilités découvertes.
Établir un mécanisme de réponse d'urgence afin de pouvoir réagir et traiter rapidement en cas d'incident de sécurité.
En prenant ces mesures, les équipes de projet peuvent considérablement réduire le risque de subir des attaques similaires et améliorer la sécurité globale du contrat.
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.
9 J'aime
Récompense
9
5
Reposter
Partager
Commentaire
0/400
WhaleWatcher
· 08-11 16:40
Encore un pigeon qui entre en scène.
Voir l'originalRépondre0
Lonely_Validator
· 08-10 08:22
La sécurité de la Blockchain est si mauvaise maintenant ? Sans mots.
Voir l'originalRépondre0
StakeWhisperer
· 08-10 08:10
Encore un piège à jetons
Voir l'originalRépondre0
GweiWatcher
· 08-10 07:58
Encore une mise en ligne sans vérifier le contrat ?
Euler Finance a subi une attaque de prêts flash, entraînant une perte de près de 200 millions de dollars.
Le projet Euler Finance a subi une attaque de prêt flash, avec des pertes 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 le contrat, entraînant des pertes allant jusqu'à 197 millions de dollars. L'attaquant a exploité la faille d'absence de vérification de liquidité dans la fonction donateToReserves du contrat du projet, réalisant d'énormes profits grâce à plusieurs opérations.
Analyse du processus d'attaque
L'attaquant emprunte d'abord 30 millions de DAI via un Prêt Flash sur une plateforme de prêt, et déploie deux contrats : le contrat de prêt et le contrat de liquidation.
L'attaquant a mis en garantie 20 millions de DAI empruntés dans le contrat du protocole Euler, obtenant 195 000 eDAI.
En utilisant la fonction de levier de 10x du protocole Euler, l'attaquant a emprunté 1,956 millions d'eDAI et 2 millions de dDAI.
L'attaquant utilise les 10 millions de DAI restants pour rembourser une partie de sa dette, détruit le dDAI correspondant, puis emprunte à nouveau une quantité équivalente d'eDAI et de dDAI.
Étapes clés : l'attaquant appelle la fonction donateToReserves, fait un don de 1 million d'eDAI, puis liquidé par la fonction liquidate, obtenant 3,1 millions de dDAI et 2,5 millions de eDAI.
Enfin, l'attaquant a extrait 389 000 DAI, remboursé 300 000 DAI de Prêts Flash, et a finalement réalisé un bénéfice de 88 700 DAI.
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. Contrairement à d'autres fonctions clés comme mint, la fonction donateToReserves n'exécute pas l'opération checkLiquidity. Cela permet aux attaquants de contourner les vérifications de liquidité normales, de créer artificiellement un état pouvant être liquidé, puis de réaliser un profit lors de la liquidation.
Dans des conditions normales, la fonction checkLiquidity appelle le module RiskManager pour s'assurer que le nombre d'Etokens de l'utilisateur est supérieur au nombre de Dtokens, afin de maintenir la sécurité du contrat. Cependant, en raison de l'absence de cette étape clé dans la fonction donateToReserves, les attaquants ont pu exploiter cette vulnérabilité pour mener des attaques.
Conseils de sécurité
Pour ce type d'attaque, nous conseillons aux projets blockchain :
Effectuer un audit de sécurité complet avant le lancement du contrat, afin d'assurer la sécurité du contrat.
Pour les projets de prêt, il est particulièrement important de prêter attention aux étapes clés telles que le remboursement des fonds, la détection de la liquidité et la liquidation des dettes.
Assurez-vous que toutes les fonctions susceptibles d'affecter l'état des actifs des utilisateurs contiennent les vérifications de sécurité nécessaires, telles que les vérifications de liquidité.
Effectuer régulièrement des revues de code et des mises à jour, et corriger rapidement les vulnérabilités découvertes.
Établir un mécanisme de réponse d'urgence afin de pouvoir réagir et traiter rapidement en cas d'incident de sécurité.
En prenant ces mesures, les équipes de projet peuvent considérablement réduire le risque de subir des attaques similaires et améliorer la sécurité globale du contrat.