Coldcard, il bug nascosto da marzo 2021: 70 milioni in Bitcoin svaniti in 41 minuti
Un bug del firmware Coldcard ha causato il furto di 70 milioni in Bitcoin. Scopri i modelli vulnerabili e come migrare i fondi in modo sicuro.
Immagine illustrativa generata con AI
Il furto del 30 luglio: 1.196 indirizzi svuotati con una sola firma
Lo scorso 30 luglio, tra le 18:39 e le 19:20 UTC, 1.196 indirizzi Bitcoin sono stati prosciugati uno dopo l’altro. La raffica è durata appena 41 minuti e ha fruttato 1.082,65 BTC, circa 70,2 milioni di dollari al cambio del momento. Galaxy Research ha mappato l’operazione e l’ha collegata a una vulnerabilità nel firmware dei wallet hardware Coldcard, prodotti dall’azienda canadese Coinkite.
Tutte le transazioni condividevano lo stesso schema: fee di 30 sat/vB e nessun output di resto. Una firma on‑chain ripetitiva che, secondo gli analisti, potrebbe identificare l’esecutore, anche se lo schema non è di per sé una prova di attività malevola e potrebbe comparire in normali movimenti legittimi.
La falla: dal generatore hardware al PRNG software
Il difetto risale a marzo 2021. In quell’anno un errore di integrazione nel firmware di Coldcard iniziò a instradare la generazione del seed non più al vero generatore hardware di numeri casuali (TRNG) del chip STM32, ma a un PRNG software deterministico chiamato Yasmarang. La macro MICROPY_HW_ENABLE_RNG era impostata a zero, ma la libreria libngu ne verificava solo l’esistenza, senza controllarne il valore. Il risultato: il fallback software scattava sempre.
L’entropia effettiva crolla così a circa 40 bit sui modelli Mk3 e a 72 bit su Mk4, Mk5 e Q, ben lontana dai 128 bit attesi per un seed BIP‑39 a 12 parole. Chiunque riesca a vincolare l’identificativo del dispositivo, lo stato del timer e la cronologia delle chiamate al generatore può riprodurre il seed offline e rubare i fondi, senza alcun accesso fisico.
Block, il team di sicurezza che ha analizzato il bug, ha fissato limiti superiori condizionali di 2^40,7 e 2^73,3, precisando però che il secondo valore non equivale a 73 bit di sicurezza crittografica.
Dispositivi colpiti e azioni obbligate
Sono vulnerabili tutti i seed creati con queste versioni di firmware:
- Mk2 e Mk3: dalla 4.0.0 alla 4.1.9 (corrette dalla 4.2.0);
- Mk4 e Mk5: versioni precedenti alla 5.6.0;
- Q: versioni precedenti alla 1.5.0Q;
- build Edge: precedenti alla 6.6.0X (Mk4/5) e 6.6.0QX (Q).
TAPSIGNER, OPENDIME e SATSCARD usano codebase separate e non sono coinvolti.
Coinkite ha rilasciato un firmware d’emergenza per tutti i modelli già il 31 luglio. L’aggiornamento non ripara i seed già generati. Chi possiede bitcoin su un seed creato con firmware vulnerabile deve eseguire due passaggi: generare un nuovo seed su un dispositivo aggiornato e trasferirvi immediatamente tutti i fondi. Ripristinare il vecchio seed su un wallet nuovo o aggiornato non serve a nulla: la debolezza sta nelle parole generate a suo tempo.
Un seed ottenuto con almeno 50 lanci di dado equi, indipendenti e privati non è influenzato dal bug. Se il numero o la riservatezza dei lanci è incerta, la migrazione resta comunque consigliata. Una passphrase BIP‑39 robusta crea un wallet separato, ma Coinkite raccomanda comunque di sostituire il seed sottostante. Gli schemi multifirma proteggono solo quando il quorum non è composto interamente da dispositivi vulnerabili.
Il contesto: dalla ricerca “Ill Bloom” a una firma anonima sulla blockchain
La divulgazione della falla arriva poche settimane dopo la ricerca “Ill Bloom” di Coinspect (pubblicata a inizio luglio), che aveva già evidenziato un altro bug di PRNG debole in vecchi wallet software. In quel caso le perdite, registrate da maggio su Bitcoin, Ethereum, Tron, Rootstock e Polygon, superavano i 5 milioni di dollari.
Sul furto del 30 luglio non è stato fatto alcun nome. Galaxy ha isolato la firma ricorrente, ma non esiste ancora una prova pubblica di ricostruzione di un singolo seed associato a uno degli indirizzi svuotati. L’identità dell’attaccante resta sconosciuta, mentre gli utenti Coldcard corrono a verificare la data di creazione del proprio seed e, nel dubbio, a svuotare i wallet prima che lo faccia qualcun altro.
Fonti
Questo articolo è una rielaborazione originale basata sulle fonti seguenti.




