Come hackerare un hardware wallet di criptomonete

10 Gen 2019

Gli hardware wallet sono considerati i più sicuri per custodire le criptovalute. Tuttavia, sappiamo bene che niente è sicuro al 100% e la loro sicurezza può essere minata ugualmente. Durante la 35esima edizione del Chaos Communication Congress, i ricercatori Thomas Roth, Dmitry Nedospasov e Josh Datko hanno dimostrato che esistono vari modi per compromettere la sicurezza di questi sistemi. Prima di passare al dunque, cerchiamo di capire cosa sono gli hardware wallet e come funzionano.

Cos’è un wallet di criptovalute?

I riercatori hanno trovato vari modi per compromettere la sicurezza degli hardware wallet di Ledger e Trezor.

Innanzitutto, cerchiamo di capire di cosa stiamo parlando in generale. In parole semplici, un wallet non è altro che un conto di criptomonete. E questo “conto” è caratterizzato da una coppia di chiavi di cifratura, una pubblica e una privata. Queste due chiavi fanno pensare all’accoppiata username e password: la chiave pubblica viene utilizzata come indirizzo del wallet e la chiave privata per accedere alle monete, ovvero per firmare le transazioni in uscita.

Vale la pena capire anche come le coppie multiple di chiavi pubbliche e private vengono generate sui sistemi di criptovalute per vari wallet appartenenti alla stessa persona. Non sarebbe comodo immagazzinare diverse coppie di chiavi generate in maniera indipendente; perciò, i sistemi di criptovalute non fanno altro che generare un solo grande numero (“seed”) da cui derivano in modo prevedibile differenti coppie multiple di chiavi pubbliche e private da utilizzare su diversi wallet.

Questo grande numero unico, il seed, è quello che in realtà viene custodito dall’utente di un sistema di criptovalute.

A differenza dei sistemi economici tradizionali, le criptomonete di solito non fanno riferimento a un’autorità centralizzata, non esistono meccanismi di registrazione, nessuna possibilità di contestazione di addebito e nessuna possibilità di recuperare somme già spese. Chiunque sia in possesso del seed e quindi delle chiavi che ne derivano, è in possesso dei wallet di criptomonete corrispondenti. E se il seed viene rubato o smarrito, vanno in fumo le monete custoditi nei rispettivi wallet.

In ogni caso, dal punto di vista formale un wallet non è altro che una coppia di chiavi, pubblica e privata. E la maggior parte delle volte, quando si dice possedere un wallet ci si riferisce a custodire queste chiavi e, se la mettiamo su questo punto di vista, un hardware wallet è un dispositivo che custodisce wallet di criptomonete. Facile, vero?

Perché aver bisogno di un hardware wallet di criptovalute?

Come potete immaginare, vale la pena accertarsi che il seed si trovi nel posto più sicuro possibile, data la sua enorme importanza. Esistono diversi modi per custodirlo, ognuno dei quali ha dei pro e dei contro. Il sistema più comodo è di custodire il seed sia su computer, sia su smartphone o, ancor meglio, direttamente online. Tuttavia, i malware che vanno alla ricerca di wallet di criptomonete sono ormai piuttosto comuni e, se parliamo dei servizi wallet, sono sistemi che possono essere hackerati o che possono andare perfino in bancarotta, con conseguente perdita di importanti quantità di criptovalute.

E poi, non dimentichiamo che i wallet devono affrontare tanti altri problemi, come il phishing, lo spoofing delle informazioni di pagamento, la perdita degli stessi wallet dovuto al malfunzionamento dell’hardware e un lungo eccetera. E la cosa è andata così oltre che alcune persone a un certo punto hanno deciso di risolvere il problema creando gli hardware wallet di criptomonete, ovvero dispositivi dedicati e progettati per custodire i seed in modo affidabile e sicuro.

Come funzionano gli hardware wallet

L’idea di base di un hardware wallet di criptovalute è quella di immagazzinare il seed in modo che non lasci mai il dispositivo. Il tutto ha luogo all’interno del wallet e non su un computer connesso a Internet; per cui, anche nel caso in cui il vostro computer venisse compromesso in qualche modo dall’esterno, i cybercriminali non potrebbero rubare le vostre chiavi.

Perché aver bisogno di un hardware wallet?

Inoltre, non sarebbe male avere a disposizione delle misure di protezione per l’accesso, tipo bloccare il dispositivo con un codice PIN. E, naturalmente, l’utente di un hardware wallet dovrebbe avere la possibilità di verificare la transazione corrente dal dispositivo per confermarla o rifiutarla.

Quanto detto finora definisce il design più adatto alle esigenze dell’utente. Normalmente un hardware wallet è un piccolo dispositivo che si connette via USB, con uno schermo e dei tasti per digitare il PIN e confermare le transazioni.

Il funzionamento interno può variare da un dispositivo all’altro e le due case produttrici principali di hardware wallet, Trezor e Ledger, hanno due approcci diversi a livello di design hardware.

L’approccio di Ledger: il seed viene immagazzinato sul chip Secure Element

I dispositivi Ledger, ovvero Ledger Nano S e Ledger Blue, hanno due chip principali. Uno è Secure Element, un micro-controller progettato per custodire dati cifrati altamente sensibili. Nello specifico, questi chip vengono utilizzati nelle schede SIM, nelle carte di credito con chip e PIN e negli smartphone compatibili con Samsung Pay e Apple Play.

Il secondo chip è di solito un micro-controller generico che effettua compiti meno importanti, come mantenere attiva la connessione via USB, gestire lo schermo e i tasti etc. Questo micro-controller fa da mediatore tra Secure Element e tutto il resto, utente compreso. Ad esempio, ogniqualvolta l’utente deve confermare una transazione, lo fa attraverso il micro-controller generico, non con il chip Secure Element.

Il modello Nano S di Ledger

In ogni caso, anche se si custodisce il seed in un chip protetto, non vuol dire che il dispositivo Ledger sia impenetrabile. Da un lato, sebbene sia molto difficile entrare direttamente in Secure Element e rubare il seed, è invece relativamente facile hackerare un micro-controller generico e, ad esempio, ingannare l’hardware wallet confermando transazioni esterne non dovute.

I ricercatori hanno ispezionato il firmware di Nano S di Ledger e si sono resi conto che può essere sostituito da una versione compromessa, se un certo valore viene scritto su un certo indirizzo di memoria. Questo indirizzo di memoria non dovrebbe essere riscrivibile, tuttavia il micro-controller utilizzato sul dispositivo supporta la rimappatura della memoria, che rende possibile apportare modifiche all’indirizzo. I ricercatori hanno sfruttato questa funzionalità e hanno caricato il firmware modificato sul Nano S (caricando, a scopo puramente dimostrativo, il gioco Snake). Invece, questo firmware modificato potrebbe contenere, ad esempio, un modulo dannoso che modifica gli indirizzi wallet su tutte le transazioni in uscita.

Un approccio alternativo per violare la sicurezza di un hardware wallet è mediante un impianto hardware. Josh Dakto è riuscito a inserire un impianto di radiofrequenza all’interno del Nano S di Ledger, in modo che il tasto di conferma fosse soggetto a un comando dannoso via radio. La stessa tecnica probabilmente funziona su qualsiasi hardware wallet, tuttavia il ricercatore ha scelto il Nano S in quanto è uno dei dispositivi più piccoli e quindi più difficile da sottoporre a un attacco fisico.

Un altro dispositivo della stessa casa produttrice, Ledger Blue, è invece vulnerabile ad attacchi side channel. Ledger Blue è un hardware wallet dallo schermo grande e con una bella batteria. Grazie a un difetto del circuito si perdono segnali di radiofrequenza importanti quando l’utente digita il codice PIN. I ricercatori hanno registrato questi segnali e hanno fatto sì che un algoritmo in apprendimento automatico riesca a riconoscere questi segnali con una percentuale di precisione del 90%.

Hackerare un dispositivo blockchain IoT con intelligenza artificiale su cloud.

L’approccio di Trezor: il seed viene immagazzinato sulla memoria flash di un micro-controller generico

I dispositivI Trezor funzionano un po’ diversamente. Non si avvalgono di Secure Element e il tutto viene controllato da un unico chip, un micro-controller generico con architettura ARM. Questo chip si occupa sia dell’immagazzinamento cifrato dei dati o della loro gestione, sia di controllare la connessione via USB, di gestire lo schermo, i tasti e così via.

In teoria, un approccio di questo tipo potrebbe rendere più facile hackerare il firmware del dispositivo ed accedere così al seed custodito nella memoria flash del micro-controller. In ogni caso, per i ricercatori, il team di Trezor ha fatto davvero un bel lavoro nella difesa del firmware e sono dovuti passare all’hardware, ed è lì che sono riusciti nel loro intento.

Il modello Trezor One

Grazie a una tecnica chiamata voltage glitching (ovvero applicare al micro-controller un voltaggio minore, con effetti piuttosto curiosi sul chip), il chip di Trezor One è passato dallo status “nessun tipo di accesso” ad “accesso parziale” e sono riusciti così a leggere la RAM del chip, ma non la memoria flash. Hanno poi scoperto che, quando inizia il processo di upgrade del firwmare, il chip colloca il seed sulla RAM mentre viene riscritta la memoria flash. E così, i ricercatori sono riusciti a ottenere tutti i contenuti della memoria. E non è stato per niente difficile trovare il seed, immagazzinato senza cifratura nella RAM come frase mnemonica (ovvero, parole vere e proprie invece di numeri random).

Il modello Trezor One compromesso per un'anomalia nel voltaggio. Risultato: rubati seed e PIN.

Il memory dump contiene il seed che ha le sembianze di una frase mnemonica e di un PIN (in questo caso, è 1234), custodita in plain text.

Conclusioni

Dobbiamo dire che la maggior parte degli attacchi descritti da Thomas Roth, Dmitry Nedospasov e Josh Datko implicano tecniche piuttosto sofisticate e che richiedono l’accesso fisico al dispositivo. Per cui non affrettatevi a buttare nella spazzatura i vostri dispositivi Ledger o Trezor. Se il cybercriminale non vi ha accesso, i vostri bitcoin dovrebbero essere al sicuro (anche se ormai hanno perso un po’ del loro valore).

In ogni caso, meglio tenere sempre a mente che esistono gli attacchi alla supply chain. Gli hardware wallet sono facilmente manipolabili e ancor prima dell’acquisto. Naturalmente, lo stesso vale per smartphone e portatili. Tuttavia, i cybercriminali non possono essere sicuri al 100% che un portatile in particolare verrà poi usato per custodire criptovalute; invece, da questo punto di vista, con gli hardware wallet si va a colpo sicuro.

Le case produttrici di hardware wallet stanno cercando di risolvere il problema, utilizzando ad esempio adesivi di sicurezza sulle confezioni dei dispositivi oppure creando pagine sui loro siti grazie alle quali i clienti possano effettuare un controllo di sicurezza dei propri wallet. Ma non sono misure sufficienti e potrebbe generare confusione tra gli utenti.

In ogni caso, a differenza di altri hardware wallet, i dispositivi di Ledger e Trezor sono stati progettati tenendo in considerazione la sicurezza, ma non bisogna dare per scontato che questi dispositivi siano inattaccabili. Meglio prendere misure aggiuntive per proteggere la vostra criptofortuna:

  • Acquistate hardware wallet solo da rivenditori di fiducia;
  • Al momento dell’acquisto, verificate attentamente se esiste qualche segno di manipolazione della confezione;
  • Per maggiore sicurezza, fatevi aprire la confezione per verificare che non ci siano altri elementi collegati alla placca del circuito;
  • Conservate il wallet in un posto sicuro, e fate in modo che solo persone di vostra estrema fiducia possano accedervi;
  • Proteggete il computer che utilizzate per le vostre criptomonete con un software di sicurezza affidabile. Una buona parte degli attacchi appena descritti richiedono l’installazione di un malware sul computer al quale è collegato l’hardware wallet.

Consigli extra per chi possiede un dispositivo Trezor:

  • Trezor è una piattaforma open-source, a livello hardware e software. Se avete conoscenze di elettronica, potete comporre un hardware wallet tutto vostro, assemblando pezzi presi singolarmente. In questo modo sarete sicuri al 100% che nessuno si sia intrufolato nella parte hardware del vostro wallet;
  • I dispositivi Trezor offrono una protezione extra grazie a una passphrase che evita l’estrazione del seed (l’idea alla base di questo sistema è che il seed rimane incompleto se non si ha a disposizione la passphrase). Potreste considerare l’idea di avvalervi di questa modalità.

Ecco l’intervento durante il congresso. Dateci un’occhiata, è interessante e utile per gli utenti di hardware wallet.