Forschende von Block haben eine kritische Schwachstelle in der Firmware der Hardware-Wallets Coldcard des kanadischen Unternehmens Coinkite offengelegt: Seit März 2021 nutzte die Seed-Generierung auf betroffenen Geräten einen vorhersagbaren softwarebasierten Pseudozufallszahlengenerator (PRNG) anstelle des Hardware-RNG. Die effektive Entropie der Seeds lag zwischen 40 und 72 Bit statt der erwarteten 128 Bit für eine 12-wortige BIP-39-Phrase. Coinkite hat am 31. Juli ein Notfall-Update für die Firmware veröffentlicht, doch dieses behebt bereits erzeugte schwache Seeds nicht – Besitzer müssen einen neuen Seed unter der aktualisierten Firmware erzeugen und ihre Gelder übertragen. Parallel dazu hat Galaxy Research am 30. Juli eine verdächtige Operation registriert: 1.196 Bitcoin-Adressen wurden innerhalb von 41 Minuten geleert, insgesamt 1.082,65 BTC (~70,2 Mio. US-Dollar), allerdings ist ein ursächlicher Zusammenhang mit dieser Schwachstelle nicht belegt.
Technischer Kern der Schwachstelle
Die Ursache des Problems liegt in der Build-Konfiguration der Coldcard-Firmware. Das Makro MICROPY_HW_ENABLE_RNG war auf Null gesetzt, da Coinkite einen eigenen Wrapper für den Hardware-Zufallszahlengenerator des STM32 verwendet. Die Bibliothek libngu prüfte jedoch nur das Vorhandensein des Makros, nicht dessen Wert. In der Folge band der Build an den softwarebasierten MicroPython-Fallback – den Algorithmus Yasmarang – an.
Dieser softwarebasierte PRNG wurde aus der eindeutigen Chip-Kennung (UID) und den Werten von Timer-Registern initialisiert und erhielt danach keine frische Entropie mehr. Nach Angaben der Forschenden von Block kann ein Angreifender, der den UID-Suchraum des Geräts, den Timer-Zustand und die Historie der vorherigen Generatoraufrufe bestimmen oder stark eingrenzen kann, den Strom der Ausgabewerte offline – ohne Zugriff auf das Gerät – rekonstruieren. Die so erhaltenen Kandidaten für Seed-Phrasen werden geprüft, indem daraus Adressen berechnet und mit öffentlichen Blockchain-Daten abgeglichen werden.
Die Schätzungen der effektiven Entropie gehen zwischen Hersteller und Forschenden auseinander:
- Mk3: Coinkite schätzt die Entropie auf etwa 40 Bit
- Mk4, Mk5 und Q: laut Coinkite etwa 72 Bit
- Block setzt die bedingten oberen Grenzen jeweils unterhalb von 240,7 bzw. 273,3 an und warnt, dass der letztere Wert nicht einer 73-Bit-kryptographischen Sicherheit entspricht
Zum Vergleich: Ein regulärer 12-wortiger BIP-39-Seed bietet 128 Bit Entropie. Block hat keine Benchmark-Ergebnisse für einen Brute-Force-Angriff veröffentlicht, und die praktische Kostenstruktur eines Angriffs hängt von den verfügbaren Informationen über die UID, den Boot-Zeitpunkt, die Historie früherer Generatoraufrufe und die Kosten der Schlüsselderivation ab.
Betroffene Versionen
Die Verwundbarkeit richtet sich nach der Firmware, unter der der Seed erzeugt wurde, nicht nach der aktuell installierten Version:
- Mk3: Versionen 4.0.1–4.1.9 (behoben in 4.2.0) laut Coinkite; Block bezieht zusätzlich Mk2 und Version 4.0.0 ein
- Mk4 und Mk5: alle Versionen bis einschließlich 5.6.0
- Q: alle Versionen bis einschließlich 1.5.0Q
- Edge-Builds: bis 6.6.0X für Mk4/Mk5, bis 6.6.0QX für Q
Die Produkte TAPSIGNER, OPENDIME und SATSCARD verwenden eine andere Codebasis und sind nicht betroffen.
Wichtige Abweichung: Coinkite erwähnt in seiner Warnung das Modell Mk2 nicht, während die Untersuchung von Block es in die Liste der verwundbaren Geräte aufnimmt. Besitzer eines Mk2 sollten ihre Seeds als potenziell kompromittiert betrachten.
Verdächtige Operation am 30. Juli
Nach Angaben von Galaxy Research hat ein unbekannter Akteur am 30. Juli innerhalb von 41 Minuten 1.196 Bitcoin-Adressen geleert und 1.082,65 BTC transferiert. Galaxy weist darauf hin, dass in den vorangegangenen 30 Tagen keine weiteren Transaktionen mit derselben Kombination von Merkmalen festgestellt wurden: eine Gebühr von 30 sat/vB und kein Wechselgeld (Change).
Galaxy warnte jedoch, dass dieses Muster den Operator identifiziert, nicht den Tatbestand eines Diebstahls: Eine Massenübertragung von Geldern sieht gleich aus, unabhängig davon, ob sie vom Eigentümer oder von einem Angreifer durchgeführt wird. Kein einziger öffentlicher Bericht hat den Seed eines Opfers rekonstruiert und mit einer geleerten Adresse abgeglichen. Die Verbindung zwischen dieser Operation und der Coldcard-Schwachstelle bleibt eine Vermutung, die auf der Analyse von Blockchain-Mustern basiert.
Einschätzung der Auswirkungen
Gefährdet sind alle Coldcard-Nutzer, die ihren Seed auf verwundbaren Firmware-Versionen ohne Verwendung einer ausreichenden Anzahl von Würfelwürfen erzeugt haben. Angesichts der Positionierung von Coldcard als Wallet für die langfristige Aufbewahrung größerer Bitcoin-Beträge ist das potenzielle Schadensausmaß erheblich. Modelle Mk3 mit einer Entropie von etwa 40 Bit befinden sich im höchsten Risikobereich – ein solcher Schlüsselraum kann mit heutigen Rechenressourcen durchprobiert werden.
Multisignatur (multisig) senkt das Risiko nur, wenn der Quorum nicht vollständig aus betroffenen Coldcard-Geräten besteht.
Praktische Empfehlungen
- Bestimmen Sie die Firmware-Version, unter der der Seed erzeugt wurde. Wenn sie in die Liste der verwundbaren Versionen fällt, sollten Sie den Seed als kompromittiert betrachten.
- Aktualisieren Sie die Firmware auf eine fehlerbereinigte Version (4.2.0 für Mk3, 5.6.0 für Mk4/Mk5, 1.5.0Q für Q).
- Erzeugen Sie einen neuen Seed unter der aktualisierten Firmware. Das Übertragen des alten Seeds auf eine aktualisierte Firmware oder in eine andere Wallet beseitigt die Schwäche nicht – die Verwundbarkeit liegt im Seed selbst.
- Übertragen Sie sämtliche Gelder von alten Adressen auf Adressen, die aus dem neuen Seed abgeleitet wurden.
- Verwenden Sie Würfelwürfe: Coinkite gibt an, dass ein Seed, der mit mindestens 50 fairen, unabhängigen und privaten Würfelwürfen erzeugt wurde, von dieser Schwachstelle nicht betroffen ist. Wenn Anzahl oder Vertraulichkeit der Würfe zweifelhaft sind, sollten Sie migrieren.
- BIP-39-Passphrase: Eine starke, eindeutige Passphrase erzeugt eine separate Wallet, die mit den reinen Seed-Wörtern nicht zugänglich ist; dennoch empfiehlt Coinkite den Austausch des Seeds.
Besitzer betroffener Coldcard-Geräte müssen unverzüglich handeln: die Firmware aktualisieren, einen neuen Seed erzeugen und die Gelder auf neue Adressen übertragen. Zögern bedeutet, Bitcoins mit einer Entropie von nur 40–72 Bit zu schützen – weit unter dem BIP-39-Standard. Auf eine Bestätigung des Zusammenhangs zwischen der Schwachstelle und konkreten Diebstählen zu warten, ist keine sinnvolle Strategie: Schon die Vorhersagbarkeit des Generators macht Seeds verwundbar, unabhängig davon, ob jemand sie in der Praxis bereits ausgenutzt hat.