Android Q: Tutte le nuove funzionalità di sicurezza e privacy in arrivo su Android 10

Al Google I/O abbiamo appreso dei miglioramenti apportati da Android Q. Nuove funzionalità e miglioramenti per la sicurezza e la privacy sono presenti in tutto il nuovo sistema operativo Android.

Ogni nuova versione del sistema operativo Android apporta miglioramenti a quasi ogni aspetto dal design, alle funzionalità, alle API e altro ancora. Al Google I/O all'inizio di questo mese abbiamo appreso tutto miglioramenti apportati da Android Q porterà e, naturalmente, nuovi annunci sulla privacy e sulla sicurezza non sono stati esclusi dalla conferenza. La sicurezza della piattaforma è uno degli aspetti più importanti di un sistema operativo, soprattutto per un sistema operativo che portiamo sempre con noi nelle nostre tasche. Se Android non fosse sicuro, non gli attribuiremmo la metà delle funzioni che abbiamo. I pagamenti NFC sarebbero fuori discussione, la condivisione di file sarebbe nella migliore delle ipotesi dubbia e la connessione ad altri dispositivi sarebbe una vera e propria follia. Nonostante l'annoso problema della frammentazione delle versioni, Google ha fatto molto bene per mantenere al minimo il numero di problemi di sicurezza.

Android è maturato in un sistema operativo ricco di funzionalità e altamente sicuro. Ma ovviamente c’è sempre spazio per miglioramenti. Sono molti i fattori che contribuiscono a questa sicurezza e alcuni di essi sono stati in qualche modo migliorati con Android Q.


Crittografia

Essendo uno dei metodi di sicurezza più basilari, è importante che ogni dispositivo supporti una crittografia avanzata. Molti OEM oggigiorno spediscono i propri dispositivi con hardware di crittografia dedicato. Anche se questo è vantaggioso, è anche costoso. Pertanto, l'hardware dedicato è stato generalmente limitato ai dispositivi di livello medio-alto. Questo non vuol dire che i dispositivi di fascia bassa non può supportano la crittografia, ma senza la crittografia con accelerazione hardware l'esperienza utente complessiva risulta ridotta a causa dei tempi di lettura/scrittura lenti. È qui che entra in gioco Adiantum.

Adiantum

A febbraio Google ha annunciato Adiantum come alternativa algoritmo di crittografia per telefoni di fascia bassa che non supportano i normali set di istruzioni AES. Adiantum è specificamente progettato per funzionare senza hardware dedicato. Serve come alternativa più leggera alla normale crittografia AES di Android. I benchmark di Google dicci che in realtà è 5 volte più veloce di AES, con lo svantaggio che compromette leggermente la sicurezza. Ciò lo rende il candidato ideale per i telefoni di fascia bassa, come quelli basati su Android Go Edition. Adiantum riguarda anche prodotti come smartwatch e una varietà di dispositivi Internet of Things.

Finora Adiantum era facoltativo; i produttori potevano abilitarlo sui dispositivi avviati con Android Pie, ma non era l'algoritmo di crittografia predefinito. Ora Adiantum è incluso nativamente come parte di Android Q. Ciò significa che tutti i dispositivi avviati con Q dovranno crittografare i dati dell'utente, senza eccezioni. Di conseguenza, i dispositivi che si avviano con Android Q hanno la garanzia di avere la crittografia di archiviazione, tramite Adiantum o meno.

Libreria di sicurezza Jetpack

Jetpack è un insieme di librerie di supporto Android e una delle aggiunte più recenti è in alfa: la libreria di sicurezza Jetpack. La libreria semplifica il processo di protezione della tua applicazione gestendo aspetti come la gestione degli archivi di chiavi supportati da hardware e la generazione e la convalida delle chiavi.

TLS 1.3

Tuttavia, lo storage non è l’unica area in cui è stata migliorata la crittografia. La comunicazione con altri dispositivi è stata notevolmente migliorata, con l'introduzione di Supporto TLS 1.3 per impostazione predefinita. TLS 1.3 è l'ultimo standard crittografico di rete, finalizzato dall'IETF nell'agosto 2018. TLS 1.3 garantisce maggiore privacy per gli scambi di dati crittografando un numero maggiore di passaggi di negoziazione. Inoltre, è più veloce di TLS 1.2 perché un intero viaggio di andata e ritorno viene eliminato dall'handshake di creazione della connessione. Insieme ad algoritmi moderni più efficienti, ciò consente un aumento della velocità fino al 40%.

TLS 1.3 in Google Chrome. Fonte: Google.

TLS è ora aggiornabile direttamente da Google Play perché fa parte del componente "Conscrypt". Puoi leggere di più a riguardo e su Project Mainline Qui.

Dato che ogni giorno ci fidiamo di così tante transazioni sensibili sui nostri dispositivi, il TLS aggiornato è più importante che mai. Memorizzare carte d'imbarco e persino patenti di guida digitali ad un certo punto nel futuro - su Android significa che tutti i dispositivi dovrebbero crittografare i dati dell'utente nel miglior modo possibile. Adiantum e la crittografia forzata apriranno la strada all'archiviazione anche dei dati più sensibili sui dispositivi più economici. Ma la crittografia non è l’unico modo in cui Google aumenta la sicurezza di Android nella versione Q.


Modifiche alle autorizzazioni e alla privacy in Android Q

Archiviazione con ambito

L'archiviazione con ambito è una nuova protezione utilizzata per impedire alle app di leggere/scrivere file nella memoria esterna che non sono contenuti nella propria directory specifica dell'app sandbox. L'obiettivo di Google è triplice: una migliore attribuzione di quali app hanno il controllo su quali file, la protezione dei dati delle app e la protezione dei dati degli utenti.

Google sta raddoppiando l'API MediaStore per contenuti audio, video e immagini condivisi. Per impostazione predefinita, tutte le app possono inserire, modificare o eliminare i propri file nel MediaStore. Immagini, MediaStore. Video e MediaStore. Raccolte audio senza bisogno di alcuna autorizzazione. Android Q aggiunge anche una novità MediaStore. Download raccolta per archiviare i contenuti scaricati dagli utenti, a cui possono contribuire tutte le app che utilizzano l'API MediaStore. Mentre i file archiviati nelle directory specifiche delle app in modalità sandbox vengono eliminati al momento della disinstallazione, tutti i file aggiunti alle raccolte MediaStore persistono oltre la disinstallazione.

Per accedere a qualsiasi file creato da un'altra app, indipendentemente dal fatto che il file si trovi in ​​una delle raccolte MediaStore o al di fuori di esse, l'app deve utilizzare Storage Access Framework. Inoltre, i metadati EXIF ​​delle immagini vengono oscurati a meno che alla tua app non sia concessa la nuova autorizzazione ACCESS_MEDIA_LOCATION. In Android Q, le app possono anche controllare su quale dispositivo di archiviazione posizionare i contenuti multimediali interrogando il nome del volume utilizzando getExternalVolume().

Inizialmente Google ha imposto restrizioni sull'archiviazione con ambito su tutte le app in Android Q indipendentemente dai livelli API target, ma dopo il feedback l'azienda lo ha fatto dare agli sviluppatori più tempo per apportare modifiche. È possibile trovare i dettagli completi sulle modifiche all'archiviazione con ambito su questa paginae puoi trovare ulteriori informazioni sui consigli di Google sulle best practice per l'archiviazione condivisa tramite guardando questo Google I/O parlare.

Avvisi per le app destinate al livello API < 23

Tuttavia, le restrizioni sui permessi non finiscono qui. L'installazione di un'app destinata a un livello API inferiore a 23 (Android Lollipop o precedente) farà sì che il sistema operativo visualizzi un avviso all'utente se detta app richiede autorizzazioni sensibili al momento dell'installazione. Prima dell'installazione, gli utenti avranno la possibilità di specificare manualmente quali autorizzazioni desiderano concedere all'app prima di procedere. Pertanto, Android Q non consente più alle app di aggirare le autorizzazioni di runtime.

Come CopperheadOS, Android Q stock ora consente all'utente di disabilitare tutte le autorizzazioni pericolose richieste prima di eseguire un'app per la prima volta. Ciò si applica solo alle app destinate al livello API 22 o inferiore, ovvero prima dell'introduzione delle autorizzazioni di runtime (in Android Marshmallow).

Eventuale SYSTEM_ALERT_DEPRECATION a favore dell'API Bubbles

API Bubbles in azione. Fonte: Google.

L'autorizzazione di sovrapposizione (SYSTEM_ALERT_WINDOW) non può più essere concessa per le app in esecuzione su Android Q (Go Edition). Per i dispositivi non Go Edition, Google sta spingendo gli sviluppatori verso la nuova API Bubbles. L'API Bubbles è una funzionalità introdotta in AndroidQBeta2 che consente funzionalità simili alle teste di chat di Facebook Messenger. Le notifiche delle app appaiono come piccole bolle ai bordi dello schermo, che si espandono quando vengono toccate dall'utente. All'interno della bolla, un'app può visualizzare un'attività.

Questa modifica era necessaria perché consentire alle app di disegnare liberamente sovrapposizioni su altre app comporta evidenti rischi per la sicurezza. Il famigerato"Cappa e spada" l'exploit ha utilizzato ampiamente questa debolezza. La funzionalità dell'API overlay è stata limitata già con Android Oreo, ma ora l'edizione Go di Android Q ha completamente rimosso l'accesso all'API con un versione futura per deprecarlo completamente.

Restrizioni per l'avvio delle attività in background

Le app in background non possono più avviare automaticamente un'attività mentre il telefono è sbloccato, indipendentemente dal livello API di destinazione. Esiste un intero elenco di condizioni alle quali le app possono ora avviare attività, che puoi leggere Qui. Le app in background che non soddisfano queste condizioni e desiderano avviare urgentemente un'attività dovranno ora avvisare l'utente tramite una notifica. Se la notifica viene creata con un intento a schermo intero in sospeso, l'intento viene avviato immediatamente se lo schermo è spento, utile per allarmi o chiamate in arrivo.

Restrizione dell'accesso agli Appunti in background

L'accesso agli appunti in background è non è più possibile. Qualsiasi applicazione che non sia in primo piano o impostata come metodo di input predefinito non sarà in grado di leggere gli appunti in alcun modo. Ciò colpisce particolarmente le app come i gestori di appunti. Google afferma che questa modifica riguarda solo le app destinate esclusivamente ad Android Q, ma i nostri test indicano che la restrizione non è discriminatoria; qualsiasi app che abbiamo provato non è riuscita a vedere gli appunti.

Questo cambiamento, ovviamente, ha senso. Spesso copiamo informazioni sensibili negli appunti, ad esempio password e dettagli della carta di credito, ma è comunque un peccato vedere i gestori degli appunti andare in malora.

Accesso alla posizione solo mentre è in uso un'app

Nuove opzioni di autorizzazione alla posizione

Una nuova impostazione abilitata dall'utente consente alle app di raggiungere la tua posizione solo mentre è in uso. L'ultima beta di Android Q ha anche aggiunto una notifica che ti ricorda se hai concesso a un'app l'accesso permanente alla posizione.

Ruoli

Ruoli

È stata aggiunta una nuova API "Ruoli". I ruoli sono essenzialmente gruppi con autorizzazioni di accesso preimpostate. Ad esempio, le app con il ruolo Galleria potrebbero avere accesso alle cartelle multimediali, mentre le app con il ruolo dialer potrebbero essere in grado di gestire le chiamate. Anche le app a cui viene concesso un determinato ruolo dall'utente devono disporre dei componenti richiesti. Le app con il ruolo Galleria, ad esempio, devono avere il filtro dell'intento dell'azione androide.intento.azione.PRINCIPALE e il filtro dell'intento della categoria android.intent.category. APP_GALLERY per essere visualizzato come app della galleria nelle impostazioni.

Sensori disattivati ​​riquadro Impostazioni rapide

Riquadro Impostazioni rapide sensori

È disponibile un nuovo riquadro delle impostazioni rapide "Sensori disattivati" che disattiva le letture Tutto sensori (accelerometro, giroscopio, ecc.) sul tuo dispositivo per una vera privacy. Questo riquadro Impostazioni rapide è nascosto per impostazione predefinita ma può essere abilitato accedendo ai "riquadri sviluppatore impostazioni rapide" nelle Opzioni sviluppatore.

Restrizioni a /proc/net

Le app non possono più accesso proc/net, rendendo servizi come netstat non più praticabili. Ciò protegge gli utenti dalle app dannose che monitorano i siti Web e i servizi a cui si connettono. Le app che necessitano di accesso continuo, come le VPN, devono utilizzare il file NetworkStatsManagerGestore della connettività classi.

Indirizzi MAC randomizzati

Il tuo indirizzo MAC è un identificatore univoco utilizzato dalle reti per ricordare quale dispositivo è quale. In Android Q, ogni volta che ti connetti a una nuova rete, il tuo dispositivo utilizzerà un nuovo indirizzo MAC casuale. Di conseguenza, le reti non possono monitorare la tua posizione abbinando le reti WiFi a cui ti connetti con l'indirizzo MAC del tuo telefono. L'indirizzo MAC effettivo di fabbrica del dispositivo può ancora essere ottenuto dalle app tramite il file getWiFiMacIndirizzo() comando.


Rafforzamento della piattaforma in Android Q

Un singolo bug all’interno di Android non significa che gli aggressori ora abbiano pieno accesso al sistema operativo o che possano aggirare eventuali sistemi di sicurezza. Ciò è in parte dovuto a una serie di misure di salvaguardia come l’isolamento dei processi, la riduzione della superficie di attacco, la decomposizione dell’architettura e le mitigazioni degli exploit. Queste misure di salvaguardia rendono le vulnerabilità più difficili o addirittura impossibili da sfruttare. Di conseguenza, gli aggressori in genere necessitano di una moltitudine di vulnerabilità prima di poter raggiungere i propri obiettivi. In passato abbiamo assistito ad attacchi come DRAMMER che funzionano concatenando più exploit insieme.

Android Q adotta misure di protezione come queste e le applica ad aree più sensibili come i componenti multimediali e Bluetooth insieme al kernel. Ciò apporta alcuni notevoli miglioramenti.

  • Una sandbox vincolata per i codec software.
  • Maggiore utilizzo in produzione di disinfettanti per mitigare intere classi di vulnerabilità nei componenti che elaborano contenuti non attendibili.
  • Shadow Call Stack, che fornisce Control Flow Integrity (CFI) all'indietro e integra la protezione forward-edge fornita dal CFI di LLVM.
  • Protezione della randomizzazione del layout dello spazio degli indirizzi (ASLR) dalle perdite utilizzando eXecute-Only Memory (XOM).
  • Introduzione dell'allocatore rinforzato Scudo che rende più difficile da sfruttare una serie di vulnerabilità legate all'heap.

Questo è un sacco di gergo software. Il punto è che, in primo luogo, i codec software ora vengono eseguiti in sandbox che hanno meno privilegi, il che significa che è meno probabile che software dannoso sia in grado di eseguire comandi che potrebbero danneggiare il tuo dispositivo, come nel caso Di Panico da palcoscenico nel lontano 2015.

Una sandbox vincolata per i codec software. Fonte: Google.

In secondo luogo, Android ora controlla l'accesso all'array fuori limite in più punti, nonché gli overflow. Prevenire gli overflow e istruire i processi a fallire in modo sicuro riduce significativamente la percentuale di vulnerabilità dello spazio utente. Ciò significa che se un programma dannoso tenta di causare il crash di qualcosa tentando deliberatamente di farlo ottenere l'accesso a dati che non esistono, Android ora lo riconoscerà e uscirà dal programma, invece di schiantarsi.

In terzo luogo, Shadow Call Stack protegge gli indirizzi di ritorno memorizzandoli in uno shadow stack separato, rendendoli inaccessibili ai normali programmi. Gli indirizzi di ritorno sono in genere puntatori a funzioni, quindi proteggere questi indirizzi è importante per garantire che gli aggressori non possano accedere a funzioni a cui non dovrebbero essere in grado.

In quarto luogo, ASLR è un metodo di protezione che randomizza la posizione in cui i programmi sono archiviati in memoria, rendendolo così è più difficile capire dove vengono archiviati i programmi in memoria in base alla posizione degli altri programmi. La memoria di sola esecuzione rafforza questo aspetto rendendo il codice illeggibile.

Infine, Scudo è un allocatore heap dinamico che gestisce in modo proattivo la memoria in modo da rendere le vulnerabilità basate sull'heap molto più difficili da sfruttare. Puoi leggere di più a riguardo Qui.


Autenticazione

Aggiornamenti a BiometricPrompt in Android Q

Google ha introdotto la nuova API BiometricPrompt più di un anno fa, nel Anteprima per sviluppatori Android P 2. Doveva essere un prompt Android generico per i metodi di sblocco biometrico. L'idea è che i dispositivi che supportano qualcosa di più della semplice scansione delle impronte digitali, ad es. la scansione dell'iride sulla linea Galaxy S di Samsung, sarà in grado di utilizzare questi metodi quando le app richiedono la verifica.

Android Q aggiunge un solido supporto per la verifica del volto e delle impronte digitali, oltre ad espandere l'API per supportare l'autenticazione implicita. L'autenticazione esplicita richiede che l'utente si autentichi in qualche modo prima di procedere, mentre quella implicita non necessita di ulteriori interazioni da parte dell'utente.

Flusso implicito ed esplicito dell'API BiometricPrompt. Fonte: Google.

Oltre a ciò, le app ora possono verificare se un dispositivo supporta l'autenticazione biometrica tramite un semplice comando chiamata di funzione, consentendo loro di non perdere tempo invocando un BiometricPrompt sui dispositivi che non lo fanno supportalo. Un utilizzo ideale sarebbe se le app volessero fornire un'impostazione "Abilita accesso biometrico" in base al fatto che un dispositivo supporti o meno l'autenticazione biometrica.

Gli elementi costitutivi del supporto dell'ID elettronico

All'inizio di quest'anno, abbiamo scoperto prove che Google lo è lavorando sul supporto per gli ID elettronici nell'Android. All'I/O, Google ci ha aggiornato sullo stato di avanzamento della funzione. Google afferma che sta lavorando con l'ISO per standardizzare l'implementazione delle patenti di guida mobili, con passaporti elettronici in lavorazione. Per gli sviluppatori, Google fornirà una libreria Jetpack in modo che le app di identità possano iniziare a essere create.


Progetto Mainline in Android Q

Project Mainline è un'importante impresa di Google per ridurre la frammentazione di alcuni moduli e app di sistema. Google controllerà gli aggiornamenti per circa 12 componenti di sistema tramite il Play Store. Abbiamo parlato approfonditamente del Progetto Mainline in un articolo precedente se sei interessato a leggere di più.


Conclusione

La sicurezza è sempre stata una parte fondamentale dello sviluppo di Android. Google ha svolto un lavoro straordinario mantenendo Android aggiornato con le ultime funzionalità di sicurezza, oltre ad apportare alcune innovazioni. Stanno continuando questo processo di sviluppo con Android Q, arricchendolo di funzionalità di sicurezza pensate per garantire che i tuoi dati siano più sicuri che mai.


Fonte 1: Novità nella sicurezza di Android Q [Google]

Fonte 2: Sicurezza su Android: quali prospettive [Google]

Fonte 3: mettere in coda i miglioramenti della protezione avanzata [Google]

Con il contributo di Mishaal Rahman e Adam Conway.