Am 13. März 2023 stellte unser System fest, dass der Kreditpool von Euler Finance einem Flashloan-Angriff ausgesetzt war, was zu einem Verlust von 197 Millionen US-Dollar führte. Wir informierten zunächst die Community und lieferten dann eine Analyse, um die Grundursache zu identifizieren.
1/ @eulerfinance ist angegriffen. Die Grundursache liegt in der fehlenden Liquiditätsprüfung in der Funktion donateToReserves()https://t.co/stWtPWK900
— BlockSec (@BlockSecTeam) 13. März 2023
Sehen Sie die detaillierten Angriffsschritte unten. https://t.co/bm10OJHiXu pic.twitter.com/TDbYuzVWHe
Die Grundursache dieses Vorfalls ist die fehlende Insolvenzprüfung in der Funktion donateToReserves(). Speziell bietet der anfällige Vertrag eine Funktionalität, mit der Benutzer ihre Sicherheiten dem Protokoll spenden können, ohne zu prüfen, ob die Position des Benutzers solvent war. Was noch schlimmer ist: Um diese schlechte Position loszuwerden, bot das Protokoll Liquidatoren einen großen Rabatt an, um weniger Schulden zu zahlen, um diese Position zu liquidieren. Der Angreifer erstellte eine große Position und machte diese Position durch Ausnutzung dieser Funktionalität insolvent. Dann konnte er seine Sicherheiten mit Rabatt kaufen, um Gewinn zu erzielen.
Hintergrund
Überblick über Euler Finance
Euler Finance ist ein Kreditprotokoll auf Ethereum, das es Benutzern ermöglicht, bestimmte Token zu verleihen und auszuleihen. Wenn Kreditgeber in den Liquiditätspool von Euler einzahlen, wird eine entsprechende Menge an ETokens (zinsbringende ERC20-Token) geprägt und an sie gesendet. Diese ETokens können gegen ihre hinterlegten Basiswerte eingelöst werden.
Auf der anderen Seite erhalten Kreditnehmer, die Liquidität aufnehmen, DTokens. Diese DTokens sind ERC20-konform und hindern die Inhaber daran, sie unabhängig zu verbrennen. Insbesondere anstatt Token an jeden senden zu lassen, können sie von jedem genommen werden, die Annahme erfordert jedoch eine Genehmigung. In Bezug auf den Basiswert sind die Kreditnehmer für die Zahlung von Zinsen auf ihre Kredite verantwortlich, und ein Teil dieser Zinsen wird zur Deckung von Forderungsausfällen im Protokoll verwendet.
Der Hebelkredit (auch bekannt als Self-Borrow) und die Soft-Liquidation-Mechanismen von Euler Finance sind zwei Schlüsselkonzepte, die uns helfen, die Ursache dieses Angriffs besser zu verstehen.
Hebelkredit
Euler Finance bietet eine Hebelkreditfunktion, die es Benutzern ermöglicht, eine rekursive Kreditstrategie zu simulieren. Einfach ausgedrückt können Benutzer Sicherheiten hinterlegen und ETokens prägen, die dann als Sicherheit verwendet werden können, um mehr ETokens zu leihen. Der Vertrag wird auch eine entsprechende Menge an dTokens als Schulden-Token prägen. Die Gesundheit der Position des Benutzers wird auf Basis der Werte der ETokens und dTokens berechnet. Laut der Dokumentation von Euler Finance können Benutzer bis zu 19x hebeln. Die Hebelkreditfunktion spielte bei diesem Vorfall eine entscheidende Rolle. Ohne die Hilfe dieser Funktion hätte der Angreifer keinen Gewinn erzielen können. Durch Hebelkredite hat der Angreifer seine Positionsgröße auf fast das 11-fache der anfänglichen Mittel aus dem Flashloan erhöht.
Soft-Liquidation
Wie im Whitepaper von Euler Finance dargelegt, ermöglicht der Soft-Liquidation-Mechanismus Liquidatoren, der liquidierten Partei bei der Rückzahlung ihrer Schulden flexibel zu helfen, anstatt wie bei Protokollen wie Compound und Aave an einen festen Liquidationskoeffizienten gebunden zu sein. Soft-Liquidation bedeutet, dass je geringer die Gesundheit einer Position ist, desto mehr Sicherheiten für die Liquidation in Frage kommen – bis zu 75 % im Falle von Forderungsausfällen, basierend auf Daten aus diesem Vorfall. Die Liquidation von stark rabattierten Sicherheiten ermöglichte es dem Angreifer daher, den Flashloan zu begleichen und einen Gewinn zu erzielen.
Schwachstellenanalyse
Die Hauptschwachstelle, nämlich die fehlende Insolvenzprüfung, besteht innerhalb der Funktion donateToReserves(), die von Benutzern verwendet wird, um ETokens aus ihren Positionen als Spenden an die Reserven des Protokolls zu übertragen. Für normale Benutzer gibt es typischerweise keinen Anreiz oder keine Motivation, eine solche Aktion durchzuführen. Tatsächlich liegt die Schwachstelle darin, dass die Funktion donateToReserves() beim Übertragen von ETokens aus Benutzerpositionen keine Gesundheitsprüfung durchführt. Dies ermöglicht es Angreifern, die ETokens aus der durch Hebelkredite erstellten großen Position direkt zu spenden, wodurch der Gesundheitsfaktor der Position unter 100 % fällt und es zu Forderungsausfällen kommt.

Laut Design verwendet Euler Finance einen dynamischen Closing-Faktor, um Positionen "soft zu liquidieren". Kurz gesagt: Je weniger gesund eine Position ist, desto höher ist der Anteil der Sicherheiten in dieser Position, der liquidiert werden kann. Im Falle von Forderungsausfällen kann der Liquidationsprozentsatz bis zu 75 % der Sicherheiten innerhalb der Position betragen (berechnet auf Basis der tatsächlichen Angriffstransaktion). Infolgedessen ermöglicht die erhebliche Menge an rabattierten Sicherheiten, die liquidiert werden, dem Angreifer, den Flashloan zurückzuzahlen und Gewinne zu erzielen.
Angriffsanalyse
Es gibt mehrere Angriffstransaktionen, die sich auf verschiedene Pools richten:
- 0xc310a0affe2169d1f6feec1c63dbc7f7c62a887fa48795d327d4d2da2d6b111d (DAI)
- 0x71a908be0bef6174bccc3d493becdfd28395d8898e355d451cb52f7bac38617 (WBTC)
- 0x62bd3d31a7b75c098ccf28bc4d4af8c4a191b4b9e451fab4232258079e8b18c4 (wstETH)
- 0x465a6780145f1efe3ab52f94c006065575712d2003d83d85481f3d110ed13d9 (USDC)
- 0x3097830e9921e4063d334acb82f6a79374f76f0b1a8f857e89b89bc58df1f311 (stETH)
- 0x47ac3527d02e6b9631c77fad1cdee7bfa77a8a7bfd4880dccbda5146ace4088f (WETH)
Die Angriffsschritte sind wie folgt (am Beispiel der ersten Angriffstransaktion):
- Der Angreifer borgte sich 30 Millionen DAI in AAVE über einen Flashloan.
- Der Angreifer hinterlegte 20 Millionen DAI und erhielt 20 Millionen eDAI zurück.
- Da Euler Finance die Hebelkreditfunktion bietet, konnte der Angreifer 195 Millionen eDAI und 200 Millionen dDAI prägen. Nun hält der Angreifer 215 Millionen eDAI und 200 Millionen dDAI.
- Fortsetzung von oben. 10 Millionen Schulden wurden zurückgezahlt, damit der Angreifer mehr eDAI prägen konnte. Nun hält der Angreifer 215 Millionen eDAI und 190 Millionen dDAI.
- Schritt 3 wurde wiederholt. Nun hält der Angreifer 410 Millionen eDAI und 390 Millionen dDAI.
- Der Angreifer rief die Funktion donateToReserve auf, um 100 Millionen eDAI zu spenden. Während dieses Vorgangs wurde jedoch der Gesundheitsfaktor des Angreifers nicht überprüft. In diesem Fall kann die Position nun liquidiert werden (310 Millionen eDAI gegenüber 390 Millionen dDAI), was die Möglichkeit gibt, Gewinn zu erzielen.
- Der Angreifer liquidierte die Position unter Verwendung eines anderen Adressvertrags als Liquidator (0xa0b3...). Der Liquidator (0xa0b3...) erhielt 310 Millionen eDAI und 259 Millionen dDAI.
- Der Angreifer verbrannte 38,9 Millionen eDAI, um 38,9 Millionen DAI abzuheben (konnte aufgrund von Insolvenzprüfungen nicht mehr abheben) aus der Position des Liquidators (0xa0b3...).
- Der Angreifer hat den Flashloan zurückgezahlt.
Die wichtigsten Angriffsschritte 2-7 sind in der Transaktionsverfolgung gekennzeichnet.

Zusammenfassung
Dies war der größte Hack des Jahres 2023 mit einem Rekord von 197 Millionen US-Dollar, die von einem 20-jährigen Argentinier namens Federico Jaime gestohlen wurden, der der Presse "eine verschlungene, manchmal verwirrende und sogar widersprüchliche Erzählung" lieferte. Dennoch wurden "alle wiederherstellbaren Gelder" später an die Schatzkasse von Euler Finance zurückgegeben. Ein kleiner Teil (rund 200.000 US-Dollar) wurde jedoch "unwissentlich" an die Lazarus-Gruppe gesendet – ein mutmaßliches staatlich unterstütztes nordkoreanisches Verbrechersyndikat, das vom US-Finanzministerium sanktioniert wurde. Weitere Informationen zu dieser detaillierten und interessanten Geschichte finden Sie unter diesen Links, z. B. link2 und link2.
Die Grundursache dieses Vorfalls war das Fehlen von Insolvenzprüfungen, was als Lektion dient. Tatsächlich ist es für ein Kreditprotokoll von entscheidender Bedeutung, zu prüfen, ob Positionsgesundheitsprüfungen für alle Verfahren implementiert werden sollten, die die Positionen der Benutzer beeinträchtigen könnten. Darüber hinaus sollten Projektteams ihre Kreditprotokolle proaktiv auf erhebliche Liquidationen überwachen und effektive Warnsysteme einrichten, um solche Ereignisse umgehend zu erkennen und darauf zu reagieren.
Weitere Artikel in dieser Reihe lesen:
- Lead-In: Top Ten "Awesome" Security Incidents in 2023
- #1: Harvesting MEV Bots by Exploiting Vulnerabilities in Flashbots Relay
- #3: KyberSwap Incident: Masterful Exploitation of Rounding Errors with Exceedingly Subtle Calculations
- #4: Curve Incident: Compiler Error Produces Faulty Bytecode from Innocent Source Code
- #5: Platypus Finance: Surviving Three Attacks with a Stroke of Luck
- #6: Hundred Finance Incident: Catalyzing the Wave of Precision-Related Exploits in Vulnerable Forked Protocols
- #7: ParaSpace Incident: A Race Against Time to Thwart the Industry's Most Critical Attack Yet
- #8: SushiSwap Incident: A Clumsy Rescue Attempt Leads to a Series of Copycat Attacks
- #9: MEV Bot 0xd61492: From Predator to Prey in an Ingenious Exploit
- #10: ThirdWeb Incident: Incompatibility Between Trusted Modules Exposes Vulnerability



