Porta USB di Android

usb uartL’acceso fisico ad un computer equivale all’accesso di root.

Sebbene questo sia il mantra che viene ripetuto da chi si occupa di sicurezza, c’è la presunzione che cellulari e tablet siano meno attaccabili di un normale computer sotto questo aspetto. Illusi.

I sistemi di estrazione dei dati dai cellulari sono relegati alle apparecchiature per l’uso forense, che costano (quelle belle) oltre diecimila euro, escluso l’abbonamento annuale per gli aggiornamenti.

Michael Ossmann e Kyle Osborn hanno dimostrato {video} come sia possibile con costi contenuti e con materiali facilmente reperibili accedere alla console di debug di Android di molti dispositivi, anche se la funzione di debug è disabilitata. Il metodo utilizzato è semplicissimo, una volta che si conosce come funzionano le cose.

I dispositivi moderni utilizzano la porta USB per scopi molteplici, per questa ragione è necessario frapporre un chip multiplexer tra la porta USB e la circuiteria del dispositivo in modo tale che i dati o l’energia vengano diretti verso il circuito adatto. Il multiplexer analizza il tipo di connessione in arrivo e segnala al dispositivo cosa è stato connesso alla porta USB. Questo permette ad Android di reagire in maniera opportuna: se è stato connesso un caricabatterie, viene passata la corrente al circuito di carica, se è stato connesso un computer viene attivato il software apposito, se è stato connesso l’impianto audio di un’automobile viene avviata la riproduzione dei brani musicali e così via.

I connettori miniUSB e microUSB hanno un pin in più rispetto ai normali quattro, chiamato ID. Secondo la documentazione questo pin doveva servire per selezionare il tipo di dispositivo USB che si stava connettendo: se è cortocircuitato con GND si sta connettendo un host USB (un computer), se non è connesso si sta connettendo uno slave (chiavetta, lettore DVD, stampante, eccetera).

I dispositivi Android Samsung (e probabilmente anche altri) utilizzano come multiplexer il chip Fairchild FSA9280A che è in grado di utilizzare il pin ID in maniera meno grossolana rispetto alle specifiche. Quando viene connesso qualcosa ad una porta governata dal FSA9280A, questo è in grado di leggere la resistenza tra il pin ID e GND e comportarsi di conseguenza come descritto nelle specifiche del chip (pagina 9).

Ossmann e Osborn hanno notato nella tabella la voce “UART cable”; ai vecchi lupi della telematica la sigla UART suonerà tutto fuorché nuova. Se il dispositivo Android supporta questa funzione del FSA9280A, dovrebbe essere possibile attivare un’interfaccia seriale attraverso il connettore USB del dispositivo stesso. In questo caso bisogna sottolineare che la porta USB del dispositivo Android non funziona con il protocollo USB, ma viene trasformata in seriale, è questa una delle funzioni del multiplexer.

Per verificare la teoria sono necessari:

Come si può vedere è materiale molto comune e facilmente reperibile, il risultato finale è quello che si vede nella foto sopra.

Quando si connette un dispositivo Android ad un circuito del genere, viene attivata sull’interfaccia UART il FIQ debugger. Nelle piattaforme ARM, FIQ è sinonimo di NMI delle piattaforme Intel; in sostanza si tratta di una consolle testuale di debug attivata da un interrupt ad altissima priorità.

Ciascun dispositivo Android si comporta in maniera diversa: alcuni permettono di aprire una shell con privilegi di root, altri non hanno questa feature abilitata, ma permettono comunque di vedere il log del kernel e di compiere altre funzioni che rivelano comunque delle informazioni.

Una veloce ricerca rivela che Ossmann e Osborn non sono stati i primi ad accorgersi delle funzionalità del FSA9280A come è testimoniato da questo forum polacco, da questo articolo o da questo articolo giapponese.

Per difendersi da attacchi di questo tipo, a parte non lasciare un Android incustodito è bene non connettere mai un dispositivo ad un caricabatteria sconosciuto, inclusi quelli presenti in aeroporto o nelle prese a muro degli alberghi. Trovandosi in albergo e avendo bisogno di caricare il telefono via USB, una valida alternativa potrebbe essere quella di utilizzare la porta USB del televisore. (via Hack a Day)

Autore: Luigi Rosa

Consulente IT, sviluppatore, SysAdmin, cazzaro, e, ovviamente, geek.

8 pensieri riguardo “Porta USB di Android”

  1. O usare il carica batteria sconosciuto per caricare un power box usb, ed usare quello per caricare il telefono…

  2. Beh! è noto che ci sono numerose backdoor su tutti i dispositivi.
    Moltissimi dispositivi hardware, decoder, tutti i dispositivi con un microcontrollore, insomma, spesso hanno un connettore che sul PCB non viene montato, e che dopo una indagine veloce, si scopre essere il connettore per collegare l’emulatore Jtag che permette a chi fa development di lavorare con l’HW. Spesso si scopre che montando il connettore e mediante il pod dell’emulatore è possibile entrare in modalità di debug, e fare qualsiasi cosa di quell’HW. Non ultima per chi si ricorda la vecchia xbox e diverse altre console.

    Resta comunque il fatto che per quei dispositivi colpiti, (forse solo samsung e quindi il 50% dei devices android), la modalità di debug è veramente un po’ troppo open e fare un grabber hardware che in pochi secondi, collegando un caricabatterie ‘taroccato’ o anche un dispositivo standalone, è in grado di succhiare le informazioni utili, tipo rubrica, messaggi, foto, ecc ecc, che per un utente root sono semplici files su FS manco cifrati.

    Un taglio pista mediante un jumper SMD almeno lo avrei fatto su quel segnale sui device da produzione. Complimentoni, perché una volta scoperto il fattaccio, un ingente quantità di dispositivi rimarranno vulnerabili per sempre. Questi dati poi verranno strumentalizzati opportunamente per far calare il già non troppo alto rank sulla sicurezza dei dispositivi android.

    10+ a samsung, che ha tutto il potenziale per diventare il numero uno, mi cade su un buccine di banana così grave.

    Vedremo in futuro l’elenco dei devices vulnerabili, nella speranza che solo pochi dei essi montano l’FSA9280A ed un firmware che abilita le funzioni di debug, o quantomeno l’accesso come root.

    1. Thoro, sull’hardware tu ne capisci n-mila volte piu’ di me, ma questo e’ il tipico caso che dimostra che la sicurezza attraverso la segretezza non funziona un accidente. E’ triste vedere che c’e’ sempre qualcuno che ci prova e sono sicuro che per un bel po’ di tempo ci sara’ chi ci prova.

      Da quello che ho capito, pero’, il problema puo’ essere risolto a livello software perche’ basta limitare (o disabilitare) le funzioni del FIQ debugger. Sicuramente i telefoni low cost e quelli fuori supporto si tengono la vulnerabilita’.

      1. Si infatti, mi riferivo al fatto che samsung ormai ha un catalogo di 100.000 devices, e ne sforna 1 nuovo al mese, solo che come supporto FW si ferma molto prematuramente, e alcune volte anche alla prima release. Io ho un Samsung Galaxy Ace Plus, che non è proprio un low cost, è nato con froyo e non ha mai ricevuto ufficialmente un update. Avevano promesso JB, ma non arrivò mai.
        In sostanza a parte i Galaxy S2, S3, S4 e i Note che più o meno sono seguiti, tutto il resto muore li. Pertanto o uno è scafato e installa qualche modded, cyanogen ecc ecc. oppure si tiene il bug. Vero è che nella media non frega un tubo a nessuno il fatto di avere un bug di quel tipo, non credo che qualcuno tenti di ‘rubare’ le informazioni del telefono di mia figlia, con strumenti HW. La brutta realtà è invece la strumentalizzazione che ne faranno, dicendo che i devices Android, sono scarsi come sicurezza, quando non è un problema di Android, ma di samsung e forse qualche altro costruttore che ha fatto delle ‘personalizzazioni’ che hanno reso quel terminale montante Android più vulnerabile. Se fossi google farei il culo a Samsung.

  3. A proposito di falle di sicurezza orrende, un mio amico che lavora nel mondo della sicurezza fisica (casseforti, banche, ecc) mi diceva che un noto produttore di serrature elettroniche a combinazione, dotate anche di funzioni di apertura ritardata, apertura e chiusura con interlock, e tutte quelle funzioni che dovrebbero essere necessariamente non “scavalcabili” in nessun modo, nemmeno conoscendo la combinazione giusta, ha una master password che consenta di fare ogni operazione, comprese quelle “vietate” a chi ha il codice giusto in mano. Immaginate come l’hanno presa bene quando questa informazione e` diventata pubblica.

    1. La master password (o developer password o field engineer password che dir si voglia) e’ una cacchio di abitudine che l’industria fatica a perdere. Sono quelle cose che vengono decise in una riunione in cui c’e’ un tecnico, l’AD, il marketing e magari anche un avvocato. Il tecnico viene deriso e messo all’angolo e qualcuno di non-tecnico decide l’implementazione di questa feature “che ci potrebbe far risparmiare un sacco di tempo”.

Spazio per un commento