In breve

  • Coinkite afferma che un errore di compilazione ha fatto sì che le seed nei suoi hardware wallet Coldcard venissero generate tramite un fallback software invece del generatore hardware.
  • Si ritiene che un attaccante abbia utilizzato l'intelligenza artificiale sul codice open-source; Coinkite sostiene che la propria revisione AI effettuata alcune settimane prima non aveva rilevato nulla.
  • Ogni modello attuale è colpito in una certa misura e l'aggiornamento del firmware non ripara una seed già generata.

Coinkite ritiene che un attaccante abbia usato l'intelligenza artificiale per individuare una vulnerabilità che è costata ai proprietari dei suoi hardware wallet Coldcard decine di milioni di dollari in Bitcoin, affermando che la propria revisione AI del medesimo codice condotta alcune settimane prima non aveva rilevato nulla. 

Il produttore di hardware wallet ha pubblicato un avviso per il modello Mk3 e una analisi tecnica giovedì, dopo aver scoperto che le seed generate dai suoi dispositivi erano molto più indovinabili del previsto.

Le perdite legate alla vulnerabilità, sfruttata all'alba di venerdì, sono stimate in 594 BTC, circa 38 milioni di dollari. I fondi sono stati sottratti da circa 500 wallet in 25 minuti, con 562 BTC consolidati successivamente in un indirizzo unico.

Coinkite ha dichiarato di dover supporre che "qualcuno abbia utilizzato l'intelligenza artificiale per analizzare le versioni precedenti del nostro firmware" al fine di individuare la vulnerabilità. L'azienda ha dichiarato di aver eseguito uno dei migliori modelli disponibili sul proprio codice alcune settimane prima e il modello "non ha trovato questo bug né nulla di grave". Gli attaccanti e i difensori dispongono degli stessi strumenti, ha scritto, ma questa volta "non ci ha aiutato, e ha aiutato solo i cattivi."

Cosa è andato storto

Il firmware di Coldcard richiama una funzione per ottenere casualità, e nel codice esistevano due implementazioni con firme identiche: il generatore hardware scritto da Coinkite e un fallback software ereditato da MicroPython. Una direttiva di preprocessore verificava solo se una impostazione era definita, senza controllarne il valore, e quindi la compilazione avveniva sul fallback senza errori. La generazione delle seed si basava su questo fallback dalla migrazione di marzo 2021.

Ogni modello attuale è colpito in una certa misura. Coinkite stima che lo spazio di ricerca effettivo per una seed Mk3 sia circa 40 bit, contro i 128 bit che dovrebbe avere. L'entropia aggiuntiva fornita dagli elementi sicuri sui modelli Mk4, Q e Mk5 eleva le seed a circa 72 bit, il che migliora la situazione senza raggiungere l'obiettivo. Tapsigner, Opendime e Satscard utilizzano codice diverso e non sono colpiti.

Cosa devono fare i proprietari

Coinkite ha rilasciato una patch d'emergenza, versione 5.6.0 per Mk4 e Mk5 e 1.5.0Q per Q. L'aggiornamento non ripara una seed già creata sul firmware affetto. I proprietari devono generare una nuova seed su hardware patchato, e la società raccomanda una robusta passphrase BIP-39, almeno 99 lanci di dadi, oppure entrambi. I proprietari di Mk3, il cui modello non è più supportato, vengono indirizzati a una diversa procedura di migrazione.