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.
- Der Exploit wird ausgeführt, und die Ethereum Foundation veröffentlicht ein kritisches Update, das die Schwachstelle bestätigt. Ethereum Foundation
- 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
- 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.