Le projet Euler Finance a subi une attaque par prêts flash, avec des pertes de près de 200 millions de dollars.
Le 13 mars, le projet Euler Finance a subi une attaque par prêts flash en raison d'une vulnérabilité dans son contrat intelligent, avec des pertes s'élevant à 197 millions de dollars. L'attaquant a exploité une faille dans la fonction donateToReserves du contrat Etoken du projet, qui manquait de vérification de liquidité, et a effectué plusieurs opérations d'attaque à travers différentes cryptomonnaies.
Analyse du processus d'attaque
L'attaquant a d'abord obtenu un Prêt Flash de 30 millions de DAI sur une plateforme de prêt, puis a déployé deux contrats : un pour le prêt et un pour la liquidation. Le processus d'attaque est approximativement le suivant :
Staker 20 millions DAI dans le contrat du protocole Euler, obtenir 19,5 millions 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, 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 obtenir 310 millions de dDAI et 250 millions d'eDAI.
Enfin, extraction de 38,9 millions de DAI, remboursement du Prêt Flash et profit de 8,87 millions de DAI.
Analyse des causes de la vulnérabilité
Le cœur de cette attaque réside dans la fonction donateToReserves du projet Euler Finance, qui manque de vérifications de liquidité nécessaires. Comparée à 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 manipuler l'état de son propre compte pour répondre aux conditions de liquidation, permettant ainsi un gain indu.
Dans des conditions normales, la fonction checkLiquidity appelle le module RiskManager pour s'assurer que le nombre d'Etokens des utilisateurs est toujours supérieur au nombre de Dtokens. Cependant, en raison du fait que la fonction donateToReserves a sauté cette étape, l'attaquant a pu contourner le mécanisme de sécurité.
Conseils de sécurité
Cet événement souligne encore une fois l'importance de l'audit de sécurité des contrats intelligents. Pour les projets de prêt, il est particulièrement important de porter une attention particulière aux aspects suivants :
L'intégrité du mécanisme de remboursement des fonds
Exhaustivité de la détection de la liquidité
La sécurité du processus de liquidation de la dette
Avant le déploiement du contrat, l'équipe du projet doit réaliser un audit de sécurité complet et minutieux pour prévenir l'apparition de vulnérabilités similaires. De plus, une surveillance continue de la sécurité et des corrections rapides des vulnérabilités sont également essentielles pour garantir le bon fonctionnement à long terme du projet.
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.
7 J'aime
Récompense
7
2
Partager
Commentaire
0/400
WhaleMinion
· 07-25 11:58
Les fauteurs de troubles sont de retour.
Voir l'originalRépondre0
DefiEngineerJack
· 07-25 11:45
*soupir* heure des amateurs dans la conception de contrats intelligents... montrez-moi la vérification formelle ou dégagez
Euler Finance a subi une attaque par Prêts Flash, entraînant une perte de près de 200 millions de dollars.
Le projet Euler Finance a subi une attaque par prêts flash, avec des pertes de près de 200 millions de dollars.
Le 13 mars, le projet Euler Finance a subi une attaque par prêts flash en raison d'une vulnérabilité dans son contrat intelligent, avec des pertes s'élevant à 197 millions de dollars. L'attaquant a exploité une faille dans la fonction donateToReserves du contrat Etoken du projet, qui manquait de vérification de liquidité, et a effectué plusieurs opérations d'attaque à travers différentes cryptomonnaies.
Analyse du processus d'attaque
L'attaquant a d'abord obtenu un Prêt Flash de 30 millions de DAI sur une plateforme de prêt, puis a déployé deux contrats : un pour le prêt et un pour la liquidation. Le processus d'attaque est approximativement le suivant :
Staker 20 millions DAI dans le contrat du protocole Euler, obtenir 19,5 millions 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, 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 obtenir 310 millions de dDAI et 250 millions d'eDAI.
Enfin, extraction de 38,9 millions de DAI, remboursement du Prêt Flash et profit de 8,87 millions de DAI.
Analyse des causes de la vulnérabilité
Le cœur de cette attaque réside dans la fonction donateToReserves du projet Euler Finance, qui manque de vérifications de liquidité nécessaires. Comparée à 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 manipuler l'état de son propre compte pour répondre aux conditions de liquidation, permettant ainsi un gain indu.
Dans des conditions normales, la fonction checkLiquidity appelle le module RiskManager pour s'assurer que le nombre d'Etokens des utilisateurs est toujours supérieur au nombre de Dtokens. Cependant, en raison du fait que la fonction donateToReserves a sauté cette étape, l'attaquant a pu contourner le mécanisme de sécurité.
Conseils de sécurité
Cet événement souligne encore une fois l'importance de l'audit de sécurité des contrats intelligents. Pour les projets de prêt, il est particulièrement important de porter une attention particulière aux aspects suivants :
Avant le déploiement du contrat, l'équipe du projet doit réaliser un audit de sécurité complet et minutieux pour prévenir l'apparition de vulnérabilités similaires. De plus, une surveillance continue de la sécurité et des corrections rapides des vulnérabilités sont également essentielles pour garantir le bon fonctionnement à long terme du projet.