Grim Finance 5x-Reentrancy
Grim-Finance-Vaults auf Fantom verloren 30 Mio. $ durch eine 5-Schleifen-Reentrancy in depositFor. TVL fiel von 98,9 Mio. $ auf 4,2 Mio. $.
- Datum
- Opfer
- Grim Finance
- Chain(s)
- Status
- Mittel entwendet
Am 19. Dezember 2021 verlor der Fantom-basierte Yield-Aggregator Grim Finance rund 30 Millionen $ durch einen 5-Schleifen-Reentrancy-Angriff auf die depositFor()-Funktion seines Vaults. Als das Team das Protokoll pausierte, war Grims TVL von 98,9 Mio. $ auf 4,2 Mio. $ kollabiert — ein Rückgang um 96 %.
Was geschah
Grim Finances Vaults nutzten eine depositFor()-Funktion, um einen Nutzer im Tausch gegen seine Einlage mit Vault-Shares gutzuschreiben. Die Funktion folgte dem typischen Muster: Nutzer-Tokens per transferFrom einziehen, dann Vault-Shares an den Nutzer basierend auf der aktuellen Share-Preis-Berechnung minten.
Der fatale Fehler: depositFor() fehlte ordentlicher Reentrancy-Schutz. Wenn das transferFrom des deponierten Tokens einen Callback auslöste (wie bei ERC-777- oder Fee-on-Transfer-Tokens möglich — oder direkter, wenn der Angreifer den deponierten „Token"-Contract komplett kontrollierte), konnte der Callback des Angreifers Grims depositFor() re-entern, während der erste Aufruf noch mid-execution war.
Der Angriff:
- Deployte einen bösartigen „Token"-Contract, dessen
transferFrom-Funktion in GrimsdepositFor()zurückrief. - Rief Grims
depositFor()mit dem bösartigen Token auf. - Der erste Aufruf las den aktuellen Share-Preis und bereitete den Share-Mint vor.
- Bevor der Mint des ersten Aufrufs abgeschlossen war, re-enterte der Callback
depositFor()— und las denselben Pre-Mint-Share-Preis und bereitete vor, mehr Shares gegen das zu minten, was dieselbe Einlage hätte sein sollen. - 5-mal geloopt, bevor sich der Call-Stack abrollte.
- Verschwand mit 5x der legitimen Vault-Share-Allokation für eine einzige Underlying-Einlage.
Netto-Drain: rund 30 Mio. $ über Grims betroffene Vaults, denominiert in BTC, ETH, FTM, USDC und anderen Assets.
Folgen
- Grim pausierte alle Vault-Operationen binnen Stunden.
- Das Team kontaktierte Circle (USDC-Issuer), AnySwap und MakerDAO, um Assets im Zusammenhang mit den Adressen des Angreifers einzufrieren.
- TVL fiel von 98,9 Mio. $ auf 4,2 Mio. $ — ein 96 %-Rückgang, getrieben sowohl vom realisierten Diebstahl als auch von panikartigen Deponenten-Abhebungen aus nicht betroffenen Vaults.
- Das Protokoll erlangte seinen Vor-Vorfall-Stand unter den Fantom-Yield-Aggregatoren nie zurück.
- Die gestohlenen Gelder wurden über Cross-Chain-Bridges und Mixer gewaschen; keine öffentliche Wiederherstellung.
Warum es wichtig ist
Grim Finance gehört zu einer wiederkehrenden Reihe von Vault-Contract-Reentrancy-Vorfällen, die sich um Yield-Aggregatoren clustern, die dieselben Basis-Patterns forken. Die Bug-Klasse — „externer Token-Transfer im Deposit-Pfad ohne Reentrancy-Guard" — wiederholt sich:
- Pickle Finance (Nov. 2020) — Fake-Jar-Injection per Swap.
- Cream Finance (Aug. 2021) — ERC-777
tokensReceived-Reentrancy. - Grim Finance (Dez. 2021) —
depositFor-5-Schleifen-Reentrancy. - Visor Finance (Dez. 2021) —
delegateTransferERC20-Reentrancy. - Fei/Rari (Apr. 2022) —
exitMarketungeschützt. - Penpie (Sep. 2024) — Pendle-Plugin-Reentrancy.
Das defensive Muster — OpenZeppelins ReentrancyGuard ohne Ausnahmen auf jeden state-mutierenden Externer-Aufruf-Pfad — ist gut dokumentiert und frei verfügbar. Jedes Protokoll, das irgendeinen Deposit-Pfad ohne Guard shippt, ist einen sorgfältig konstruierten Token-Contract von Grim Finances Ergebnis entfernt. Die 30-Mio.-$-Kosten sind das wiederkehrende Schulgeld dafür, den Guard zu überspringen.
Quellen & On-Chain-Belege
- [01]coindesk.comhttps://www.coindesk.com/tech/2021/12/20/fantom-defi-project-grim-finance-exploited-for-30m
- [02]cryptobriefing.comhttps://cryptobriefing.com/fantom-defi-project-grim-finance-suffers-30m-hack/
- [03]decrypt.cohttps://decrypt.co/88727/grim-finance-hacked-30-million-fantom-tokens