L'exploit Bitcoin di Coldcard spiegato: come un bug firmware ha ridotto l'entropia delle chiavi e ha permesso un furto da 130 milioni di dollari
Punti chiave
- •Un errore di configurazione della build ha causato l'utilizzo da parte dei portafogli Coldcard di un generatore di numeri pseudo-casuali software al posto del chip hardware di casualità previsto, riducendo l'entropia da 128 bit a circa 40 bit sui dispositivi Mk2 e Mk3.
- •Galaxy Research ha confermato il furto di almeno 1.596 BTC in tre ondate di attacco, con una sospetta quarta ondata che potrebbe portare le perdite totali a circa 2.055 BTC, pari a circa 130 milioni di dollari.
- •La vulnerabilità è rimasta inosservata per circa otto anni nonostante il codice open source di Coldcard fosse disponibile pubblicamente per la revisione della comunità.
- •Coinkite ha rilasciato firmware corretto per tutti i modelli interessati, ma la patch non può riparare i seed esistenti, il che significa che gli utenti devono generare nuovi portafogli e trasferire manualmente tutti i fondi.
- •Coinkite sospetta che gli attaccanti abbiano scoperto la vulnerabilità tramite analisi del codice assistita da IA, rilevando che la recente revisione AI della stessa azienda sul medesimo codice non aveva identificato il problema.

Un bug firmware ha causato la generazione dei seed nei portafogli hardware Coldcard tramite un generatore di numeri pseudo-casuali software anziché tramite il chip hardware dedicato alla generazione di casualità progettato per questo scopo. La vulnerabilità ha effettivamente ridotto lo spazio di ricerca da 128 bit a circa 40 bit sui modelli di dispositivo più vecchi, consentendo agli attaccanti di calcolare le chiavi private e svuotare portafogli che non sarebbero mai dovuti essere raggiungibili.
Le monete si trovavano su dispositivi Coldcard — portafogli hardware prodotti dall'azienda canadese Coinkite progettati per rimanere offline. I Coldcard sono stati ampiamente consigliati nei circoli di sicurezza Bitcoin specificamente per il loro design air-gapped e l'architettura trasparente, rendendo il fallimento particolarmente significativo per gli utenti che avevano scelto il dispositivo proprio per la sua reputazione in termini di sicurezza. Non sono stati coinvolti link di phishing, malware o dispositivi rubati. Gli attaccanti hanno semplicemente dedotto le chiavi private.
Galaxy Research ha tracciato più di 1.596 BTC rubati in tre ondate confermate, con una sospetta quarta ondata che porterebbe il totale a circa 2.055 BTC — circa 130 milioni di dollari ai prezzi attuali. Una singola operazione ha trasferito 70 milioni di dollari in 41 minuti. Coinkite afferma che almeno 15 attaccanti separati hanno partecipato. La stragrande maggioranza dei furti su larga scala di criptovalute ha fatto affidamento su ingegneria sociale, violazioni di exchange o exploit di smart contract; una vulnerabilità che ha permesso agli attaccanti di calcolare le chiavi esclusivamente dai metadati del dispositivo rappresenta una superficie di minaccia fondamentalmente diversa.
L'azienda ha pubblicato un documento tecnico di approfondimento il 1° agosto spiegando cosa è andato storto. È un documento insolitamente schietto; in sintesi, il portafoglio ha effettivamente tirato dadi truccati per otto anni senza che nessuno se ne accorgesse.
Zero è ancora qualcosa
Nel 2021, Coinkite ha migrato la crittografia di Coldcard su libsecp256k1, la stessa libreria utilizzata da Bitcoin Core. È stata un'integrazione corretta. L'integrazione è stata anche dove il problema ha avuto inizio.
La migrazione ha silenziosamente dirottato la generazione dei seed lontano dal generatore di numeri casuali hardware di Coldcard verso il fallback software di MicroPython — un piccolo algoritmo chiamato Yasmarang, progettato per dispositivi privi di un chip di casualità.
🚨LE PERDITE DAL COLDCARD HACK SUPERANO I 100M$
Con alta confidenza 1.596 BTC sono stati rubati da ~7300 indirizzi in 3 ondate confermate + altri 14 incidenti minori.
Se aggiungiamo i sospetti (ma non confermati), il totale sale a 130m$ (2k BTC).
Altro nel thread qui sotto 👇 pic.twitter.com/RAl3ib67qa
— Galaxy Research (@glxyresearch) 3 agosto 2026
Coldcard ha un chip di casualità. Semplicemente ha smesso di essere utilizzato.
Il motivo è quasi troppo piccolo per essere credibile. Una protezione di build utilizzava #ifndef, che verifica se un'impostazione esiste anziché se è attivata. Coinkite aveva definito quell'impostazione come zero, ovvero "disattivata". Poiché zero conta comunque come definito, il controllo di sicurezza è stato superato e la build è stata completata. Entrambe le versioni della funzione avevano firme identiche, quindi nulla sembrava sbagliato. Gli errori di configurazione della build di questo tipo — in cui una direttiva del preprocessore seleziona silenziosamente il percorso di codice errato — sono una classe di difetti riconosciuta nello sviluppo in C e C++, ma sono notoriamente difficili da individuare tramite test perché il binario compilato si comporta in modo normale sotto ogni aspetto osservabile.
"La maggior parte della casualità su COLDCARD proveniva da un PRNG di cui non sapevo fosse effettivamente presente nella base di codice sorgente," ha scritto Coinkite, riferendosi a un generatore di numeri pseudo-casuali — software che produce numeri che sembrano casuali ma seguono una ricetta fissa a partire da un valore iniziale. Fornisci alla ricetta lo stesso valore iniziale e l'output è identico, ogni volta.
Sui dispositivi Mk2 e Mk3 con firmware dalla versione 4.0.1 alla 4.1.9, quel valore iniziale derivava dal numero di serie del chip e dal suo orologio. Coinkite stima lo spazio di ricerca risultante a circa 40 bit. I modelli più recenti includevano una piccola quantità di entropia dal secure element, portando lo spazio di ricerca a circa 72 bit.
Nessuno dei due valori raggiunge 128, l'obiettivo previsto.
Il divario conta più di quanto sembri. I bit sono esponenti. Uno spazio di ricerca a 128 bit contiene più combinazioni di quanti siano gli atomi nell'universo osservabile, rendendo la ricerca brute-force effettivamente impossibile. Quaranta bit ammontano a circa mille miliardi di possibilità — un numero che un normale laptop può elaborare. Ogni bit perso dimezza il lavoro richiesto all'attaccante.
Il team di ingegneria di Block, che ha pubblicato la propria analisi, ha stabilito lo spazio di ricerca effettivo del secure element dei dispositivi più recenti a 2^32 candidati, con una media di circa 2^31 tentativi. La loro valutazione per le schede più vecchie è più diretta: dato un ID dispositivo noto, lo stato del timer e la cronologia delle chiamate, la generazione del portafoglio è deterministica. E deterministico è l'opposto di casuale — la proprietà essenziale per la crittografia.
Non "debole." Prevedibile.
Coinkite sospetta che la vulnerabilità sia stata scoperta tramite analisi automatizzata del codice. "Dobbiamo presumere che qualcuno abbia utilizzato l'IA per revisionare le versioni precedenti del nostro firmware e si sia imbattuto in questo problema," ha scritto l'azienda, aggiungendo di aver recentemente sottoposto lo stesso codice a uno dei migliori modelli di IA disponibili senza trovare nulla. "Sia gli attaccanti che i difensori hanno gli stessi strumenti di IA, ma oggi non ha aiutato noi, e ha aiutato solo i cattivi."
Il firmware corretto è stato rilasciato per ogni modello interessato. Non ripara i seed esistenti; quei portafogli devono essere rigenerati e i fondi trasferiti. Decrypt ha trattato come cambia l'archiviazione air-gapped dopo un exploit come questo e ha monitorato le perdite superare i 114 milioni di dollari.
Cos'è davvero l'entropia
L'entropia misura quanto un attaccante non sa — in altre parole, l'incertezza contata in bit. Un bit equivale al lancio di una moneta: due esiti, con chi indovina che ha il 50% di probabilità di azzeccare. Dieci bit equivalgono a 1.024 esiti. Ogni bit aggiuntivo raddoppia il lavoro di chi deve indovinare.
Un portafoglio Bitcoin è fondamentalmente un numero molto grande mantenuto segreto. L'indirizzo a cui le persone inviano le monete è derivato matematicamente da esso, e la derivazione funziona in un'unica direzione — si può passare dalla chiave all'indirizzo, ma mai viceversa.
La sicurezza di ogni portafoglio si fonda quindi su una domanda: quanti numeri dovrebbe provare un attaccante? Se il numero è stato scelto con 128 bit di entropia, la risposta è "più di quanto la fisica consenta." Se è stato scelto con 40 bit, la risposta è "datemi un po' di tempo."
Questa è la stessa proprietà che rende degna di discussione la minaccia del calcolo quantistico — una macchina quantistica attaccherebbe il legame matematico tra chiave e indirizzo. Il bug di Coldcard non ha mai richiesto nulla di così sofisticato. Ha reso le chiavi indovinabili prima che quella matematica entrasse in gioco.
Qui il vocabolario diventa scivoloso. Un generatore pseudo-casuale produce un output che supera i test statistici di casualità — nulla che un foglio di calcolo segnalerrebbe. Tale output, tuttavia, è ancora completamente determinato dal suo valore di seed. Sembra casuale ma non lo è.
La casualità statistica e l'imprevedibilità crittografica sono proprietà diverse. L'output di Coldcard avrebbe superato a pieni voti il primo test fallendo completamente il secondo.
La vera casualità deve provenire da rumore fisico: jitter elettrico in un circuito, fluttuazione termica, decadimento radioattivo. È esattamente ciò per cui era progettato il chip hardware sul Coldcard. È il chip che la direttiva di build ha disconnesso.
Poi Luke Dashjr ha sollevato la questione dei dadi
Mentre gli utenti si affannavano per rigenerare i seed, molti si sono rivolti all'ovvia soluzione low-tech. I Coldcard consentono di lanciare dadi fisici e inserire i risultati come entropia. Le linee guida di Coinkite trattano i seed creati con almeno 50 lanci di dadi indipendenti e privati come non a rischio per il bug. L'azienda vende addirittura una busta di "100 piccoli e graziosi dadi" per facilitare il processo.
Il 31 luglio, lo sviluppatore di Bitcoin Core Luke Dashjr ha pubblicato un avviso: "Diverse persone suggeriscono/usano dadi per mitigare la vulnerabilità di Coldcard. Si noti che i dadi comuni non sono progettati per essere crittograficamente sicuri. Se si intende procedere in questo modo, si dovrebbero probabilmente acquistare dadi di precisione da casinò. E anche in quel caso, si dovrebbe avere un'altra fonte di entropia."
Bitcoin Twitter non l'ha presa con calma.
"lol ora non puoi più nemmeno lanciare i dadi," ha scritto un utente. "L'autocustodia è finita…" Un altro ha chiesto se dovesse assumere qualcuno con il Parkinson per lanciarli.
should I hire someone with parkinsons to throw the dice? — Murern (@Bitcoin_Murern) July 31, 2026
La risposta tecnicamente più utile è arrivata con l'aritmetica. Lo sviluppatore Justin Sharp ha fatto i calcoli su quanto costa esattamente un dado distorto in termini di entropia:
"Eccessivo. Un d6 perfetto fornisce 2,585 bit per lancio. Un dato visibilmente distorto, ad esempio con una faccia che esce il 20% delle volte invece del 16,7%, fornisce comunque circa 2,55 bit. Su 99 lanci questa è la differenza tra ~256 bit e ~252 bit di entropia."
Quattro bit su 256. Questa è l'intera penalità per un dato visibilmente non equo.
Dashjr non sbaglia nel dire che i dadi economici hanno una distorsione misurabile — i punti stampati a iniezione rimuovono quantità leggermente diverse di plastica da ogni faccia, che è esattamente il motivo per cui i casinò usano dadi di precisione con riempimento a livello. Ha ragione sulla fisica e torto sull'entità del problema. Perdere quattro bit da 256 ne lascia 252. Il bug di Coldcard ha lasciato gli utenti a 40.
C'è un argomento più acuto sepolto nel suo consiglio, e non riguarda la tolleranza di produzione. Riguarda il non fidarsi di alcuna singola fonte di entropia. Il fallimento di Coldcard non è stato che la sua entropia era leggermente distorta — è stato che un componente ha smesso silenziosamente di contribuire e nulla lo ha rilevato.
Cosa fare
Se hai generato un seed su un Coldcard interessato senza lanci di dadi o una forte passphrase BIP-39, quel seed deve essere considerato compromesso.
I passaggi consigliati: aggiornare il firmware, generare un nuovo seed, verificare l'impronta digitale, inviare una transazione di test, quindi trasferire tutti i fondi. L'advisory di Coinkite guida attraverso il processo modello per modello. I seed esportati portano con sé il difetto — importare un seed compromesso in un'altra applicazione di portafoglio non risolve nulla.
Per tutti gli altri, la lezione non è che i portafogli hardware sono rotti o che i dadi sono una trappola. È che "casuale" è un'affermazione, e le affermazioni vanno verificate. Il codice sorgente di Coldcard è stato pubblico per tutto il tempo. L'RNG hardware previsto era presente nel binario. I revisori hanno confermato che esisteva ma non hanno mai confermato che il generatore di seed lo utilizzasse effettivamente. Il modello open source che Coldcard ha abbracciato si fonda proprio sul fatto che questo tipo di scrutinio comunitario individui i difetti prima che lo facciano gli attaccanti. Otto anni di audit hanno esaminato il codice corretto. Nessuno ha verificato se venisse eseguito.