Zum Inhalt springen
Vorfallsdatensatz · · 1 Min. Lesezeit · 207 Wörter ·Entdeckt ·Offengelegt Behoben

The DAO Recursive-Call-Exploit, Juni 2016: Was geschah und was zu prüfen ist

Ein Reentrancy-Fehler in der Split-Funktion von The DAO zog rund 3,6 Mio. ETH ab und führte zu der umstrittenen Hard Fork, aus der Ethereum und Ethereum Classic hervorgingen.

Teilen
Schema des Vorfalls bei The DAO, das die Phase Reentrancy als Fehlerpunkt zeigt.
Schematic of the The DAO incident showing the reentrancy stage as the failure point.

Auf einen Blick

BETROFFENE ORGANISATION
The DAO
CHAIN(S)
Ethereum
ANGRIFFSKLASSE
Reentrancy
GEMELDETER VERLUST
rund 3,6 Mio. ETH(Ethereum Foundation, 17 Juni 2016)
OFFIZIELLE STELLUNGNAHME
blog.ethereum.org

Der Bug, der einer Schwachstellenklasse ihren Namen gab

Die Split-Funktion von The DAO überwies Ether an den Aufrufer, bevor sie dessen verbuchtes Guthaben aktualisierte. Ein Contract, der Ether empfängt, kann Code ausführen, und dieser Code konnte die Split-Funktion erneut aufrufen — zu einem Zeitpunkt, an dem das Guthaben noch immer auswies, dass dem Angreifer der volle Betrag zustand. Wiederholt man das innerhalb einer Transaktion, vervielfacht sich die Abhebung.

Reentrancy war schon vorher bekannt. Was The DAO leistete, war, die Kosten im großen Maßstab vorzuführen und Checks-Effects-Interactions als die Reihenfolge zu etablieren, die heute jedem Solidity-Entwickler beigebracht wird.

Warum es weiterhin zählt

Fast ein Jahrzehnt später taucht Reentrancy weiterhin in diesem Tracker auf — beim Curve-Vorfall ging es um Reentrancy-Guards, die korrekt geschrieben, aber fehlerhaft kompiliert wurden. Die Schwachstellenklasse verschwand nicht; die Wege, sie zu erreichen, vervielfachten sich.

Die Fork

Conisec hält das Ergebnis fest, ohne es gutzuheißen: Die Mittel wurden zurückgeholt, indem die Historie der Chain durch eine Hard Fork geändert wurde, was eine erhebliche Minderheit ablehnte. Aus dieser Uneinigkeit gingen zwei Chains hervor, die beide bis heute existieren. Es ist die schärfste verfügbare Veranschaulichung dafür, dass „code is law“ die Beschreibung einer Präferenz ist und nicht dessen, wie sich das System unter Druck tatsächlich verhalten hat.

Chronologie

Nur Anfügen. Korrekturen werden als eigener, datierter Eintrag ergänzt; frühere Einträge werden nie umgeschrieben.

  1. Der Exploit wird ausgeführt, und die Ethereum Foundation veröffentlicht ein kritisches Update, das die Schwachstelle bestätigt. Ethereum Foundation
  2. Eine Hard Fork bei Block 1.920.000 verschiebt die abgezogenen Mittel in einen Abhebungscontract. Die nicht geforkte Chain läuft als Ethereum Classic weiter. Ethereum Foundation

Was zu prüfen ist

Die Ethereum Foundation veröffentlichte seinerzeit ein kritisches Update; dieser Beitrag und die anschließende Dokumentation der Hard Fork sind der maßgebliche Nachweis.

Conisec hostet und verlinkt keine Tools zur Wiederbeschaffung, zum Widerruf oder zur „Überprüfung“. Nach einem öffentlichen Vorfall streuen Angreifer routinemäßig genau solche Links unter den Namen der Publikationen, die über den Fall berichten. Nutzen Sie ausschließlich den oben verlinkten offiziellen Kanal des betroffenen Projekts selbst.

Quellen

  1. Ethereum Foundation, CRITICAL UPDATE Re: DAO Vulnerability (17 Juni 2016)

Keine Beratung. Dies ist eine Zusammenfassung veröffentlichter Fakten, keine Rechts-, Steuer- oder Sicherheitsberatung. Prüfen Sie die oben verlinkten Primärquellen.

Zuletzt verifiziert von Conisec Staff.

Weiter erkunden