Cream Finance AMP Reentrancy
18,8 Mio. USD aus Cream-v1-Lending via Reentrancy-Bug im ERC-777-Transfer-Hook des AMP-Tokens entzogen – zweiter von Creams drei 2021er Exploits.
- Datum
- Opfer
- Cream Finance
- Chain(s)
- Status
- Teilweise zurückerlangt
Am 30. August 2021 erlitt das Lending-Protokoll Cream Finance den zweiten seiner drei großen Exploits 2021 und verlor etwa 18,8 Millionen US-Dollar — 2.804,96 ETH und 462.079.976 AMP-Tokens — durch einen Reentrancy-Angriff, der durch den ERC-777-Token-Standard, den AMP nutzte, ermöglicht wurde. Der Angreifer gab etwa 17,6 Mio. USD der gestohlenen Mittel zurück und klassifizierte das Ereignis als opportunistischen White-Hat.
Was geschah
Als Cream AMP als unterstützten Sicherheits-Asset listete, erbte die Integration eine subtile Eigenschaft von AMPs ERC-777-Implementierung: Jeder Transfer von AMP löst einen tokensReceived()-Hook im empfangenden Vertrag aus, der dem Empfänger erlaubt, beliebigen Code auszuführen, bevor die Buchhaltung des Transfers finalisiert ist.
Creams borrow()-Funktion folgte dem Standard-Compound-v2-Muster: Sende die geliehenen Tokens an den Aufrufer, dann aktualisiere den Debt-Saldo des Aufrufers. Der beabsichtigte Fluss war sicher — bis AMPs Hook dem Borrower erlaubte, beliebigen Code in der Lücke zwischen „Tokens gesendet" und „Schuld erfasst" auszuführen.
Der Angriff:
- Der Angreifer borgte einen kleinen Anfangsbetrag AMP von Cream — was den AMP-
tokensReceived()-Hook im Vertrag des Angreifers auslöste. - Von innerhalb des Hooks — bevor der erste Borrow in Creams Buchhaltung erfasst worden war — rief der Angreifer
borrow()erneut auf. - Der zweite Borrow sah die Sicherheit des Angreifers als noch unbelastet (keine Schuld erfasst noch) und gab einen zweiten Borrow gegen dieselbe Sicherheit aus.
- Wiederholte die Rekursion, bis der Angreifer das AMP- und ETH-Supply des Protokolls entzogen hatte.
Folgen
- Cream pausierte betroffene Märkte und arbeitete sofort mit Yearn-Finance-Ingenieuren, um die AMP-Hook-Ursache zu identifizieren.
- Der Angreifer — möglicherweise nervös wegen Identifizierung — gab ~17,6 Mio. USD der 18,8 Mio. USD innerhalb von Tagen zurück und behielt eine etwa 6%-„Bounty".
- Zwei Monate später, im Oktober 2021, erlitt Cream einen viel größeren dritten Exploit über 130 Mio. USD — ein separater Schwachstellen-Pfad, aber im selben Protokoll, das nun in acht Monaten dreimal kompromittiert worden war.
Warum es wichtig ist
Creams Vorfall vom August 2021 ist einer der kanonischen Fälle dafür, warum ERC-777-Token-Hooks ein Reentrancy-Risiko für jedes Protokoll sind, das geliehene Token-Salden handhabt. Die defensive Antwort ist zweifach:
- Behandle jeden externen Token-Aufruf als potenziellen Re-Entry-Punkt — wende das Checks-Effects-Interactions-Muster rigoros, nicht selektiv an.
- Audite jede Token-Integration, als wäre sie ein frischer Codebase — token-spezifisches Verhalten (ERC-777-Hooks, Rebasing-Tokens, Fee-on-Transfer-Tokens, Callback-fähige Tokens) kann Sicherheitsannahmen brechen, die für reine ERC-20s gelten.
Creams drei Exploits 2021 zusammen sind auch eine Fallstudie dafür, was passiert, wenn die Sicherheitskultur eines Protokolls nicht mit seiner Listing-Geschwindigkeit Schritt halten kann. Neue Sicherheits-Assets schnell hinzuzufügen ist Wettbewerbsdruck; es ohne Per-Asset-Reentrancy-Analyse zu tun wird in realen Verlusten bezahlt.
Quellen & On-Chain-Belege
- [01]halborn.comhttps://www.halborn.com/blog/post/explained-the-cream-finance-hack-august-2021
- [02]coindesk.comhttps://www.coindesk.com/business/2021/08/30/defi-protocol-cream-finance-hacked
- [03]cryptonews.nethttps://cryptonews.net/news/defi/1616179/