Quattro righe di codice.
Oltre 1.596 BTC persi.
Nel marzo 2021 una build del firmware COLDCARD ha smesso di chiedere numeri casuali al proprio chip hardware e ha fatto elaborare i numeri da un normale software. Nessuno se ne è accorto per cinque anni. Nel luglio 2026 gli attaccanti hanno fatto i calcoli e hanno iniziato a svuotare i wallet.
Un controllo di sicurezza che era presente e non ha fatto nulla
Ogni difesa poggia su un numero che nessuno può indovinare
Un hardware wallet svolge diverse funzioni. Ti mostra ciò che stai effettivamente firmando invece di chiederti di fidarti dello schermo di un computer infetto, e custodisce la tua chiave all'interno di un chip progettato per resistere all'apertura fisica. Ognuna di queste difese presuppone che il numero da cui deriva la tua chiave non potesse essere indovinato. Se fosse stato possibile, un attaccante non avrebbe bisogno di superare alcuna di esse. Il pool da cui viene estratta una frase di 24 parole contiene circa un numero per ogni mille atomi nell'universo osservabile. Un pool di queste dimensioni non può essere esploso per forza bruta. Questo è l'intero modello di sicurezza.
12 parole contengono 128 bit di entropia, 24 ne contengono 256, più un checksum derivato dall'hash SHA-256 di tale entropia. BIP-39 converte il risultato nella chiave master BIP-32.
12 parole contengono 128 bit di entropia, 24 ne contengono 256, più un checksum derivato dall'hash SHA-256 di tale entropia. BIP-39 converte il risultato nella chiave master BIP-32.
COLDCARD ha smesso di attingere da quell'insieme
Una modifica al firmware del 2021 ha interrotto silenziosamente le richieste del wallet al chip di entropia dedicato per quel numero, affidando invece il calcolo a un normale software. Vista nel suo insieme, la vulnerabilità si riassume così:
Non si tratta di una sicurezza ridotta di due terzi. Ogni bit raddoppia il lavoro, quindi 88 bit in meno riducono il lavoro di un fattore pari a 2⁸⁸. Un trilione è un numero grande per una persona e piccolo per chi noleggia macchine ad alte prestazioni per elaborarlo.
La generazione del seed è passata da ckcc.rng_bytes() a ngu.random.bytes(). Coinkite stima circa 40 bit di spazio di ricerca rimanente su Mk3 e circa 72 su Mk4/Mk5/Q, a fronte di un obiettivo di 128 bit. Un'analisi indipendente condotta da Block arriva allo stesso ordine di grandezza (inferiore a 2⁴⁰·⁷ e a 2⁷૩·³) e individua condizioni più ristrette in cui lo spazio rimanente è notevolmente inferiore.2
La generazione del seed è passata da ckcc.rng_bytes() a ngu.random.bytes(). Coinkite stima circa 40 bit di spazio di ricerca rimanente su Mk3 e circa 72 su Mk4/Mk5/Q, a fronte di un obiettivo di 128 bit. Un'analisi indipendente condotta da Block arriva allo stesso ordine di grandezza (inferiore a 2⁴⁰·⁷ e a 2⁷૩·³) e individua condizioni più ristrette in cui lo spazio rimanente è notevolmente inferiore.2
Perché il software non può essere casuale
Pensa a cosa rende imprevedibile il lancio di una moneta. La forza del lancio, la gravità, una corrente d'aria da un condizionatore, lievi tremori nel terreno. Decine di fattori che puoi nominare e decine che non puoi. Nessuno può calcolarne la traiettoria, quindi nessuno può prevedere il risultato. Il software funziona in modo diverso. Esegue una formula fissa su una manciata di valori iniziali e produce una risposta fissa. Nel nostro caso quei valori erano il numero di serie del chip e il tempo in cui il dispositivo era rimasto acceso. Un attaccante che impara la ricetta e gli ingredienti ricalcola l'output invece di indovinarlo.
Con l'RNG hardware disabilitato, rng_get() si è collegato al PRNG Yasmarang di MicroPython, inizializzato a partire da uno stato non segreto (UID, SysTick, RTC), senza raccogliere alcuna nuova entropia successivamente, consentendo quindi ai candidati di essere enumerati offline. Coinkite non considera a rischio a causa di questo problema i seed mescolati con 50 o più lanci equi e privati: 50 × log₂6 ≈ 129 bit.3
Con l'RNG hardware disabilitato, rng_get() si è collegato al PRNG Yasmarang di MicroPython, inizializzato a partire da uno stato non segreto (UID, SysTick, RTC), senza raccogliere alcuna nuova entropia successivamente, consentendo quindi ai candidati di essere enumerati offline. Coinkite non considera a rischio a causa di questo problema i seed mescolati con 50 o più lanci equi e privati: 50 × log₂6 ≈ 129 bit.3
E il controllo ideato per prevenirlo ha posto la domanda sbagliata
Nella build era presente un controllo, scritto specificamente per impedire il rilascio di firmware privi del generatore hardware. Verificava l'esistenza di un'impostazione, non se tale impostazione fosse attiva. L'impostazione esisteva ed era disattivata. Il controllo è rimasto in silenzio, la build non ha segnalato errori e il firmware è stato rilasciato.
#ifndef verifica esclusivamente se una macro è definita. La configurazione della scheda definiva MICROPY_HW_ENABLE_RNG come 0, risultando quindi definita e disabilitata, per cui l'istruzione #error non è mai scattata e il linker ha associato rng_get() al fallback software.3
#ifndef verifica esclusivamente se una macro è definita. La configurazione della scheda definiva MICROPY_HW_ENABLE_RNG come 0, risultando quindi definita e disabilitata, per cui l'istruzione #error non è mai scattata e il linker ha associato rng_get() al fallback software.3
Il difetto, citato direttamente dal codice sorgente.3
Nulla lasciava presagire il problema per cinque anni
Una frase di recupero debole è identica a una forte. Ventiquattro parole comuni, il checksum corretto, un dispositivo che si comporta normalmente. Nulla ti avvisa sullo schermo e la build non genera alcun errore. Il codice sorgente è stato pubblico per tutto il tempo. Leggerlo richiedeva comunque che qualcuno aprisse quel file specifico.
La lunghezza dell'output, l'assenza di zeri e la non ripetitività risultano valide su un PRNG debole, quindi i normali test preliminari non avrebbero potuto rilevarlo.
La lunghezza dell'output, l'assenza di zeri e la non ripetitività risultano valide su un PRNG debole, quindi i normali test preliminari non avrebbero potuto rilevarlo.
Poi qualcuno ha fatto i calcoli
Non hanno mai toccato un singolo dispositivo. Hanno generato le frasi probabili sulle proprie macchine, calcolato gli indirizzi Bitcoin associati a ciascuna di esse e verificato tali indirizzi sulla blockchain pubblica. Ogni indirizzo con un saldo attivo è stato svuotato. Un wallet rimasto spento in un cassetto dal 2022 era vulnerabile esattamente quanto uno utilizzato quotidianamente.
I candidati vengono derivati offline tramite BIP-39/BIP-32; solo la verifica finale del saldo interagisce con la rete, non lasciando alcun segnale preventivo sul lato della vittima.3
I candidati vengono derivati offline tramite BIP-39/BIP-32; solo la verifica finale del saldo interagisce con la rete, non lasciando alcun segnale preventivo sul lato della vittima.3
Questa pagina non è una celebrazione.
Coinkite ha rivelato la vulnerabilità, pubblicato un rapporto tecnico e rilasciato una correzione. I ricercatori esterni hanno potuto ricostruire l'accaduto perché COLDCARD è open source.
Un avvertimento sulle stime: descrivono quanta attività di tentativi un attaccante deve affrontare secondo le ipotesi attuali, non un cronometro. Nessuno può dirvi quanto tempo ci vorrebbe per violare un determinato wallet.2
Leggi questo prima di qualsiasi altra cosa
Ciò che devi fare dipende dal dispositivo che stavi utilizzando quando la frase di recupero è stata creata per la prima volta, non da quello che possiedi oggi.
Dai per scontato che questo stia ancora accadendo. Le frasi sono state rese vulnerabili nel corso del 2021 e il metodo è ora pubblico, quindi chiunque può eseguire la stessa ricerca. Non esiste alcuna patch che risolva il problema dall'esterno e non c'è alcun motivo per cui un attaccante debba fermarsi. Se sei interessato, l'unica ipotesi sicura è che il tempo sia l'unica cosa che ti separa da loro.
Mk2 e Mk3: sposta subito le tue monete
Il range interessato va dalla versione firmware 4.0.1 alla 4.1.9. La versione 4.2.0 corregge la generazione delle nuove frasi, ma nessun aggiornamento può aggiungere casualità a una frase già esistente. Crea un nuovo wallet su un dispositivo di cui ti fidi e trasferisci i fondi.1
Mk4 e Mk5: verifica la versione del firmware
Se la frase è stata creata su un firmware precedente alla versione 5.6.0 (o 6.6.0X sulle build Edge), aggiorna il dispositivo, crea un wallet completamente nuovo con il firmware aggiornato e poi sposta i tuoi fondi. L'aggiornamento da solo non ripara la vecchia frase.1
Q: stesso problema, la soglia è 1.5.0Q
Aggiorna alla versione 1.5.0Q o successiva, oppure 6.6.0QX per le build Edge, crea un nuovo wallet, annota e testa il backup, invia una piccola transazione di prova e poi sposta il resto.1
L'aggiornamento del firmware del COLDCARD corregge una frase di recupero già esistente?
Come posso scoprire con quale firmware è stata creata la mia frase di recupero COLDCARD?
Come posso verificare se il mio indirizzo è stato coinvolto?
I dadi o una passphrase proteggono la frase di recupero di un COLDCARD?
L'avviso di Coinkite copre tutti i COLDCARD interessati?
Nessun dispositivo OneKey è interessato
Nemmeno un modello tra quelli che abbiamo mai prodotto. Il nostro firmware non contiene alcuna dipendenza da libngu, Coinkite, COLDCARD o CKCC, quindi il percorso di codice che ha generato il problema non è presente e puoi verificarlo tu stesso nei nostri repository. Sull'hardware attuale la chiave deriva dal generatore di numeri casuali reali integrato in un elemento sicuro certificato, mai dal software sul processore principale. Questa sostituzione è esattamente ciò che ha causato il guasto.
Non ci siamo affidati solo alla fiducia. Quando la notizia è emersa, Anzen Lab ha tracciato la nostra generazione di numeri casuali dall'inizio alla fine (da dove provengono, cosa li richiama e le impostazioni di build che determinano quale versione raggiunge il tuo dispositivo) e ha pubblicato i file esatti che sono stati controllati.12
Leggi la nuova verifica di Anzen LabQuesto sarebbe potuto accadere a un OneKey?
Questo problema richiedeva che tre condizioni distinte si verificassero contemporaneamente. Su un OneKey nessuna di esse si verifica e puoi verificarle tutte e tre tu stesso.
Quindi, da dove arriva la casualità di OneKey?
Generata all'interno di un chip certificato EAL 6+
Le chiavi vengono create e conservate all'interno di un chip dedicato e resistente alle manomissioni, anziché nel processore per usi generali che gestisce tutto il resto. EAL 6+ è il livello di garanzia utilizzato per le carte di pagamento e d'identità.
Una casualità che sorveglia se stessa
Quel chip genera casualità da rumore fisico reale e testa continuamente il proprio output. Se la casualità inizia a comportarsi in modo anomalo, il chip se ne accorge invece di continuare silenziosamente a funzionare.
Abbiamo ricontrollato il nostro sistema
Dopo la notizia su COLDCARD, Anzen Lab ha tracciato la generazione dei nostri numeri casuali dall'inizio alla fine (da dove provengono, cosa li richiama effettivamente e le impostazioni di build che determinano quale versione finisce sul tuo dispositivo) e ha pubblicato i file esatti che sono stati esaminati.11


Quattro controlli su ogni OneKey, e nessuno di essi si fida degli altri tre
Ognuno di questi elementi può lasciarsi sfuggire qualcosa. Il punto è che tutti e quattro dovrebbero fallire sullo stesso dettaglio. COLDCARD non aveva una simile rete di protezione: un'impostazione di compilazione non verificata è bastata.
Codice sorgente aperto che puoi verificare realmente
Il nostro firmware e le nostre app sono pubblici su GitHub e le nostre build sono riproducibili, il che significa che puoi ricompilare il codice in autonomia e confermare che produca esattamente il software in esecuzione sul tuo dispositivo. Questo è il passaggio che individua un problema di tipo "codice corretto, versione errata".
OneKey su GitHub
Verifiche esterne messe agli atti
La società di sicurezza SlowMist ci sottopone a audit e pubblica i report. Valutazioni separate coprono OneKey Pro, il Classic 1S e il nostro SDK. Le nostre pratiche di sicurezza sono certificate secondo la norma ISO/IEC 27001 e le linee Pro e Classic 1S sono certificate contro lo standard EN 18031 da un organismo designato dall'Unione Europea. Tutto viene pubblicato, nulla è frutto di autovalutazione.13
Leggi la sintesi di audit di SlowMistUn team pagato per violare i nostri prodotti
Anzen Lab è il nostro team di sicurezza interno composto da ingegneri specializzati in sicurezza hardware, firmware e delle applicazioni, che collabora con un gruppo di ricercatori esterni a rotazione. Il loro compito è violare gli hardware wallet, inclusi i nostri, prima che qualsiasi prodotto venga spedito. Quando è scoppiata questa notizia, hanno riesaminato la generazione di casualità di OneKey dall'inizio alla fine e hanno pubblicato esattamente quali file sono stati verificati.11
Leggi l'analisi di Anzen LabPaghiamo estranei per trovare i nostri errori
Chiunque può segnalarci una vulnerabilità in privato, tramite il nostro programma pubblico su BugRap o direttamente all'indirizzo [email protected], ricevendo un compenso. La gravità determina il pagamento, valutato su base CVSS. L'obiettivo principale è rendere la segnalazione a noi più conveniente rispetto alla vendita.15
OneKey su BugRapTesta il wallet che hai in mano
entro.tools è uno strumento gratuito e open source che legge i numeri casuali reali emessi da un hardware wallet ed esegue su di essi i test statistici standard di integrità, direttamente nel tuo browser, tramite USB, senza caricare nulla da nessuna parte e senza richiedere alcun aggiornamento del firmware.
Esegue test di integrità FIPS 140-2, NIST SP 800-22 e SP 800-90B localmente tramite WebUSB (su desktop con Chrome o Edge). Il dispositivo richiede di esportare l'entropia, un set di numeri casuali appena generati, senza mai toccare la tua frase di recupero.16
Il test universale di Maurer richiede almeno 387.840 bit; al di sotto il report lo segnala come saltato invece di ometterlo in silenzio.16
Quali wallet possono essere verificati
La possibilità per un estraneo di leggere i numeri casuali grezzi di un dispositivo. Questa è una dimensione molto specifica. Vedi la nota sottostante.
Le domande che questa vicenda solleva per tutti gli altri
OneKey è interessato dal problema di entropia di COLDCARD?
Quali hardware wallet sono interessati dal problema di entropia di COLDCARD?
Posso testare la casualità del mio wallet?
Come si stabilisce se ci si può fidare di un hardware wallet?
Spiegare le cose complicate è il nostro mestiere
Una sicurezza verificabile, non una sicurezza da accettare per fede.
Open source e riproducibili, controllati da esperti esterni, testati dal nostro laboratorio e premiati in caso di vulnerabilità. Questi sono i dispositivi al centro del dibattito.
Riferimenti
Fonti riportate di seguito, consultate il 6 agosto 2026. L'avviso e il rapporto tecnico di Coinkite aprono l'elenco, seguiti da analisi indipendenti a livello di codice sorgente e analisi on-chain. Le stime delle perdite continuano a essere riviste al rialzo: Galaxy Research ha confermato 1,596 BTC il 4 agosto, stimando perdite sospette vicine a 2.055 BTC.
- 1. Coinkite · COLDCARD Mk3 Seed Generation Security Advisory
- 2. Coinkite · Technical Deep Dive into the Entropy Issue
- 3. Block Engineering · Predictable RNG Fallback and 32-Bit Reseed in COLDCARD Firmware
- 4. CoinDesk · Bitcoin cold-wallet attack spreads to 4,500 addresses as losses near $89 million
- 5. CoinDesk · Major bitcoin wallet flaw drains 594 BTC in 25-minute sweep
- 6. Crypto Briefing (Galaxy Research) · Galaxy Research identifies 1,367 BTC drained in attacks on Coldcard addresses
- 7. The Crypto Times (Galaxy Research) · Coldcard hack losses hit $100M with 1,596 BTC stolen in ongoing attack
- 8. The Crypto Times (Galaxy Research) · 15 attackers exploit ongoing Coldcard hack as losses approach $130M
- 9. The Hacker News · Coldcard Hardware Wallet Flaw Linked to $70 Million Bitcoin Theft in 41 Minutes
- 10. Bitcoin Magazine · Coinkite Releases Fixed Firmware After Coldcard Bug
- 11. OneKey Anzen Lab · The COLDCARD Entropy Failure: How a Silent RNG Fallback Cost Users $38 Million
- 12. OneKey · Statement: OneKey devices are not affected by this issue
- 13. OneKey · OneKey has passed a security audit by SlowMist — separate reports cover the Pro, the Classic 1S and the SDK
- 14. SlowMist · SlowMist Audit Report — OneKey Pro
- 15. BugRap · OneKey Bug Bounty Program
- 16. entro.tools · Entropy Check — verify your hardware wallet's randomness (device support matrix)








