skip to main | skip to sidebar
33 commenti

BadUSB: davvero i dispositivi USB modificati sono un’“arma informatica senza precedenti”?

Credit: Tasha Chawner
C'è un difetto di sicurezza fondamentale in ogni dispositivo USB: il suo controller, ossia il piccolo chip che gestisce lo scambio di dati con il computer al quale è collegato, è riprogrammabile. Una volta riprogrammato, può iniettare nel computer istruzioni ostili di qualunque tipo in una maniera sostanzialmente invisibile ai normali antivirus, che non controllano il firmware, ossia il software essenziale che viene eseguito da questi chip.

In pratica, qualunque chiavetta, disco rigido, stampante, tastiera, mouse che usi lo standard USB può diventare il portatore di un'infezione informatica. A sua volta, un computer infettato può contaminare un dispositivo USB. Al momento non c'è nessun rimedio pratico, perché il difetto nasce da una caratteristica intenzionale dello standard. Dato che il firmware dei dispositivi USB non è firmato (cioè non ha nessun sistema di garanzia d'integrità), non c'è modo di sapere se è stato alterato. Brutta storia: c'è chi l'ha definita “un'arma informatica senza precedenti”. Si sospetta che l'NSA statunitense sfrutti già questa tecnica con un dispositivo chiamato Cottonmouth.

Il problema è stato segnalato a luglio scorso dai ricercatori di sicurezza Karsten Nohl e Jakob Lell, che hanno creato un malware dimostrativo, denominato BadUSB, che s'installa su un dispositivo USB e da lì è capace di prendere il controllo completo di un PC, alterare in modo invisibile i file presenti sul dispositivo USB, simulare di essere una tastiera e digitare comandi o deviare il traffico Internet della vittima.

Adesso due altri ricercatori, Adam Caudill e Brandon Wilson, hanno pubblicato un software per effettuare questi attacchi, con l'intento di spronare i costruttori di dispositivi USB a trovare una soluzione, ma con il risultato collaterale inevitabile di aver aperto il vaso di Pandora.

Per evitare questo tipo di attacco ci sono poche strade percorribili. La prima, drastica, è evitare del tutto l'uso di dispositivi USB e sigillare le porte USB dei computer (se gli ambienti di polizia nei quali c'è da tempo il divieto di collegare dispositivi USB vi sembravano eccessivamente paranoici, ora sapete che avevano visto giusto). Quasi impraticabile.

La seconda è evitare l'uso promiscuo di dispositivi USB. Significa che una chiavetta USB non può più essere usata come comodo strumento di scambio di grandi file: se entra in contatto con un computer non sicuro, può infettarsi e diffondere l'infezione. Lo stesso vale per tastiere, stampanti e altre periferiche. Non solo: bisogna acquistare dispositivi di provenienza certa, perché in mancanza di un buon controllo qualità (o in presenza di un fabbricante o di un governo ostile) non c'è modo di sapere se i dispositivi vengono preinfettati direttamente durante la fabbricazione.

Caudill e Wilson hanno sviluppato un software libero che ostacola la modifica del firmware e quindi i tentativi d'infezione, ma funziona soltanto con i controller USB 3.0 di una specifica marca (Phison). Anche così, un aggressore sufficientemente motivato può aprire il dispositivo USB e riprogrammarlo mettendo in corto dei pin, ma è un'operazione molto più complessa di un semplice inserimento e può essere ostacolata anch'essa iniettando colla epossidica dentro il dispositivo USB. L'aggressore deve avercela davvero tanto con voi, insomma.

A lungo termine, la soluzione sarà probabilmente l'introduzione del firmware firmato (code signing) che rivelerà eventuali alterazioni, ma ci vorranno anni per togliere dalla circolazione i dispositivi USB attuali. Nel frattempo conviene ridurre l'uso promiscuo: evitare di inserire un dispositivo USB in un computer non fidato e di inserire nei propri computer un dispositivo non fidato, e sostituire per esempio le chiavette USB con il trasferimento di file via Wi-Fi o Bluetooth o su supporti come CD e DVD.


Fonti aggiuntive: Wired, Siamo Geek, ExtremeTech.
Invia un commento
I commenti non appaiono subito, devono essere tutti approvati da un moderatore. Lo so, è scomodo, ma è necessario per tenere lontani scocciatori, spammer, troll e stupidi: siate civili e verrete pubblicati qualunque sia la vostra opinione; gli incivili di qualsiasi orientamento non verranno pubblicati, se non per mostrare il loro squallore.
Inviando un commento date il vostro consenso alla sua pubblicazione, qui o altrove.
Maggiori informazioni riguardanti regole e utilizzo dei commenti sono reperibili nella sezione apposita.
NOTA BENE. L'area sottostante per l'invio dei commenti non è contenuta in questa pagina ma è un iframe, cioè una finestra su una pagina di Blogger esterna a questo blog. Ciò significa che dovete assicurarvi che non venga bloccata da estensioni del vostro browser (tipo quelle che eliminano le pubblicità) e/o da altri programmi di protezione antimalware (tipo Kaspersky). Inoltre è necessario che sia permesso accettare i cookie da terze parti (informativa sulla privacy a riguardo).
Commenti
Commenti (33)
Sfrutttare l'exploit però funziona solo su alcuni chip e richiede una modifica hardware. Non è esattamente come quando ci si scambiava un floppy con un file infettato.

Mi sembra che i due ricercatori facciamo un tantino di sensazionalismo per farsi notare.
Non mi è chiara una cosa: la modifica al firmware del dispositivo USB va realizzata con strumenti particolari oppure può essere fatta direttamente da un malware residente sul PC a cui il dispositivo è collegato?

In soldoni, l'infezione è monodirezionale (da USB a PC) o può propagarsi anche da PC a USB? In questo secondo caso... prepariamoci ad un'invasione di chiavette USB zombie! :-O
La firma digitale dei firmware è, a mio avviso, un rimedio peggiore del male.

Provo a spiegarmi meglio

In diversi ambiti viene usato il concetto di firma digitale per autorizzare o meno l'esecuzione di programmi, stabilire i limiti entro i quali questi possono muoversi e altre caratteristiche.
Premesso che bisognerebbe stabilire cosa si intenda come firma (certificati, hashing del programma, il numero 42), il primo problema che si pone è "chi può firmare"?, altrimenti io potrei alterare il firmware di una chiavetta con un altro programma firmato, oppure ricalcolare la firma.

In ambienti come fu quello delle applicazioni Java per cellulare, (chi si ricorda di Symbian?) la firma era una operazione costosa, in quanto bisognava acquistare un certificato (che ha una scadenza e un costo) per firmare l'applicazione.
Il certificato diceva anche cosa poteva fare l'applicazione.
Se una software house voleva vendere un programma, acquistava il certificato.
Se un hobbista voleva farsi un programma per i fatti suoi, non poteva certo spendere centinaia di dollari (e i sistemi alternativi richiedevano di inviare il programma in Nokia per una speciale firma basata sul codice imei del telefono. Impraticabile).

Ma vogliamo parlare di EFI?

E se, in un contesto di firma per mezzo di certificati, il certificato principale viene revocato perché compromesso? (è già accaduto)
Già mi immagino centinaia di hard disk usb (alcuni Western Digital hanno il controller USB montato direttamente sul disco) che contengono TB di dati non più accessibili perché Tawte ha revocato il suo certificato root.

E non parliamo di tutti quegli hobbisti o anche sviluppatori professionisti che, purtroppo, hanno a che fare con la USB nei loro progetti. Già è un sistema che sta su con lo sputo, se gli puntiamo sopra un phon acceso ...

Il problema principale è che certi dispositivi sono riprogrammabili perché il software fa schifo (sono un softwerista, so quello che dico) e quindi si tengono una porta aperta per commercializzare il prodotto anche se non è ancora pronto (qui ci sarebbe da aprire una discussione molto lunga a riguardo) e riprogrammarlo con tranquillità dopo.

Mi fermo qui, ma ci sarebbe un'altra tonnellata di effetti negativi relativi a questa scelta. Solo che non voglio tediarvi troppo.
Sì, d'accordo, il pericolo c'è, soprattutto perché il firmware alterato agirebbe a livello elevato nel sistema operativo, ma per prendere il controllo di un pc, BadUSB dovrà comunque installare "un normale virus". O sbaglio? E quest'ultimo non potrebbe essere intercettato da un antivirus?

Per quanto riguarda il divieto di utilizzo delle porte USB, questo si applica anche in tutti i posti dove ci sono informazioni suscettibili allo spionaggio (io mi riferisco, in particolare, a quello industriale), è il furto di informazioni la preoccupazione. Non credo che qualcuno abbia pensato a firmware truccati.
"In pratica, qualunque chiavetta, disco rigido, stampante, tastiera, mouse che usi lo standard USB può diventare il portatore di un'infezione informatica."

Detta cosi' fa credere che, inserendo una chiavetta infetta, il pc sia compromesso. In realta' nel talk al BalckHat mi pare di capire che, modificando il firmware, un qualsiasi device usb puo' assumere, agli occhi del sistema operativo, la forma di una webcam o di una scheda di rete o di una tastiera. Da qui ad "infettare" un pc manca un passo di "attività" del device compromesso che comunque è intercettabile in qualche modo. Nel talk si consiglia infatti, come difesa, il blocco di certe classi di device (es una scheda di rete).
Infettare "al volo" con del malware un eseguibile copiato sul drive usb, non lo rende nascosto quando viene eseguito dal sistema.

Sbaglio?

Ciao!
Debe
questi vettori di attacco mi paiono un po' deboluccio. Un vettore è "il dispositivo simula di essere una tastiera e invia comandi": è vero che operando da tastiera si può inserire un virus in un PC, ma i comandi da dare cambiano da SO a SO, e non credo che la chiavetta USB possa capire quale SO ha di fronte (o sbaglio?). Inoltre, l' utente del PC non si insospettirebbe un po' se vedesse comparire una finestra terminale e un fantasma dare dei comandi in essa?
Esiste ed è in commercio un dispositivo che ha la forma di una chiavetta USB ma che in realtà si fa vedere dal sistema come una tastiera e supporta un sistema di scripting per eseguire comandi con tastiera e forse anche mouse. Non so se tali comandi siano visibili mentre vengono eseguiti, immagino di si.
Anche alcuni microcontollori sono programmabili in tal senso, cui si aggiungono l'Arduino Leonardo e volendo anche l'Arduino UNO ma li va riprogrammato apposta il micro che supporta l'USB mentre nella Leonardo fai tutto come se fosse un normale sketch. Chi ha l'IDE Arduino può vedere gli esempi in File, esempi, 09USB.
La riprogrammabilità dei controllori in prodotti commerciali sicuramente ci sarà ma non so quanti ce ne siano che si programmano da USB e quindi siano effettivamente infettabili e quanti invece hanno bisogno di accesso a porte hardware tipo SPI, JTAG o simili
E' vero che è un'insidia senza precedenti, se le cose stanno effettivamente in questi termini.
In tantissimi ambienti, direi quasi tutti, l'utilizzo di dispositivi USB "non fidati" è continuo e inevitabile. Anzi potrei togliere il "quasi" perché se ci pensi, se nessun antimalware può riconoscere il problema, OGNI computer e OGNI pen drive può essere, e quindi VA considerato, non fidato. Compresi i propri. Quindi l'unica soluzione è smettere di usare qualsiasi dispositivo USB, disattivare le porte USB da BIOS protetto da password (e se si è paranoici, chiudere il case con un lucchetto per evitare il CMOS reset, o addirittura bloccare o danneggiare fisicamente le porte USB!) e a quel punto formattare il computer per essere certi che non sia compromesso!
I complottisti direbbero che :
Finalmente ritorna il vero blog del disinformatico.
alcuni articoli precedenti parevano scritti da una signorina incompetente (e presuntuosa) di 16 anni.
I complottisti direbbero che :
si sospetta che l'Aggenzia (e non solo l'Aggenzia) habbiano direttamente imposto
la modifica dell' hardware o ne habbiano indebolito le difese.
I complottisti direbbero che :
è da molto tempo che esistono e si utilizzano i processori flashrom riscrivibili una sola volta,
pareva brutto utilizzarli sulle chiavine ? senza invocare quella "demenzialità" del codice firmato ?
basta, torniamo al firewire :)
G-DATA ha sviluppato un programmino gratuito che allerta l'utente quando una chiave USB "infetta" tenta di farsi passare per tastiera FAKE:
https://www.gdatasoftware.com/en-usb-keyboard-guard
kobotoz,

alcuni articoli precedenti parevano scritti da una signorina incompetente (e presuntuosa) di 16 anni.

Illuminami.
Si ma in ogni caso è un sistema di attacco che funziona solo in linea teorica. Una tastiera non agisce indipendentemente dal software. Piuttosto potrebbe essere preoccupante una chiavetta USB (funzionante come mass storage) contenente un keylogger che dopo aver scaricato un tot di dati, "telefona a casa" e reinvia tutte le pressioni dei tasti. Peccato che questi dispositivi esistano già da anni e che sia relativamente facile intercettarli. Niente di nuovo quindi...

A questo punto però fai prima a usare l'ingegneria sociale, mettere il keylogger nella chiavetta spacciandolo per qualcosa d'altro e inducendo il proprietario del PC a lanciarlo.
Non vivo nel mito degli americani infottibili, ma perchè dovrebbero usare una fonte che muore dove nasce (laddove porterebbe qualcosa di nuovo) quando hanno già il malloppo in cantina?
@kabotoz

c'è una cosa che stuzzica la mia curiosità:
che senso ha l'espressione
"i complottisti direbbero" ?
Non è una caratteristica del protocollo ma una pessima implementazione da parte dei produttori dell'hardware. Identiche vulnerabilità si possono trovare in device collegati in Firewire, lightning, PCI, etc...
@puffolotti
Ci delizi da anni con il puffolottese, ora goditi il kobotozese :-P
come contekofflo non ho capito quella frase. Posto che non mi è chiara una cosa. Ci sono memorie che fisicamente non si possono riscrivere. Non basterebbe usare quelle? In questo modo solo sostituendo fisicamente il chip il problema esisterebbe.

ciao
@Van Fanel

Provo una genuina invidia per un'espressione cosmicamente geniale.

Tipo il cestello obliquo nelle lavatrici, è una cosa che vorrei aver inventato io.
Fatemi capire: con una formattazione "profonda" si può far piazza pulita da ogni virus in una chiavetta USB?
Letto da ArsTecnica (se volete posto anche il link)
hp revoca un certificato usato per firmare una pletora di driver e programmi perché é stato usato per firmare digitalmente un malware.

Sempre sull'ipotesi della firma digitale dei firmware dei dispositivi USB, cosa succederebbe se una WesternDigital revocasse un certificato utilizzato per una serie di hard disk usb (motivo qualsiasi, potrebbe anche essere stato compromesso o potrebbe essere stato compromesso il certificato utilizzato per firmare quello di WD)?
Le persone avrebbero ancora accesso ai *loro* dati? WD forse rilascerebbe aggiornamenti per *tutti* i modelli di hard disk usb (o semplicemente dei gusci) che sono stati commercializzati dalla notte dei tempi?
E se WD chiudesse e i certificati fossero permanentemente revocati?
(senza contare che i certificati hanno comunque una scadenza propria, quindi vanno periodicamente aggiornati)

E se fosse la Realtek a revocare un certificato principale? niente schede di rete per scaricare l'aggiornamento, dopo che l'ultimo ha revocato l'autorizzazione ad utilizzare la scheda di rete usb (stanno togliendo, finalmente, i cd dai portatili perché fondamentalmente inutili, molti, come Apple, toglie anche le schede di rete ethernet, tanto c'é il wifi e gli adattatori usb, se serve) e la scheda di rete wifi.

Giusto per ribadire quanto sia malato concettualmente il sistema delle firme digitali, specie se applicato in codesto modo.

Non ho ben capito come fa ad essere dannoso. Se si modifica una chiavetta usb in modo tale che si presenti al PC come una tastiera, questa potrà impartire qualsiasi comando, ma non in modo nascosto: l'utente vedrà il computer agire da solo e forse farà in tempo ad intervenire prima del danno (sempre che l'utente abbia i diritti per fare danni)
Sarebbe dannoso se tale chiavetta potesse interagire con il Sistema Operativo mediante un programma, ma il programma in quale spazio e su quale processore gira? Se gira nello spazio del S.O. il problema non sussiste dato che un qualsiasi antivirus può intercettarlo. Se gira sul processore della chiavetta immagino che possa far ben poco al di fuori dei compiti per il quale il processore è pensato e comunque sarà circoscritto al dispositivo stesso, cioè potrà mandare messaggi al SO che li interpreterà come proveniente da un dispositivo diverso, ma a meno di bug, non mi risulta che questo possa fare danni (ad eccezione della testiera che è un dispositivo di input). Può il processore della chiavetta leggere il file system del computer attaccato? Può senza dubbio gestire il proprio e quindi modificare o cancellare qualsiasi file in esso contenuto (anche indipendente dal file system utilizzato), ma può agire sullo spazio del disco come se fosse il proprio? Mi verrebbe da dire di no, per farlo dovrebbe interagire con il SO, ma aspetto una risposta da chi conosce meglio l'argomento.
Può ricevere informazioni dal SO? Dovrebbe simulare un dispositivo di output, ma perchè il SO dovrebbe mandargli dei dati? Esistono dei casi in cui il SO invia dati non appena un dispositivo di output è collegato al PC? Se io collegassi un dispositivo di rete, il SO in autonomia invia ad esso i pacchetti di rete? In verità ci ho provato inserendo una chiavetta wifi, ma con ifconfig (da linux) ho visto che non riceve o invia pacchetti, sbaglio qualcosa?

Caso diverso se il firmware del dispositivo è eseguito sul processore del PC, ma dovendo agire al di fuori del SO, il programmatore potrà fargli fare compiti ben precisi visto il poco spazio a disposizione, a meno che non usi l'overlay con i file dinamici scritti su una partizione nascosta (in tal caso potrà fare qualsiasi cosa). E' questo il caso? Dalla disclosure non mi sembra, ma potrei sbagliare.
Grazie
Argomento molto interessante. Tempo fa ho ricevuto una chiavetta usb, o almeno pensavo lo fosse, che pubblicizzava un corso di lingue. Credevo fosse un gadget come tanti ed invece, appena collegata "prende possesso" del pc facendosi riconoscere come sistema di input, clicca su "start" > "esegui" e digita il comando per avviare IE collegandosi al sito del corso. L'ho brutalmente scollegata al volo inorridito ma incuriosito e quest'articolo non fa che confermare le mie preoccupazioni. Il pc non ha difese se è convinto che sia l'utente a compiere determinate azioni tramite mouse e tastiera. Quali precauzioni adottare?
Mave: si chiama autostart di una macro :D Che poi è una cavolata, perchè bastava mettere il link alla pagina web.

Disattiva l'avvio automatico delle chiavette dalle impostazioni e non avrai più di questi problemi.
@giubbe: il FW modificato basta che semplicemente faccia avviare un programma dalla chiavetta (il vero malware). La soluzione sarebbe semplicissima ma scomoda: inibire l'esecuzione di programmi dalle chiavette usb. Chiaramente la cosa è aggirabile, basta usare un ID dela periferica modificato.. insomma il modo c'è sempre.
Uhm, non so se è la stessa cosa, ma Avira impedisce di default l'autorun da dispositivi USB.
La vita non è così semplice come Giovanni Verga vuol farci credere...

Capita che su un computer con OS windows 7 o 8 appena comprato, uno cerca di fare una roba appena un po' eterodossa ed il computer risponde: "Mi spiace, [puffolotti], ma temo di non poterlo permettere."

"Il pc non ha difese se è convinto che sia l'utente a compiere determinate azioni tramite mouse e tastiera."

In realtà le ha, il chè significa che se un malware arriva nelle aree che il computer non vuole vengano toccate dall'utente (l'equivalente delle grate d'aerazione in una fresa, usiamo viti strane così siamo sicuri che solo chi sa togliere quelle viti può metterci le mani.) è il sistema operativo ad impedire all'utente di prendere il malware per il collo e spezzargli la schiena.
"Fatemi capire: con una formattazione "profonda" si può far piazza pulita da ogni virus in una chiavetta USB?"

Dipende da dove sta il virus. Se è in una partizione a sola lettura (pensate alle chiavette U3) no.
Il Lupo della Luna: in realtà è disattivato, per quello mi preoccupava.

L'idea che una memoria si passi per tastiera e mouse mettendosi a scrivere non mi entusiasma molto. Ho provato il tool G-Data citato nei commenti ed effettivamente avvisa dell'esecuzione e permette di bloccarla.

puffolottiaccident: "Il pc non ha difese se è convinto che sia l'utente a compiere determinate azioni tramite mouse e tastiera." Avrei dovuto mettere un punto interrogativo alla fine. La mia voleva essere una riflessione.

Se ho capito bene il tuo suggerimento consiste nel non dare all'utente "di tutti i giorni" un accesso da amministratore? Sono d'accordo, vince sempre il buon senso. Cosa che purtroppo, generalmente in ambiente Windows domestico non accade. La schermata scura che chiede il consenso ad eseguire un programma con privilegi elevati si accontenta di un click su OK; e la chiavetta maligna in questione potrebbe farlo.
L'autostart in questo caso non c'entra nulla. Va disabilitato ma non vi difende affatto da questo attacco. L'autostart esegue dei comandi scritti su memorie di massa esterne che si identificano come tali. Questi dispositivi si identificano come tastiere. C'è l'autostart per le tastiere?

Il dispositivo in vendita di cui parlavo si chiama RubberDucky, dovrebbe essere paperella di gomma. E' questo qua
http://hakshop.myshopify.com/products/usb-rubber-ducky-deluxe?variant=353378649
costa 40$
e qui trovate la libreria di script già pronta.
http://ducktoolkit-411.rhcloud.com/Home.jsp
Questa è roba che non ho mai usato, anche io mi chiedo se viene visualizzato qualcosa o i comandi sono troppo veloci e non c'è il tempo di visualizzare nulla.
Per premere il Si o Yes senza cliccarci sopra basta dare da tastiera ALT+s o ALT+y

Il problema sorge dal fatto che un PC non sa se ciò che stai collegando è effettivamente una tastiera o no, non ha modo di farlo, e ciò che arriva da una tastiera o da un mouse non ha alcun controllo. Semmai dovrebbe dare un allarme se 2 tastiere sono contemporaneamente collegate.
I miei dubbi vertono sul fatto che sia facilmente possibile riprogrammare i controller USB. Però realizzare una chiavetta finta non solo è possibile ma è stato già fatto da anni.
Viene visualizzato per forza qualcosa e la velocità di esecuzione dipende da quella del PC. Il problema è che usare comandi da tastiera ti vincola a un pò troppe cose, ad esempio alla lingua del sistema (certo, ok è sempre enter e annulla sempre esc, ma quasi tutte le altre shortcut sono dipendenti dalla lingua. Un dispositivo usb è un dispositivo usb e fa quello che deve fare quando viene collegato..

Una cosa sicuramente da fare è abilitare l'UAC su windows e creare due account: uno non amministratore da usare normalmente, e uno amministratore da usare in caso di installazioni. Facendo qualcosa che richiede privilegi elevati con l'account user, windows ti chiede utente e password, e quelli non puoi tirarli a indovinare.
Formatta e mettici linux, Formatta e mettici android x86, le chiavette USB 3.0 sono più veloci degli hard disk !
Si, peccato che se il firmware della chiavetta ha dentro (per esempio) un keylogger se ne frega del sistema operativo. Idem se il malware s'appogga a una roba più universale tipo javascript. Addirittura potrebbe essere os-independent... (la paranoia è brutta).


Ma il suggerimento di usare Wifi o BT per trasferire i file non è meno sicuro, visto che intromettersi nelle connessioni wireless è ancora più facile dato che non presume l'accesso fisico al computer?