Exploit d'Euler Finance
Un health check manquant sur donateToReserves d'Euler a permis de créer une position auto-liquidable et de partir avec 197 M$ — majoritairement rendus.
- Date
- Victime
- Euler Finance
- Chaîne(s)
- Statut
- Récupéré
Le 13 mars 2023, le protocole de prêt Euler Finance a été exploité pour environ 197 M$. Presque tout a été restitué par l'attaquant au cours du mois suivant, en faisant le plus gros exploit récupéré sur Ethereum à l'époque.
Ce qui s'est passé
Euler exposait une fonction donateToReserves qui permettait à tout détenteur d'eTokens de les donner aux réserves du protocole. La fonction décrémentait le solde du donateur mais n'exécutait pas de health check sur la position résultante du donateur.
En prenant un prêt flash, en déposant comme collatéral, en empruntant contre lui, puis en donnant une tranche de son solde d'eTokens, un attaquant pouvait pousser son propre compte sous l'eau exprès. Il se liquidait ensuite lui-même dans la même transaction, exploitant la récompense de liquidation à rabais d'Euler pour extraire plus de valeur qu'il n'en avait mis. La répétition en boucle drainait les pools de prêt.
Conséquences
- L'équipe Euler a suspendu les contrats en quelques heures et a entamé une négociation on-chain avec l'attaquant.
- L'attaquant a restitué tous les fonds — environ 197 M$ — au cours des semaines suivantes, invoquant un regret apparent. Le cas reste inhabituel parmi les grands exploits DeFi.
- Euler a publié un post-mortem détaillé et a depuis redéployé avec des contrats ré-audités.
Pourquoi c'est important
Le bug n'était pas dans les prêts flash, les oracles ou la logique de liquidation — tous fonctionnaient correctement. La faille était un invariant manquant unique : chaque fonction qui modifie le solde d'un utilisateur doit appeler le même helper de health check. Plusieurs protocoles de prêt ont audité leurs codebases pour des omissions analogues dans les semaines qui ont suivi.
Sources & preuves on-chain
- [01]medium.comhttps://medium.com/euler-xyz/the-march-13-2023-euler-attack-d5cd462f5ee2
- [02]twitter.comhttps://twitter.com/eulerfinance/status/1635413933076774914
- 0xc310a0affe2169d1f6feec1c63dbc7f7c62a887fa48795d327d4d2da2d6b111d