Galaxy Research meldet, es habe eine erste Transaktionswelle identifiziert, die wahrscheinlich mit der Schwachstelle zusammenhängt. Demnach wurden am 30. Juli innerhalb von 41 Minuten rund 1.083 BTC im Wert von 70,2 Millionen US-Dollar von 1.196 Adressen abgezogen. Der Angriff ereignete sich laut Bericht etwa 30 Stunden bevor Coinkite den Fehler öffentlich machte.
Nach Angaben von Galaxy wiesen sämtliche Transaktionen dieselbe fest einkodierte Gebühr von 30 Satoshis pro virtuellem Byte auf und hinterließen keinen Wechselgeld-Ausgang. Das Unternehmen schließt daraus auf ein automatisiertes Werkzeug. Galaxy erklärte: „Als Erkennungsmerkmal zahlte jede vollständige Leerung dieselben fest einkodierten 30,0 sat/vB — eine 30- bis 75-fache Überzahlung gegenüber dem Wochenmittel von 0,4 bis 1,0 sat/vB — und ließ keinen Wechselgeld-Ausgang zurück.“ Das sehe nach einem automatisierten Werkzeug aus, das bereits vorhandene Schlüssel nutzte, nicht nach Besitzern, die ihre Guthaben bewegten.
Am 1. August identifizierte Galaxy Research eine zweite und dritte Welle. Damit stieg die Schätzung auf 1.367 gestohlene Bitcoin im Wert von etwa 88,6 Millionen US-Dollar aus 4.585 Adressen. Zum Zeitpunkt des Berichts befanden sich die gestohlenen Bitcoin weiterhin auf vom Angreifer kontrollierten Adressen.
Chainalysis stellte fest, dass der Angreifer vorrangig Wallets mit hohen Guthaben auswählte. Nach Angaben des Unternehmens wurden in den ersten zehn Minuten etwa 30 Millionen US-Dollar entwendet; von einem einzelnen Opfer verschwanden 1,8 Millionen US-Dollar. Das deute darauf hin, dass der Angreifer die betroffenen Wallets vor Beginn der Diebstähle identifiziert und untersucht hatte.
Block erklärt, seine Teams für Bitcoin Engineering und Security hätten nach Berichten über Diebstähle aus COLDCARD-Wallets gemeinsam mit anderen Forschern die Firmware analysiert und die zugrunde liegende Schwachstelle identifiziert. Laut Block wurde die Ursache bis zu einem Integrationsfehler im Zufallszahlengenerator-Code zurückverfolgt; die Ergebnisse seien Coinkite am 30. Juli offengelegt worden.
In Blocks Bericht heißt es, die COLDCARD-Firmware enthalte einen Integrationsfehler im Zufallszahlengenerator, durch den ngu.random auf den deterministischen Yasmarang-Fallback von MicroPython zurückgreife statt auf den Hardware-Zufallszahlengenerator des STM32. Zwar verfügt COLDCARD über einen separaten Hardware-Zufallszahlengenerator, doch eine fehlerhafte Prüfung in der Firmware führte dazu, dass stattdessen ein deterministischer Software-Generator genutzt wurde.
Dieser Fallback-Generator stützte sich laut Block auf die Kennung des Mikrocontrollers und auf System-Timing-Werte. Das seien keine kryptografisch sicheren Zufallsquellen und sie könnten beobachtbar oder rekonstruierbar sein. Dadurch konnten Angreifer mögliche Wallet-Seeds offline erzeugen, die zugehörigen Bitcoin-Adressen bestimmen und mit auf der Blockchain sichtbaren Adressen abgleichen. Bei einer Übereinstimmung ließ sich der korrekte Seed bestätigen und daraus die privaten Schlüssel zum Abzug der Guthaben ableiten.
Laut einem Sicherheitshinweis von Coinkite sind Seeds betroffen, die auf Mk2- und Mk3-Firmware-Versionen 4.0.1 bis 4.1.9 erzeugt wurden, auf Mk4- und Mk5-Geräten vor Standardversion 5.6.0 oder Edge-Version 6.6.0X sowie auf Q-Geräten vor Standardversion 1.5.0Q oder Edge-Version 6.6.0QX. Fehlerbereinigte Firmware gibt es als Version 4.2.0 oder neuer für Mk2 und Mk3, 5.6.0 oder neuer für Standard-Mk4- und Mk5-Geräte, 1.5.0Q oder neuer für Standard-Q-Geräte sowie als 6.6.0X beziehungsweise 6.6.0QX für die jeweiligen Edge-Versionen.
Coinkite betont jedoch, dass ein Firmware-Update einen bereits früher erzeugten Seed nicht repariert. Betroffene Nutzer sollen ihr vorhandenes Backup prüfen, die korrigierte Firmware installieren, einen neuen Seed erzeugen und sicher notieren, die neue Wallet-Adresse auf dem Gerät verifizieren, eine kleine Testtransaktion senden und erst dann die restlichen Mittel umziehen. Das alte Backup solle bis zum vollständigen und bestätigten Abschluss der Migration aufbewahrt werden.
Nach Angaben von Coinkite gelten Seeds, die mit mindestens 50 fairen, unabhängigen und privaten Würfelwürfen ergänzt wurden, allein durch diese Schwachstelle nicht als gefährdet. Eine starke, eindeutige BIP-39-Passphrase erschwere die Ausnutzung ebenfalls, behebe aber den zugrunde liegenden Seed nicht. Nicht betroffen seien laut Coinkite die Produkte TAPSIGNER, OPENDIME und SATSCARD, da sie andere Codebasen verwenden. Außerdem habe das Unternehmen alle noch nicht ausgelieferten COLDCARD-Geräte mit betroffener Firmware zerstört. Kunden, deren Geräte bereits versandt worden waren, seien per E-Mail mit dem Sicherheitshinweis und Anweisungen zur Migration ihrer Guthaben kontaktiert worden.
