Zum Inhalt springen
Gegr. MMXXVIBd. VI · № 273RSS
Blockchain Breaches

Ein Archiv von Sicherheitsvorfällen im Kryptobereich — Hacks, Exploits, Bridge-Ausfälle und Rug Pulls, dokumentiert mit On-Chain-Belegen.

Dossier № 186Flash-Loan-Angriff

Prisma Finance MigrateTroveZap

11 Mio. $ aus Prismas Trove-Migrations-Helper abgezogen, nachdem der Angreifer migrate() umging und flashloan() direkt aufrief; forderte Entschuldigung.

Datum
Chain(s)
Status
Mittel entwendet

Am 28. März 2024 um 11:25 UTC verlor das LSD-gedeckte Stablecoin-Protokoll Prisma Finance etwa 11,6 Millionen $, als ein Angreifer den MigrateTroveZap-Helper-Vertrag ausnutzte — ein Hilfsmittel, das gebaut wurde, damit Nutzer ihre Trove-Positionen zwischen Vertragsversionen in einer einzigen atomaren Transaktion migrieren können.

Was geschah

Prismas MigrateTroveZap war darauf ausgelegt, Migrationen von alten TroveManager-Verträgen zu neuen zu rationalisieren. Der beabsichtigte Ablauf:

  1. Nutzer ruft migrate() auf dem Zap mit seiner alten Trove-Position auf.
  2. Der Zap nimmt einen Flash-Kredit über die offene Schuld des Nutzers auf.
  3. Verwendet die Flash-Kredit-Mittel, um den alten Trove zu schließen und Sicherheiten zurückzuerlangen.
  4. Öffnet einen neuen Trove mit derselben Sicherheit und Schuld im neuen TroveManager.
  5. Verwendet die geliehenen Mittel des neuen Trove, um den Flash-Kredit zurückzuzahlen, alles in einer Transaktion.

Der Zap stellte sowohl den High-Level-migrate()-Einstiegspunkt als auch die zugrundeliegende flashloan()-Empfängerfunktion bereit, die der Flash-Kredit-Anbieter zurückrief. Der Empfänger sollte nur ausgelöst werden, wenn er innerhalb von migrate() aufgerufen wurde, aber der Empfänger validierte nicht, dass er über den Migrationsfluss aufgerufen worden war.

Der Angreifer:

  1. Rief flashloan() direkt mit sorgfältig gestalteten Eingabedaten auf.
  2. Manipulierte die Positionsparameter so, dass die Sicherheit in der "neuen Position" sich um einen kontrollierten Betrag von der Sicherheit in der "alten Position" unterschied.
  3. Steckte die Differenz ein, als die Migration mit nicht übereinstimmender Buchhaltung "abgeschlossen" wurde.

Nettoverlust: ~3.257 ETH (~11 Mio. $) aus Trove-Besitzern über mehrere Positionen abgezogen.

Folgen

  • Prisma pausierte betroffene Verträge und lieferte einen behobenen Zap mit ordnungsgemäßer Aufrufer-Validierung.
  • Der Angreifer beteiligte sich an On-Chain-Dialog mit dem Prisma-Deployer, rahmte den Exploit als "White-Hat-Rettung" ein und forderte eine öffentliche Entschuldigung des Prisma-Teams, bevor er Mittel freigab — eine ungewöhnliche Haltung.
  • Über 2,5 Mio. $ wurden während der Verhandlung an Tornado Cash gesendet, was das White-Hat-Framing erheblich untergrub.
  • Teilweise Restitution erfolgte über On-Chain-Vereinbarung; der Großteil des Verlusts wurde nie wiederhergestellt.

Warum es wichtig ist

Prismas Vorfall illustriert ein wiederkehrendes DeFi-Muster: Flash-Kredit-Callback-Funktionen sind Teil der Vertrauensgrenze. Wenn ein Vertrag einen Callback exponiert, den jeder Flash-Kredit-Anbieter auslösen kann, muss dieser Callback seinen eigenen Aufrufer und Kontext validieren — nicht nur darauf vertrauen, dass der legitime Einstiegspunkt verwendet wurde. Dieselbe Bug-Klasse wiederholt sich bei jedem Protokoll, das Flash-Kredite über Callback-artige Hooks ohne explizite Aufrufer-Kontext-Prüfungen integriert.

Die Prisma-Episode ist auch ein bemerkenswertes Beispiel für Angreifer-Posing während Verhandlung — die öffentliche Forderung nach einer Entschuldigung war ungewöhnlich genug, um weit diskutiert zu werden, aber die parallele Bewegung von Mitteln zu Tornado Cash machte klar, dass das "White-Hat"-Framing opportunistisch war.

Quellen & On-Chain-Belege

  1. [01]hackmd.iohttps://hackmd.io/@PrismaRisk/PostMortem0328
  2. [02]blog.cube3.aihttps://blog.cube3.ai/2024/03/28/prisma-finance-hack-crypto-exploit-analysis-postmortem-11-million/
  3. [03]theblock.cohttps://www.theblock.co/post/285776/prisma-finance-hacker-defends-exploit-demands-public-apology

Verwandte Einträge