Forschung . Anfälligkeit
MilkSad: Die Schwachstelle „bx seed“ (CVE-2023-39910)
Teil unserer Forschung zum Thema „schwache Zufälligkeit“: Siehe die Übersicht „Schwache Zufälligkeit in Krypto-Wallets“.
Wallets, die mit dem Befehl „bx seed“ von libbitcoin-explorer erstellt wurden, bezogen ihre Entropie aus einer Uhr und nicht aus echter Zufälligkeit – was sie vorhersehbar und für ihre rechtmäßigen Besitzer wiederherstellbar macht.
MilkSad, katalogisiert unter der Nummer CVE-2023-39910, ist einer der offensichtlichsten Fälle von unzureichender Zufälligkeit in der Geschichte der Kryptowährungen. Betroffen sind Wallets, deren Seed mit dem Befehl „bx seed“ in libbitcoin-explorer generiert wurde. Der Name leitet sich von der Mnemonik des schwächstmöglichen Seeds ab, die mit „milk sad…“ beginnt. Auf dieser Seite werden die Schwachstelle sowie die Vorgehensweise zur Wiederherstellung für Besitzer betroffener Wallets erläutert.
Was ist die „MilkSad“-Sicherheitslücke?
Um eine Wallet zu erstellen, benötigt man echte Zufälligkeit. Das bx-Seed-Tool hat stattdessen einen Mersenne-Twister-Pseudozufallsgenerator (MT19937) mit der Systemzeit in Sekunden – einem 32-Bit-Wert – initialisiert. Dadurch wird der gesamte Schlüsselraum stark eingeschränkt: Anstelle einer astronomisch großen Anzahl möglicher Seeds gibt es nur etwa vier Milliarden, in der Praxis sogar weitaus weniger, da der Erstellungszeitpunkt in der Regel innerhalb eines bestimmten Zeitfensters bekannt ist. Jeder, der ungefähr weiß, wann eine Wallet erstellt wurde, kann den genauen Seed, der dabei erzeugt wurde, neu generieren.
Wer ist betroffen?
Jede Wallet, deren Seed-Entropie von „bx seed“ stammt, ist betroffen – und zwar für den gesamten Zeitraum, in dem das Tool diese Schwachstelle aufwies (etwa 2011–2023). Dazu gehören Nutzer, die „libbitcoin-explorer“ direkt verwendet haben, und – was besonders wichtig ist – alle, die einem Tutorial oder Skript gefolgt sind, das im Hintergrund „bx seed“ aufrief, um eine Mnemonik zu generieren. Wenn Ihre BIP39-Phrase auf diese Weise erstellt wurde, war sie von vornherein nicht sicher – die Phrase gehörte zu einer kleinen, abzählbaren Menge.
Warum der Zeit-Seed fatal ist
Ein Mersenne-Twister ist deterministisch: Der gleiche Startwert erzeugt immer denselben Datenstrom. Der Startwert ist also das einzige Geheimnis, und in diesem Fall handelte es sich bei diesem Wert lediglich um einen Zeitstempel. Die Rekonstruktion einer Wallet erfolgt nun wie folgt: Man durchläuft die in Frage kommenden Sekunden innerhalb des plausiblen Erstellungszeitraums, wendet auf jede Sekunde denselben MT19937 an, um dieselbe Entropie zu erzeugen, leitet daraus die resultierende Mnemonik und die Adressen ab und vergleicht diese mit der bekannten Adresse. Da ein Tag nur 86.400 Sekunden und ein Jahr etwa 31 Millionen Sekunden umfasst, ist die Suche auf gewöhnlicher Hardware schnell abgeschlossen. Es handelt sich um dieselbe Fehlerklasse wie bei Randstorm – vorhersehbare Zufälligkeit – nur in einem anderen Tool.
So funktioniert die Rückforderung für den Eigentümer
Genau diese Vorhersehbarkeit, die MilkSad gefährlich macht, ermöglicht es dem rechtmäßigen Eigentümer, eine betroffene Wallet wiederherzustellen. Wenn Sie eine Wallet mit einem betroffenen Tool erstellt und später die Mnemonik verloren haben, können wir diese neu generieren: Anhand eines ungefähren Erstellungsdatums und einer bekannten Adresse aus der Wallet durchlaufen wir den Zeitstempelbereich der MT19937-Ableitung, bis die Adressen übereinstimmen, und rekonstruieren dann den genauen Seed. Dies tun wir ausschließlich für Wallets, die Ihnen gehören und zu denen Sie eine Verbindung nachweisen können – es geht darum, Gelder an ihren Eigentümer zurückzugeben, nicht darum, Diebstahl zu ermöglichen.
Falls Sie glauben, dass Sie betroffen sind
Falls eine Ihrer Wallets möglicherweise mit „bx seed“ oder einem darauf aufbauenden Tool erstellt wurde und noch Guthaben enthält, sollten Sie davon ausgehen, dass sie kompromittiert ist: Übertragen Sie das Guthaben so schnell wie möglich in eine neue Wallet, die mit einem ordnungsgemäß zufälligen Seed erstellt wurde, da auch andere Personen die alte Wallet neu generieren können. Falls Sie den Zugriff bereits verloren haben, ist eine Wiederherstellung gerade wegen dieser Schwachstelle realistisch – dieselbe Methode, die ein Angreifer anwenden würde, ist auch diejenige, mit der Sie Ihre Coins zurückerhalten.
Wie hoch war das Risiko?
Die Folge eines Schlüsselraums mit vier Milliarden Seeds ist, dass betroffene Wallets von jedem, der die Enumeration durchführt, massenhaft leergeräumt werden können – und genau das ist bei einigen auch geschehen. Da die Schwachstelle in einem weit verbreiteten Befehlszeilentool lag, breitete sich das Risiko über jedes Skript, jedes Tutorial und jedes nachgelagerte Projekt aus, das dieses Tool aufrief, um „einen sicheren Seed zu generieren“. Das ist die heimtückische Gefahr eines Fehlers bei der schwachen Zufallsgenerierung: Er macht keine Anzeichen, die Wallets sehen normal aus, die Mnemonik sieht aus wie jede andere aus zwölf Wörtern, und die Schwachstelle bleibt unsichtbar, bis jemand den Seed-Raum durchforstet. Für einen Besitzer bedeutet dies in der Praxis, dass das Guthaben jederzeit verschwinden kann; daher sollte eine betroffene Wallet unverzüglich in eine neue geleert werden.
Schwache Zufälligkeit ist ein wiederkehrendes Muster
MilkSad ist kein Einzelfall; es gehört zu einer ganzen Reihe von Fehlern, bei denen die Zufälligkeit einer Wallet auf etwas Vorhersehbarem beruhte – einer Uhr, einer Browser-Macke, einem fehlerhaften Plattformgenerator. Randstorm untergrub die Entropie früherer Browser-Wallets; die „SecureRandom“-Sicherheitslücke bei Android im Jahr 2013 führte durch wiederholte Signatur-Nonces zum Verlust von Schlüsseln; der Ethereum-Presale-Generator von 2014 stützte sich für Teile seines Prozesses auf die Browser-Funktion „Math.random“. Der rote Faden ist, dass die Kryptografie zwar solide war, der Startwert jedoch nicht, und in jedem Fall ermöglicht dieselbe Vorhersehbarkeit, die den Diebstahl ermöglichte, auch die Wiederherstellung für den rechtmäßigen Eigentümer. Dies ist ein zentraler Aspekt unserer Forschung, da ein großer Teil der „verlorenen“ frühen Kryptowährungen in Wirklichkeit Kryptowährungen mit schwacher Zufälligkeit sind, die nur darauf warten, rekonstruiert zu werden.
Offenlegung und unsere Arbeit
MilkSad wurde 2023 von den Sicherheitsforschern hinter dem milksad.info-Hinweis öffentlich bekannt gegeben und mit der CVE-Nummer 2023-39910 versehen; die Entdeckung geht auf ihr Konto. Der Beitrag von KeychainX liegt im Bereich der Wiederherstellung: Im Rahmen unserer umfassenderen Arbeit zur Wiederherstellung bei schwacher Zufälligkeit haben wir für die Besitzer betroffener Wallets die Rekonstruktion des Zeit-Seeds entwickelt und durchgeführt (siehe unsere Randstorm-Studie zum eng verwandten Fall der Browser-Wallets). Für die vollständige technische Offenlegung verweisen wir auf den ursprünglichen Sicherheitshinweis.
Häufig gestellte Fragen
Was ist MilkSad?
Eine Schwachstelle im Zusammenhang mit schwacher Entropie (CVE-2023-39910) im Befehl „bx seed“ von libbitcoin-explorer, bei der ein Mersenne-Twister mit der 32-Bit-Systemzeit initialisiert wurde – wodurch die resultierenden Seeds vorhersehbar und durch Durchprobieren ermittelbar waren.
Ist mein Geldbeutel davon betroffen?
Wenn Ihr Seed mit „bx seed“ oder einem Tool bzw. Tutorial, das dieses Programm verwendet hat, generiert wurde, dann ja. Die Sicherheit dieser Phrase war von vornherein nicht gegeben; übertragen Sie alle Guthaben in eine Wallet mit einem ordnungsgemäß zufällig generierten Seed.
Kann eine MilkSad-Wallet wiederhergestellt werden, wenn ich den Seed verloren habe?
Oftmals ja, zumindest für den Eigentümer. Mit einem ungefähren Erstellungsdatum und einer bekannten Adresse generieren wir den Seed neu, indem wir den Zeitstempelbereich durch denselben Ableitungsprozess durchlaufen lassen, bis die Adressen übereinstimmen.
Wer hat MilkSad entdeckt?
Die Forscher hinter dem milksad.info-Hinweis haben diese Schwachstelle im Jahr 2023 veröffentlicht (CVE-2023-39910). KeychainX unterstützt betroffene Besitzer bei der Wiederherstellung.
Wie viel kostet die Wiederherstellung?
Erfolgsabhängig: Ein Prozentsatz des wiedererlangten Wertes, jedoch nur, wenn wir die Geldbörse wiederfinden – und keine Vorauszahlung.
Eine Brieftasche, die mit einem minderwertigen Werkzeug hergestellt wurde?
Falls Ihr Seed möglicherweise von BX Seed stammt und Sie den Zugriff darauf verloren haben, lässt er sich wahrscheinlich wiederherstellen. Teilen Sie uns die Wallet-Adresse und ein ungefähres Datum mit – wir geben Ihnen innerhalb von 24 Stunden eine ehrliche Einschätzung.