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 № 026Smart-Contract-Bug

DODO Crowdpool Uninitialized Init

DODOs V2-Crowdpools verloren 3,8 Mio. $, nachdem der Angreifer init() mit einem Fake-Token erneut aufrief; die Pools hatten keinen Re-Init-Guard.

Datum
Opfer
DODO
Status
Teilweise zurückerlangt

Am 9. März 2021 erlitt die dezentrale Börse DODO einen Exploit, der vier V2-Crowdpools betraf — Verluste anfänglich rund 3,8 Millionen $, von denen etwa 1,9 Mio. $ von MEV-Arbitrage-Bots front-runt wurden (einige gaben Gelder zurück). Die Ursache: Die init()-Funktion des Crowdpools konnte auf bereits initialisierten Pools erneut aufgerufen werden — ohne Re-Initialisierungs-Guard.

Was geschah

DODOs V2-Crowdpools waren Liquiditätspools, die über eine init()-Funktion initialisiert wurden, die die Pool-Parameter setzte — darunter, welche Tokens der Pool handelt und das Preisverhältnis zwischen ihnen. Wie bei Initialisierungs-Funktionen üblich, sollte init() genau einmal beim Anlegen des Pools aufgerufen werden.

Der fatale Fehler: DODOs Crowdpool-Contract schützte nicht davor, dass init() ein zweites Mal aufgerufen wurde. Ein Angreifer konnte:

  1. init() erneut auf einem bestehenden, finanzierten Crowdpool aufrufen und einen Fake-Token unter seiner Kontrolle als eines der Pool-Assets übergeben sowie ein beliebiges Preisverhältnis setzen.
  2. Der Pool glaubte nun, das echte Asset gegen den wertlosen Fake-Token des Angreifers zu einem vom Angreifer gewählten Kurs zu handeln.
  3. Per Flash Loan den Fake-Token in den Pool „handeln" und die echten Assets des Pools zum manipulierten Kurs extrahieren.
  4. Über die vier betroffenen Crowdpools wiederholen.

Insgesamt extrahierbar waren rund 3,8 Mio. $. Aber die Transaktionen des Angreifers waren im öffentlichen Mempool sichtbar, und MEV-Arbitrage-Bots front-runten etwa 1,9 Mio. $ des Exploits — sie spielten den Angriff nach, um die Gelder vor dem ursprünglichen Angreifer abzuziehen. Einige dieser Front-Running-Bots wurden von White-Hats betrieben, die die Gelder zurückgaben; andere behielten sie.

Folgen

  • DODO pausierte die betroffenen Crowdpools und shippte einen gefixten Contract mit ordentlichen Re-Initialisierungs-Guards.
  • DODO veröffentlichte einen Resolution-Post und arbeitete daran, front-runte Gelder zurückzuholen und zurückzugeben; ein relevanter Teil wurde durch zurückgebende MEV-Bot-Betreiber und Verhandlungen wiederhergestellt.
  • Der Kern-AMM des Protokolls war nicht betroffen — nur das Crowdpool-Feature.

Warum es wichtig ist

Der DODO-Vorfall ist einer der frühesten Re-Invokable-Initializer-Exploits der DeFi-Geschichte — vor dem bekannteren Audius (2022) und setzt die Linie von Parity Multisig (2017) fort. Die Bug-Klasse — eine init()- oder initialize()-Funktion ohne Schutz gegen mehrfachen Aufruf — ist eine der am besten dokumentierten in Solidity und eine der am häufigsten wiederholten.

Die strukturellen Lektionen:

  1. Jede Initialisierungs-Funktion braucht einen expliziten One-Shot-Guard — OpenZeppelins initializer-Modifier, ein initialized-Boolean oder Äquivalentes. Das Pattern ist eine Codezeile.

  2. Der öffentliche Mempool macht jeden Exploit zum Rennen. DODOs Vorfall ist eine der frühesten klaren Demonstrationen, dass MEV-Bots, die einen Angreifer front-runnen, inzwischen Teil der Incident-Dynamik sind — manchmal zum Schlechteren (Bots behalten die Gelder), manchmal zum Besseren (White-Hat-Bots geben sie zurück). Das exploitete Protokoll hat oft am wenigsten Kontrolle darüber, wo die Gelder landen.

  3. Feature-Isolation begrenzt den Blast-Radius. DODOs Kern-AMM war nicht betroffen, weil der Bug auf das Crowdpool-Feature beschränkt war. Protokolle, die neue Features hinter separaten Contracts isolieren (statt monolithische Kern-Contracts auszuweiten), begrenzen den Schaden, wenn ein neues Feature mit einem Bug shippt.

DODO erholte sich und blieb eine relevante DEX — eines der wenigen Protokolle aus der Exploit-Welle 2021, das den Vorfall mit weitgehend intaktem Ruf überstand, teils dank des transparenten Aufarbeitungs-Prozesses und der glücklichen (wenn chaotischen) MEV-Bot-Teilwiederherstellung.

Quellen & On-Chain-Belege

  1. [01]halborn.comhttps://halborn.com/explained-the-dodo-dex-hack-march-2021/
  2. [02]coindesk.comhttps://www.coindesk.com/tech/2021/03/09/dodo-dex-drained-of-38m-in-defi-exploit
  3. [03]dodoexchange.medium.comhttps://dodoexchange.medium.com/dodo-incident-which-affected-4-crowdpools-and-our-resolution-9da0298c2b65

Verwandte Einträge