Das Unternehmen für Kryptowährungs-Wiederherstellung Unciphered entdeckte eine Schwachstelle in einer JavaScript-Bitcoin-Bibliothek, die private Schlüssel gefährden könnte.
Millionen von Kryptowährungs-Wallets, die zwischen 2011 und 2015 erstellt wurden, könnten laut neuer Forschung von Unciphered von einer Schwachstelle in einer Open-Source-Software betroffen sein und müssten möglicherweise neu generiert werden.
Probleme in der Open-Source-JavaScript-Bitcoin-Bibliothek BitcoinJS
Während Unciphered einem Kunden half, Zugang zu einer gesperrten Bitcoin-Wallet wiederzuerlangen, stieß das Unternehmen auf Probleme in der Open-Source-JavaScript-Bitcoin-Bibliothek BitcoinJS, die weitere Untersuchungen erforderten. Sicherheitsforscher der Kryptowährungs-Wiederherstellungsfirma bestätigten, dass die Schwachstelle auf eine Reihe von Programmierfehlern zurückzuführen war – und erkannten, dass sie nicht die Ersten waren, die die Bedrohung für Kryptowährungen entdeckten.
Unciphered arbeitete 22 Monate lang an der Schwachstelle, führte eine koordinierte Offenlegung mit mehreren Entitäten durch, bewies, dass die Forscher in Krypto-Wallets eindringen konnten, arbeitete an Abhilfemaßnahmen und warnte Millionen von Nutzern. Eine öffentliche Bekanntmachung erwies sich als schwierig, da die Forscher Angreifer nicht warnen wollten.
Da die Behebung allein nicht ausreichte, mussten die Forscher Kryptowährungs-Wallet-Entwickler identifizieren und benachrichtigen, die zwischen 2011 und 2015 aktiv waren, und sie bitten, ihre Kunden zu warnen, wenn möglich.
Wie der Offenlegungsprozess war auch die Schwachstelle nicht einfach. Es gibt keine CVE für den Fehler, aber er betrifft die zur Sicherung von Kryptowährungs-Wallets generierten Zufallszahlen. Außerdem entdeckten die Forscher andere Probleme, die, wenn sie kombiniert würden, Angreifern den Zugang zu Wallet-Schlüsseln ermöglichen würden. Die Forscher nannten die Bedrohung „Randstorm“.
„Randstorm() ist ein Begriff, den wir geprägt haben, um eine Sammlung von Fehlern, Designentscheidungen und API-Änderungen zu beschreiben, die, wenn sie miteinander in Kontakt kommen, die Qualität der von Webbrowsern einer bestimmten Ära (2011-2015) produzierten Zufallszahlen drastisch reduzieren“, schrieb Unciphered in seinem FAQ. „Große Zufallszahlen sind eine entscheidende Zutat für die Gesamtsicherheit der Blockchain-Technologie.“
Unciphered veröffentlichte am Dienstag technische Details in einem weiteren Blogbeitrag. Die Forscher fanden heraus, dass die Quelle der Schwachstelle in der SecureRandom()-Funktion in der JSBN-JavaScript-Bibliothek lag, die BitcoinJS bis 2014 verwendete.
Die Schwachstellenkette kombiniert die SecureRandom()-Funktion „mit Schwächen, die in wichtigen Browser-Implementierungen von Math.random() bestanden“. Infolgedessen könnten Bitcoin-Private-Keys mit weniger Entropie als erforderlich generiert worden sein, was sie anfälliger für Angriffe macht.
Obwohl ein genauer Zeitrahmen schwer zu bestimmen war, beobachteten die Forscher, dass anfällige Wallets von 2011 bis 2015 generiert wurden. Bitcoin-Wallets waren betroffen, aber auch Dogecoin-Wallets könnten betroffen sein.
Milliarden von Dollar stehen auf dem Spiel
Die Untersuchung ergab auch, dass Unciphered nicht die Ersten waren, die Sicherheitsprobleme in BitcoinJS entdeckten. Berichte über Schwachstellen in der SecureRandom()-Funktion, die zahlreiche Kryptowährungsprodukte betrafen, wurden 2018 ausführlich dargestellt, während Probleme im Zusammenhang mit Math.random() bis 2015 zurückreichen.
Seit der Entdeckung im Januar 2022 sagte Unciphered, es habe Blockchain.com, BitGo, Block.io/Dogechain.info, BitPay, Blockstream Green, Bitaddress.org, Coinkite und BitcoinJS benachrichtigt. Nicht alle benachrichtigten Anbieter waren betroffen, und Unciphered warnte, dass es andere nicht identifizierte betroffene Parteien geben könnte.
Die Forscher fügten hinzu, dass die Auswirkungen eines Angriffs ebenfalls variieren. Faktoren sind, wie lange der anfällige Code verwendet wurde, welche zusätzlichen Milderungen durchgeführt wurden und wie groß die Benutzerbasis zu der Zeit war.
„Typischerweise muss ein Angreifer für diesen Angriff etwas haben, das zum Zeitpunkt der Wallet-Erstellung aus Math.random() generiert wurde – das wäre typischerweise die Wallet-GUID oder IV. Dies reduziert die notwendige Arbeit irgendwo zwischen 32 und 64 Bits“, heißt es im Blog.
Die Forscher warnten, dass die Schwachstelle „potenziell Millionen von Kryptowährungs-Wallets“ betrifft, die zwischen 2011 und 2015 generiert wurden. Unciphered schätzte, dass ungefähr 1,4 Millionen Bitcoin in Wallets mit schwachen Schlüsseln enthalten sind. „Wenn wir konservativ schätzen, dass nur 3-5% der Wallets, die in dieser Zeit generiert wurden, betroffen sind, liegt der aktuelle Wert der gefährdeten Münzen zwischen 1,2 und 2,1 Milliarden USD (angenommen 1 BTC=30.000 USD)“, schrieb das Unternehmen im FAQ.
Obwohl der potenzielle Angriffsumfang und die Auswirkungen erheblich sein könnten, sagte Unciphered, dass die BitcoinJS-Schwachstelle auf ein größeres Problem mit der Software-Lieferkette hinweist.
„Fast alle bedeutenden Softwareentwicklungsprojekte verlassen sich auf Bibliotheken von Drittanbietern. Wie im obigen Cartoon dargestellt, ist es nicht unüblich, dass beliebter Code von Projekten abhängig ist, die unterbesetzt oder sogar aufgegeben sind“, so der Blog.
Unciphered hob eine Warnung von der GitHub-Seite von BitcoinJS hervor, die Benutzer aufforderte, „jeglichen zugrunde liegenden Code zu prüfen und zu verifizieren“. Diese Empfehlung sollte für Code aus jedem Open-Source-Projekt gelten, so der Blog.
Obwohl Randstorm noch nicht ausgenutzt wurde, bestätigten die Forscher, dass es möglich ist. Jüngste Angriffe zeigen, dass Kryptowährungen nach wie vor ein beliebtes Ziel für Bedrohungsakteure sind.
„Im Falle, dass Software, die zur Generierung von Wallets verwendet wird, anfällige Wallets erstellt hat, besteht die einzige Lösung darin, dass die Benutzer die Vermögenswerte in neue Wallets übertragen oder jemand anderen rechtlich dazu auffordern, dies in ihrem Namen zu tun“, so der Blog. „Deshalb beschäftigen wir uns auch 2023 noch mit dieser Schwachstelle.“