SafetyNet ha spiegato perché Android Pay e altre app non funzionano su dispositivi con rooting
Il rooting del tuo dispositivo Android ti dà accesso a una più ampia varietà di app e ad un accesso più approfondito al sistema Android. Ma alcune app, come Android Pay di Google, non funzionano affatto su un dispositivo rooted.
Google utilizza qualcosa chiamato SafetyNet per rilevare se il dispositivo è rootato o meno e blocca l'accesso a tali funzioni. Anche Google non è l'unico, molte app di terze parti non funzionano anche su dispositivi Android con root, sebbene possano verificare la presenza di root in altri modi.
SafetyNet: come Google sa di aver radicato il tuo telefono Android
I dispositivi Android offrono una "API SafetyNet", che fa parte del livello Google Play Services installato sui dispositivi Android approvati da Google. Questa API "fornisce accesso ai servizi di Google che ti aiutano a valutare la salute e la sicurezza di un dispositivo Android", secondo Google. Se sei uno sviluppatore Android, puoi chiamare questa API nella tua app per verificare se il dispositivo su cui stai lavorando è stato manomesso.
Questa API SafetyNet è progettata per verificare se un dispositivo è stato manomesso, indipendentemente dal fatto che sia stato rootato da un utente, stia eseguendo una ROM personalizzata o sia stato infettato da malware di basso livello, ad esempio.
I dispositivi forniti con il Play Store di Google e altre app installate devono superare la "Suite di test di compatibilità" di Android di Google. Il rooting di un dispositivo o l'installazione di una ROM personalizzata impediscono a un dispositivo di essere "compatibile con CTS". Questo è il modo in cui l'API SafetyNet è in grado di stabilire se si è radicati: si limita a verificare la compatibilità CTS. Allo stesso modo, se si ottiene un dispositivo Android che non è mai arrivato con le app di Google, ad esempio uno di quei tablet da 20 dollari spediti direttamente da una fabbrica in Cina, non sarà considerato affatto "compatibile CTS", anche se non lo si è radicato.
Per ottenere queste informazioni, Google Play Services scarica un programma denominato "snet" e lo esegue in background sul tuo dispositivo. Il programma raccoglie dati dal tuo dispositivo e lo invia regolarmente a Google. Google utilizza queste informazioni per una varietà di scopi, dall'acquisizione di un'immagine del più ampio ecosistema Android per determinare se il software del tuo dispositivo è stato manomesso o meno. Google non spiega esattamente cosa sta cercando snet, ma è probabile che controlli se la tua partizione di sistema è stata modificata dallo stato di fabbrica.
È possibile verificare lo stato SafetyNet del dispositivo scaricando un'applicazione come SafetyNet Helper Sample o SafetyNet Playground. L'app chiederà il servizio SafetyNet di Google sullo stato del dispositivo e ti dirà la risposta ricevuta dal server di Google.
Per ulteriori dettagli tecnici, leggi questo post sul blog scritto da John Kozyrakis, uno stratega tecnico di Cigital, una società di sicurezza del software. Ha scavato in SafetyNet e spiega di più su come funziona.
È fino all'App
SafetyNet è facoltativo per gli sviluppatori di app e gli sviluppatori di app possono scegliere di usarlo o meno. SafetyNet impedisce solo a un'applicazione di funzionare se lo sviluppatore di un'applicazione non vuole che funzioni su dispositivi rooted.
La maggior parte delle app non controllerà affatto l'API SafetyNet. Anche un'app che controlla le API di SafetyNet, come le app di prova di cui sopra, non smetterà di funzionare se ricevono una risposta negativa. Lo sviluppatore dell'app deve controllare l'API SafetyNet e fare in modo che l'app si rifiuti di funzionare se viene rilevato che il software del dispositivo è stato modificato. L'app Android Pay di Google è un buon esempio di questo in azione.
Android Pay non funzionerà su dispositivi con rooting
La soluzione di pagamento mobile Android Pay di Google non funziona affatto su dispositivi Android con root. Prova a lanciarlo e vedrai semplicemente un messaggio che dice "Non è possibile utilizzare Android Pay. Google non è in grado di verificare che il tuo dispositivo o il software in esecuzione sia compatibile con Android. "
Ovviamente non si tratta solo di fare il tifo, l'esecuzione di una ROM personalizzata ti metterebbe a repentaglio questo requisito. L'API SafetyNet afferma che non è "compatibile con Android" se utilizzi una ROM personalizzata con cui il dispositivo non è stato fornito.
Ricorda, questo non rileva solo il rooting. Se il tuo dispositivo è stato infettato da alcuni malware a livello di sistema con la possibilità di spiare Android Pay e altre app, l'API SafetyNet impedisce anche il funzionamento di Android Pay, che è una buona cosa.
Il rooting del dispositivo interrompe il normale modello di sicurezza di Android. Android Pay protegge normalmente i tuoi dati di pagamento utilizzando le funzionalità di sandboxing di Android, ma le app possono uscire dalla sandbox su un dispositivo rooted. Google non ha modo di sapere quanto sarebbe sicuro Android Pay su un particolare dispositivo se è radicato o esegue una ROM personalizzata sconosciuta, quindi la bloccano. Un ingegnere di Android Pay ha spiegato il problema sul forum degli sviluppatori XDA se sei curioso di leggere di più.
Altre applicazioni possono rilevare la radice
SafetyNet è solo un modo in cui un'applicazione può controllare se è in esecuzione su un dispositivo rooted. Ad esempio, i dispositivi Samsung includono un sistema di sicurezza denominato KNOX. Se si esegue il root del dispositivo, viene attivata la sicurezza KNOX. Samsung Pay, l'app per i pagamenti mobili di Samsung, rifiuterà di funzionare sui dispositivi rooted. Samsung sta utilizzando KNOX per questo, ma potrebbe anche usare SafetyNet.
Allo stesso modo, molte app di terze parti ti impediranno di usarle e non tutte usano SafetyNet. Potrebbero semplicemente verificare la presenza di app e processi root noti su un dispositivo.
È difficile trovare un elenco aggiornato di app che non funzionano quando un dispositivo è rootato. Tuttavia, RootCloak fornisce diversi elenchi. Queste liste potrebbero non essere aggiornate, ma sono le migliori che possiamo trovare. Molte sono le applicazioni bancarie e altre applicazioni di portafoglio mobile, che bloccano l'accesso sui telefoni radicati nel tentativo di proteggere le tue informazioni bancarie dall'acquisizione da parte di altre app. Le app per i servizi di streaming video possono anche rifiutarsi di funzionare su un dispositivo rooted come una sorta di misura DRM, tentando di impedirti di registrare un flusso video protetto.
Alcune app possono essere ingannate
Google sta giocando un gioco gatto-e-topo con SafetyNet, aggiornandolo costantemente nel tentativo di stare al passo con le persone che lo circondano. Ad esempio, lo sviluppatore Android Chainfire ha creato un nuovo metodo per il rooting di dispositivi Android senza modificare la partizione di sistema, nota come "root senza sistema". Inizialmente, SafetyNet non rilevava dispositivi come manomessi e Android Pay funzionava, ma SafetyNet veniva infine aggiornato per rilevare questo nuovo metodo di rooting. Ciò significa che Android Pay non funziona più insieme a root senza sistema.
A seconda di come un'app controlla l'accesso come root, potresti essere in grado di ingannarla. Ad esempio, ci sono metodi secondo i quali fare il root di alcuni dispositivi Samsung senza incorrere nella sicurezza di KNOX, il che consentirebbe di continuare a utilizzare Samsung Pay.
Nel caso di app che controllano solo le app di root sul tuo sistema, c'è un modulo di Xposed Framework chiamato RootCloak che, a quanto si dice, ti permette di ingannarli a lavorare comunque. Funziona con app come DirecTV GenieGo, Best Buy CinemaNow e Movies by Flixster, che normalmente non funzionano su dispositivi rooted. Tuttavia, se queste app fossero state aggiornate per utilizzare SafetyNet di Google, non sarebbero così facili da ingannare in questo modo.
La maggior parte delle app continuerà a funzionare normalmente dopo il root del dispositivo. Le app di pagamento mobili sono la grande eccezione, così come alcune altre app bancarie e finanziarie. A volte i servizi di streaming video a pagamento tentano di impedirti di guardare anche i loro video.
Se un'app di cui hai bisogno non funziona sul tuo dispositivo rooted, puoi sempre sradicare il tuo dispositivo per usarlo. L'app dovrebbe funzionare dopo aver restituito il dispositivo al suo stato sicuro e di fabbrica.
Immagine di credito: Danny Choo su Flickr