Il team di sicurezza Android è responsabile della gestione delle vulnerabilità di sicurezza rilevate nella piattaforma Android e in molte delle app Android di base incluse nei dispositivi Android.
Il team di sicurezza Android rileva le vulnerabilità di sicurezza tramite ricerche interne e risponde anche ai bug segnalati da terze parti. Le fonti di bug esterni includono problemi segnalati tramite il modulo per le vulnerabilità, ricerche accademiche pubblicate e in fase di pubblicazione, manutentori di progetti open source upstream, notifiche dei nostri partner produttori di dispositivi e problemi divulgati pubblicamente pubblicati su blog o social media.
Segnalare problemi di sicurezza
Qualsiasi sviluppatore, utente Android o ricercatore di sicurezza può notificare al team di sicurezza di Android potenziali problemi di sicurezza tramite il modulo per le vulnerabilità.
I bug contrassegnati come problemi di sicurezza non sono visibili esternamente, ma potrebbero diventarlo dopo la valutazione o la risoluzione del problema. Se prevedi di inviare una patch o un test della suite di test di compatibilità (CTS) per risolvere un problema di sicurezza, allegalo alla segnalazione di bug e attendi una risposta prima di caricare il codice su AOSP.
Valutare i bug
La prima attività nella gestione di una vulnerabilità di sicurezza consiste nell'identificare la gravità del bug e il componente di Android interessato. La gravità determina la priorità del problema, mentre il componente determina chi corregge il bug, chi viene avvisato e come viene implementata la correzione per gli utenti.
Tipi di contesto
Questa tabella copre le definizioni dei contesti di sicurezza hardware e software. Il contesto può essere definito dalla sensibilità dei dati che elabora in genere o dall'area in cui viene eseguito. Non tutti i contesti di sicurezza sono applicabili a tutti i sistemi. Questa tabella è ordinata dal meno privilegiato al più privilegiato.
| Tipo di contesto | Definizione del tipo |
|---|---|
| Contesto vincolato |
Un ambiente di esecuzione con limitazioni in cui vengono fornite solo le autorizzazioni più minime. Ad esempio, app attendibili che elaborano dati non attendibili in un ambiente sandbox. |
| Contesto senza privilegi |
Un ambiente di esecuzione tipico previsto dal codice senza privilegi. Ad esempio, un'app per Android che viene eseguita in un dominio SELinux con l'attributo untrusted_app_all.
|
| Contesto privilegiato |
Un ambiente di esecuzione privilegiato che potrebbe avere accesso a autorizzazioni elevate, gestisce
più utenti PII e/o mantiene l'integrità del sistema. Ad esempio, un'app per Android con funzionalità che sarebbero vietate dal dominio SELinux untrusted_app o con accesso alle autorizzazioni
privileged|signature.
|
| Kernel del sistema operativo |
Funzionalità che:
|
| Trusted Hardware Base (THB) | Componenti hardware discreti, in genere sul SoC, che forniscono funzionalità essenziali per i casi d'uso principali del dispositivo (ad esempio, baseband cellulari, DSP, GPU e processori ML). |
| Bootloader Chain | Un componente che configura il dispositivo all'avvio e poi passa il controllo al sistema operativo Android. |
| Trusted Execution Environment (TEE) | Un componente progettato per essere protetto anche da un kernel del sistema operativo ostile (ad esempio, TrustZone e hypervisor, come pKVM, che proteggono le macchine virtuali dal kernel del sistema operativo). |
| Secure Enclave / Secure Element (SE) |
Un componente hardware opzionale progettato per essere protetto da tutti gli altri componenti del
dispositivo e da attacchi fisici, come definito in
Introduzione agli elementi sicuri. Ciò include il chip Titan-M presente in alcuni dispositivi Android. |
Gravità
La gravità di un bug in genere riflette il potenziale danno che potrebbe verificarsi se un bug venisse sfruttato correttamente. Utilizza i seguenti criteri per determinare la gravità.
| Classificazione | Conseguenza dello sfruttamento riuscito |
|---|---|
| Critica |
|
| Alto |
|
| Moderato |
|
| Bassa |
|
| Impatto sulla sicurezza trascurabile (NSI) |
|
Modificatori della gravità
Sebbene la gravità delle vulnerabilità di sicurezza sia spesso facile da identificare, le valutazioni possono variare in base alle circostanze.
| Motivo | Effetto |
|---|---|
| Richiede l'esecuzione come contesto privilegiato per eseguire l'attacco (non applicabile a TEE, SE e hypervisor come pKVM) | -1 Gravità |
| I dettagli specifici della vulnerabilità limitano l'impatto del problema | -1 Gravità |
| Bypass dell'autenticazione biometrica che richiede informazioni biometriche direttamente dal proprietario del dispositivo | -1 Gravità |
| Le configurazioni del compilatore o della piattaforma mitigano una vulnerabilità nel codice sorgente | Gravità media se la vulnerabilità sottostante è media o superiore |
| Richiede l'accesso fisico ai componenti interni del dispositivo ed è comunque possibile se il dispositivo è spento o non è stato sbloccato dall'accensione | -1 Gravità |
| Richiede l'accesso fisico ai componenti interni del dispositivo mentre è acceso ed è stato precedentemente sbloccato | -2 Gravità |
| Un attacco locale che richiede lo sblocco della catena del bootloader | Non superiore a Bassa |
| Un attacco locale che richiede la modalità sviluppatore o qualsiasi impostazione persistente della modalità sviluppatore attualmente abilitata sul dispositivo (e non è un bug della modalità sviluppatore stessa). | Non superiore a Bassa |
| Se nessun dominio SELinux può eseguire l'operazione in base a SEPolicy fornita da Google | Impatto sulla sicurezza trascurabile |
Locale, prossimale e remoto
Un vettore d'attacco remoto indica che il bug può essere sfruttato senza installare un'app o senza accesso fisico a un dispositivo. Ciò include bug che possono essere attivati navigando in una pagina web, leggendo un'email, ricevendo un messaggio SMS o connettendosi a una rete ostile.
I vettori di attacco prossimali sono considerati remoti. Sono inclusi bug che possono essere sfruttati solo da un malintenzionato che si trova fisicamente vicino al dispositivo di destinazione, ad esempio un bug che richiede l'invio di pacchetti Wi-Fi o Bluetooth non validi. Consideriamo gli attacchi basati su banda ultralarga (UWB) e NFC come prossimali e quindi remoti.
Gli attacchi locali richiedono che l'aggressore abbia accesso precedente alla vittima. In un esempio ipotetico solo software, questo potrebbe avvenire tramite un'app dannosa installata dalla vittima o un'app istantanea che ha acconsentito a eseguire.
I dispositivi accoppiati correttamente (come i dispositivi complementari Bluetooth) sono considerati locali. Distinguiamo tra un dispositivo accoppiato e un dispositivo che partecipa a un flusso di accoppiamento.
- I bug che riducono la capacità dell'utente di identificare l'altro dispositivo con cui viene eseguito l'accoppiamento (ad es. autenticazione) sono considerati prossimali e quindi remoti.
- I bug che si verificano durante il flusso di accoppiamento, ma prima che sia stato stabilito il consenso dell'utente (ovvero l'autorizzazione), sono considerati prossimali e quindi remoti.
- I bug che si verificano dopo che è stato stabilito il consenso dell'utente sono considerati locali, anche se l'accoppiamento alla fine non riesce.
I vettori di attacco fisico sono considerati locali. Sono inclusi bug che possono essere sfruttati solo da un malintenzionato che ha accesso fisico al dispositivo, ad esempio un bug in una schermata di blocco o uno che richiede il collegamento di un cavo USB. Poiché è comune che i dispositivi vengano sbloccati mentre sono collegati alla porta USB, gli attacchi che richiedono una connessione USB hanno la stessa gravità indipendentemente dal fatto che il dispositivo debba essere sbloccato o meno.
Sicurezza della rete
Android presuppone che tutte le reti siano ostili e possano iniettare attacchi o spiare il traffico. Sebbene la sicurezza a livello di collegamento (ad esempio la crittografia Wi-Fi) protegga la comunicazione tra un dispositivo e il punto di accesso a cui è connesso, non fa nulla per proteggere i collegamenti rimanenti nella catena tra il dispositivo e i server con cui comunica.
Al contrario, HTTPS in genere protegge l'intera comunicazione end-to-end, crittografando i dati all'origine, quindi decrittografandoli e verificandoli solo una volta raggiunta la destinazione finale. Per questo motivo, le vulnerabilità che compromettono la sicurezza della rete a livello di collegamento sono classificate come meno gravi rispetto alle vulnerabilità in HTTPS/TLS: la crittografia Wi-Fi da sola non è sufficiente per la maggior parte delle comunicazioni su internet.
Autenticazione biometrica
L'autenticazione biometrica è un campo difficile e anche i sistemi migliori possono essere ingannati da una corrispondenza quasi perfetta (vedi Blog per sviluppatori Android: miglioramenti della schermata di blocco e dell'autenticazione in Android 11). Queste valutazioni della gravità distinguono due classi di attacchi e hanno lo scopo di riflettere il rischio effettivo per l'utente finale.
La prima classe di attacchi consente di bypassare l'autenticazione biometrica in modo generalizzabile, senza dati biometrici di alta qualità del proprietario. Se, ad esempio, un malintenzionato può appoggiare un pezzo di gomma su un sensore di impronte digitali e questo concede l'accesso al dispositivo in base ai residui rimasti sul sensore, si tratta di un attacco semplice che potrebbe essere eseguito su qualsiasi dispositivo vulnerabile. Non richiede alcuna conoscenza del proprietario del dispositivo. Poiché è generalizzabile e potrebbe interessare un numero maggiore di utenti, questo attacco riceve la classificazione di gravità completa (ad esempio, Alta, per un bypass della schermata di blocco).
L'altra classe di attacchi in genere coinvolge uno strumento di attacco di presentazione (spoofing) basato sul proprietario del dispositivo. A volte queste informazioni biometriche sono relativamente facili da ottenere (ad esempio, se l'immagine del profilo di qualcuno sui social media è sufficiente per ingannare l'autenticazione biometrica, un bypass biometrico riceverà la valutazione di gravità completa). Tuttavia, se un malintenzionato dovesse acquisire dati biometrici direttamente dal proprietario del dispositivo (ad esempio, una scansione a infrarossi del volto), si tratta di un ostacolo sufficientemente significativo da limitare il numero di persone interessate dall'attacco, quindi è presente un modificatore -1.
SYSTEM_ALERT_WINDOW e tapjacking
Per informazioni sulle nostre norme relative a SYSTEM_ALERT_WINDOW e tapjacking,
consulta la sezione "Vulnerabilità di tapjacking/sovrapposizione SYSTEM_ALERT_WINDOW su una schermata non critica per la sicurezza" della pagina
Bugs with no security impact
di BugHunter University.
Sicurezza multiutente in Android Automotive OS
Android Automotive OS adotta un modello di sicurezza multiutente diverso dagli altri fattori di forma. Ogni utente Android deve essere utilizzato da una persona fisica diversa. Ad esempio, un utente ospite temporaneo può essere assegnato a un amico che prende in prestito il veicolo dal proprietario dell'auto. Per soddisfare casi d'uso come questo, gli utenti hanno accesso per impostazione predefinita ai componenti necessari per utilizzare il veicolo, come le impostazioni di rete Wi-Fi e cellulare.
Componente interessato
Il team di sviluppo responsabile della correzione del bug dipende dal componente in cui si trova il bug. Potrebbe trattarsi di un componente principale della piattaforma Android, di un driver del kernel fornito da un produttore di apparecchiature originali (OEM) o di una delle app precaricate sui dispositivi Pixel.
I bug nel codice AOSP vengono corretti dal team tecnico di Android nei nostri repository interni.
Il componente è anche un fattore che determina la modalità di ricezione degli aggiornamenti da parte degli utenti. Un bug nel framework o nel kernel richiede un aggiornamento firmware OTA (over-the-air) che ogni OEM deve eseguire. Un bug in un'app o in una libreria pubblicata su Google Play (ad esempio Gmail, Google Play Services o WebView) può essere inviato agli utenti Android come aggiornamento da Google Play.
Notificare ai partner
Quando una vulnerabilità della sicurezza in AOSP viene corretta in un Bollettino sulla sicurezza di Android, comunicheremo ai partner Android i dettagli del problema e forniremo le patch. L'elenco delle versioni supportate per il backport cambia a ogni nuova release di Android. Contatta il produttore del dispositivo per l'elenco dei dispositivi supportati.
Rilasciare il codice in AOSP
Se il bug di sicurezza si trova in un componente AOSP, la correzione viene inviata ad AOSP dopo che l'OTA è rilasciata agli utenti.
Ricevere aggiornamenti di Android
Gli aggiornamenti del sistema Android vengono generalmente distribuiti ai dispositivi tramite pacchetti di aggiornamento OTA. Questi aggiornamenti potrebbero provenire dall'OEM che ha prodotto il dispositivo o dall'operatore che fornisce il servizio al dispositivo. Gli aggiornamenti dei dispositivi Google Pixel provengono dal team Google Pixel dopo aver superato una procedura di test di accettazione tecnica (TA) dell'operatore. Google pubblica anche immagini del produttore per Pixel che possono essere caricate lateralmente sui dispositivi.
Aggiornare i servizi Google
Oltre a fornire patch per i bug di sicurezza, il team di sicurezza di Android esamina i bug di sicurezza per determinare se esistono altri modi per proteggere gli utenti. Ad esempio, Google Play esegue la scansione di tutte le app e rimuove quelle che tentano di sfruttare un bug di sicurezza. Per le app installate da fonti esterne a Google Play, i dispositivi con Google Play Services potrebbero utilizzare anche la funzionalità Verifica app per avvisare gli utenti in merito alle app potenzialmente dannose.
Altre risorse
Informazioni per gli sviluppatori di app per Android: https://developer.android.com
Le informazioni sulla sicurezza sono disponibili nei siti Android Open Source e per sviluppatori. Buoni punti di partenza:
Report
A volte il team per la sicurezza di Android pubblica report o white paper. Per ulteriori dettagli, vedi Report sulla sicurezza.