Miglioramenti della sicurezza

Android migliora continuamente le sue capacità e offerte di sicurezza. Visualizza gli elenchi dei miglioramenti per versione nella barra di navigazione a sinistra.

Androide 14

Ogni versione di Android include decine di miglioramenti alla sicurezza per proteggere gli utenti. Ecco alcuni dei principali miglioramenti della sicurezza disponibili in Android 14:

  • AddressSanitizer assistito da hardware (HWASan), introdotto in Android 10, è uno strumento di rilevamento degli errori di memoria simile a AddressSanitizer . Android 14 apporta miglioramenti significativi a HWASan. Scopri come aiuta a impedire che i bug arrivino nelle versioni Android, HWAddressSanitizer
  • In Android 14, a partire dalle app che condividono dati sulla posizione con terze parti, la finestra di dialogo delle autorizzazioni di runtime del sistema ora include una sezione cliccabile che evidenzia le pratiche di condivisione dei dati dell'app, comprese informazioni sul motivo per cui un'app potrebbe decidere di condividere dati con terze parti .
  • Android 12 ha introdotto un'opzione per disabilitare il supporto 2G a livello di modem, che protegge gli utenti dal rischio per la sicurezza intrinseco derivante dal modello di sicurezza obsoleto del 2G. Riconoscendo quanto potrebbe essere fondamentale la disattivazione del 2G per i clienti aziendali, Android 14 abilita questa funzionalità di sicurezza in Android Enterprise, introducendo il supporto per gli amministratori IT per limitare la capacità di un dispositivo gestito di effettuare il downgrade alla connettività 2G .
  • Aggiunto supporto per rifiutare connessioni cellulari con cifratura nulla, garantendo che il traffico vocale e SMS a commutazione di circuito sia sempre crittografato e protetto dall'intercettazione passiva via etere. Ulteriori informazioni sul programma di Android per rafforzare la connettività cellulare .
  • Aggiunto il supporto per più IMEI
  • A partire da Android 14, AES-HCTR2 è la modalità preferita di crittografia dei nomi di file per i dispositivi con istruzioni di crittografia accelerata.
  • Connettività cellulare
  • Documentazione aggiunta per il Centro sicurezza Android
  • Se la tua app è destinata ad Android 14 e utilizza il caricamento dinamico del codice (DCL), tutti i file caricati dinamicamente devono essere contrassegnati come di sola lettura. Altrimenti il ​​sistema lancia un'eccezione. Consigliamo alle app di evitare il caricamento dinamico del codice quando possibile, poiché ciò aumenta notevolmente il rischio che un'app possa essere compromessa dall'iniezione di codice o dalla manomissione del codice.

Consulta le nostre note di rilascio AOSP complete e l' elenco delle funzionalità e delle modifiche per sviluppatori Android.

Androide 13

Ogni versione di Android include decine di miglioramenti alla sicurezza per proteggere gli utenti. Ecco alcuni dei principali miglioramenti della sicurezza disponibili in Android 13:

  • Android 13 aggiunge il supporto per presentazioni multi-documento. Questa nuova interfaccia della sessione di presentazione consente a un'applicazione di eseguire una presentazione multi-documento, cosa che non è possibile con l'API esistente. Per ulteriori informazioni, fare riferimento a Credenziali di identità
  • In Android 13, gli intenti originati da app esterne vengono consegnati a un componente esportato se e solo se gli intenti corrispondono agli elementi di filtro intenti dichiarati.
  • Open Mobile API (OMAPI) è un'API standard utilizzata per comunicare con Secure Element di un dispositivo. Prima di Android 13, solo le applicazioni e i moduli framework avevano accesso a questa interfaccia. Convertendolo in un'interfaccia stabile del fornitore, i moduli HAL sono anche in grado di comunicare con gli elementi sicuri tramite il servizio OMAPI. Per ulteriori informazioni, consulta Interfaccia stabile del fornitore OMAPI .
  • A partire da Android 13-QPR, gli UID condivisi sono deprecati. Gli utenti di Android 13 o versioni successive devono inserire la riga "android:sharedUserMaxSdkVersion="32"` nel manifest. Questa voce impedisce ai nuovi utenti di ottenere un UID condiviso. Per ulteriori informazioni sugli UID, vedere Firma dell'applicazione .
  • Android 13 ha aggiunto il supporto delle primitive crittografiche simmetriche Keystore come AES (Advanced Encryption Standard), HMAC (Keyed-Hash Message Authentication Code) e algoritmi crittografici asimmetrici (inclusi Elliptic Curve, RSA2048, RSA4096 e Curve 25519)
  • Android 13 (livello API 33) e versioni successive supportano un'autorizzazione di runtime per l'invio di notifiche non esenti da un'app . Ciò offre agli utenti il ​​controllo su quali notifiche di autorizzazione visualizzare.
  • Aggiunta richiesta di utilizzo per le app che richiedono l'accesso a tutti i registri del dispositivo , offrendo agli utenti la possibilità di consentire o negare l'accesso.
  • ha introdotto Android Virtualization Framework (AVF) , che riunisce diversi hypervisor in un unico framework con API standardizzate. Fornisce ambienti di esecuzione sicuri e privati ​​per l'esecuzione di carichi di lavoro isolati dall'hypervisor.
  • Introdotto lo schema di firma APK v3.1 Tutte le nuove rotazioni di chiave che utilizzano apksigner utilizzeranno lo schema di firma v3.1 per impostazione predefinita per indirizzare la rotazione per Android 13 e versioni successive.

Consulta le nostre note di rilascio AOSP complete e l' elenco delle funzionalità e delle modifiche per sviluppatori Android.

Androide 12

Ogni versione di Android include decine di miglioramenti alla sicurezza per proteggere gli utenti. Ecco alcuni dei principali miglioramenti della sicurezza disponibili in Android 12:

  • Android 12 introduce l' API BiometricManager.Strings , che fornisce stringhe localizzate per le app che utilizzano BiometricPrompt per l'autenticazione. Queste stringhe sono destinate a riconoscere il dispositivo e a fornire maggiore specificità sui tipi di autenticazione che possono essere utilizzati. Android 12 include anche il supporto per i sensori di impronte digitali sotto il display
  • Aggiunto supporto per sensori di impronte digitali sotto il display
  • Introduzione del Fingerprint Android Interface Definition Language (AIDL)
  • Supporto per il nuovo Face AIDL
  • Introduzione di Rust come linguaggio per lo sviluppo di piattaforme
  • Aggiunta l'opzione per consentire agli utenti di concedere l'accesso solo alla loro posizione approssimativa
  • Aggiunti indicatori di privacy sulla barra di stato quando un'app utilizza la fotocamera o il microfono
  • Private Compute Core (PCC) di Android
  • Aggiunta un'opzione per disabilitare il supporto 2G

Androide 11

Ogni versione di Android include dozzine di miglioramenti della sicurezza per proteggere gli utenti. Per un elenco di alcuni dei principali miglioramenti della sicurezza disponibili in Android 11, consulta le Note sulla versione di Android .

Androide 10

Ogni versione di Android include decine di miglioramenti alla sicurezza per proteggere gli utenti. Android 10 include numerosi miglioramenti in termini di sicurezza e privacy. Consulta le note sulla versione di Android 10 per un elenco completo delle modifiche in Android 10.

Sicurezza

Limiti disinfettante

Android 10 distribuisce BoundsSanitizer (BoundSan) in Bluetooth e codec. BoundSan utilizza il disinfettante per confini di UBSan. Questa mitigazione è abilitata a livello di modulo. Aiuta a mantenere sicuri i componenti critici di Android e non deve essere disabilitato. BoundSan è abilitato nei seguenti codec:

  • libFLAC
  • libavcdec
  • libavcenc
  • libhevcdec
  • libmpeg2
  • libopus
  • libvpx
  • libspeexresampler
  • libvorbisidec
  • libaac
  • libxaac

Memoria di sola esecuzione

Per impostazione predefinita, le sezioni di codice eseguibile per i file binari del sistema AArch64 sono contrassegnate come di sola esecuzione (non leggibili) come mitigazione rafforzata contro gli attacchi di riutilizzo del codice just-in-time. Il codice che mescola dati e codice insieme e il codice che ispeziona intenzionalmente queste sezioni (senza prima rimappare i segmenti di memoria come leggibili) non funziona più. Le app con un SDK di destinazione Android 10 (livello API 29 o successivo) subiscono conseguenze se l'app tenta di leggere sezioni di codice delle librerie di sistema abilitate alla memoria di sola esecuzione (XOM) in memoria senza prima contrassegnare la sezione come leggibile.

Accesso esteso

Gli agenti di trust, il meccanismo sottostante utilizzato dai meccanismi di autenticazione terziaria come Smart Lock, possono estendere lo sblocco solo in Android 10. Gli agenti di trust non possono più sbloccare un dispositivo bloccato e possono mantenerlo sbloccato solo per un massimo di quattro ore.

Autenticazione facciale

L'autenticazione facciale consente agli utenti di sbloccare il proprio dispositivo semplicemente guardando la parte anteriore del dispositivo. Android 10 aggiunge il supporto per un nuovo stack di autenticazione facciale in grado di elaborare in modo sicuro i fotogrammi della fotocamera, preservando sicurezza e privacy durante l'autenticazione facciale sull'hardware supportato. Android 10 fornisce inoltre un modo semplice per implementare implementazioni conformi alla sicurezza per consentire l'integrazione di app per transazioni come servizi bancari online o altri servizi.

Sanificazione dell'overflow intero

Android 10 abilita Integer Overflow Sanitization (IntSan) nei codec software. Assicurati che le prestazioni di riproduzione siano accettabili per tutti i codec non supportati dall'hardware del dispositivo. IntSan è abilitato nei seguenti codec:

  • libFLAC
  • libavcdec
  • libavcenc
  • libhevcdec
  • libmpeg2
  • libopus
  • libvpx
  • libspeexresampler
  • libvorbisidec

Componenti del sistema modulare

Android 10 modularizza alcuni componenti del sistema Android e consente loro di essere aggiornati al di fuori del normale ciclo di rilascio di Android. Alcuni moduli includono:

OEMCrypto

Android 10 utilizza l'API OEMCrypto versione 15.

Scudo

Scudo è un allocatore di memoria dinamico in modalità utente progettato per essere più resistente alle vulnerabilità legate all'heap. Fornisce le primitive di allocazione e deallocazione C standard, nonché le primitive C++.

ShadowCallStack

ShadowCallStack (SCS) è una modalità di strumentazione LLVM che protegge dalle sovrascritture dell'indirizzo di ritorno (come gli overflow del buffer dello stack) salvando l'indirizzo di ritorno di una funzione in un'istanza ShadowCallStack allocata separatamente nel prologo della funzione delle funzioni nonleaf e caricando l'indirizzo di ritorno dall'istanza ShadowCallStack in l'epilogo della funzione.

WPA3 e Wi-Fi potenziato aperto

Android 10 aggiunge il supporto per gli standard di sicurezza Wi-Fi Protected Access 3 (WPA3) e Wi-Fi Enhanced Open per fornire una migliore privacy e robustezza contro gli attacchi noti.

Privacy

Accesso all'app quando si sceglie come target Android 9 o versioni precedenti

Se la tua app funziona su Android 10 o versioni successive ma è destinata ad Android 9 (livello API 28) o versioni precedenti, la piattaforma applica il seguente comportamento:

  • Se la tua app dichiara un elemento <uses-permission> per ACCESS_FINE_LOCATION o ACCESS_COARSE_LOCATION , il sistema aggiunge automaticamente un elemento <uses-permission> per ACCESS_BACKGROUND_LOCATION durante l'installazione.
  • Se la tua app richiede ACCESS_FINE_LOCATION o ACCESS_COARSE_LOCATION , il sistema aggiunge automaticamente ACCESS_BACKGROUND_LOCATION alla richiesta.

Restrizioni sulle attività in background

A partire da Android 10, il sistema pone delle restrizioni sull'avvio delle attività in background . Questa modifica del comportamento aiuta a ridurre al minimo le interruzioni per l'utente e mantiene l'utente in maggiore controllo su ciò che viene visualizzato sullo schermo. Finché la tua app avvia attività come risultato diretto dell'interazione dell'utente, molto probabilmente non è interessata da queste restrizioni.
Per ulteriori informazioni sull'alternativa consigliata all'avvio delle attività in background, consulta la guida su come avvisare gli utenti di eventi urgenti nella tua app.

Metadati della fotocamera

Android 10 modifica l'ampiezza delle informazioni restituite dal metodo getCameraCharacteristics() per impostazione predefinita. In particolare, la tua app deve disporre dell'autorizzazione CAMERA per poter accedere ai metadati potenzialmente specifici del dispositivo inclusi nel valore restituito di questo metodo.
Per ulteriori informazioni su queste modifiche, consulta la sezione relativa ai campi della fotocamera che richiedono l'autorizzazione .

Dati degli appunti

A meno che la tua app non sia l' editor del metodo di input (IME) predefinito o sia l'app attualmente focalizzata, la tua app non può accedere ai dati degli appunti su Android 10 o versioni successive.

Posizione del dispositivo

Per supportare il controllo aggiuntivo che gli utenti hanno sull'accesso di un'app alle informazioni sulla posizione, Android 10 introduce l'autorizzazione ACCESS_BACKGROUND_LOCATION .
A differenza delle autorizzazioni ACCESS_FINE_LOCATION e ACCESS_COARSE_LOCATION , l'autorizzazione ACCESS_BACKGROUND_LOCATION influisce solo sull'accesso di un'app alla posizione quando viene eseguita in background. Si ritiene che un'app acceda alla posizione in background a meno che non sia soddisfatta una delle seguenti condizioni:

  • È visibile un'attività appartenente all'app.
  • L'app esegue un servizio in primo piano che ha dichiarato untipo di servizio in primo piano di location .
    Per dichiarare il tipo di servizio in primo piano per un servizio nella tua app, imposta targetSdkVersion o compileSdkVersion dell'app su 29 o superiore. Scopri di più su come i servizi in primo piano possono continuare le azioni avviate dall'utente che richiedono l'accesso alla posizione.

Archiviazione esterna

Per impostazione predefinita, alle app destinate ad Android 10 e versioni successive viene concesso l'accesso mirato all'archiviazione esterna o all'archiviazione con ambito . Tali app possono visualizzare i seguenti tipi di file all'interno di un dispositivo di archiviazione esterno senza dover richiedere autorizzazioni utente relative all'archiviazione:

Per ulteriori informazioni sull'archiviazione con ambito e su come condividere, accedere e modificare i file salvati su dispositivi di archiviazione esterni, consultare le guide su come gestire i file nell'archiviazione esterna e accedere e modificare i file multimediali .

Randomizzazione dell'indirizzo MAC

Sui dispositivi che eseguono Android 10 o versioni successive, il sistema trasmette indirizzi MAC casuali per impostazione predefinita.
Se la tua app gestisce un caso d'uso aziendale , la piattaforma fornisce API per diverse operazioni relative agli indirizzi MAC:

  • Ottieni indirizzo MAC casuale : le app del proprietario del dispositivo e le app del proprietario del profilo possono recuperare l'indirizzo MAC casuale assegnato a una rete specifica chiamando getRandomizedMacAddress() .
  • Ottieni l'indirizzo MAC effettivo di fabbrica: le app del proprietario del dispositivo possono recuperare l'indirizzo MAC hardware effettivo di un dispositivo chiamando getWifiMacAddress() . Questo metodo è utile per tenere traccia delle flotte di dispositivi.

Identificatori del dispositivo non ripristinabili

A partire da Android 10, le app devono disporre dell'autorizzazione privilegiata READ_PRIVILEGED_PHONE_STATE per poter accedere agli identificatori non ripristinabili del dispositivo, che includono sia l'IMEI che il numero di serie.

Se la tua app non dispone dell'autorizzazione e provi comunque a chiedere informazioni sugli identificatori non ripristinabili, la risposta della piattaforma varia in base alla versione dell'SDK di destinazione:

  • Se la tua app è destinata ad Android 10 o versioni successive, si verifica un'eccezione SecurityException .
  • Se la tua app è destinata ad Android 9 (livello API 28) o versioni precedenti, il metodo restituisce dati null o segnaposto se l'app dispone dell'autorizzazione READ_PHONE_STATE . In caso contrario, si verifica un'eccezione SecurityException .

Riconoscimento dell'attività fisica

Android 10 introduce l'autorizzazione di runtime android.permission.ACTIVITY_RECOGNITION per le app che devono rilevare il conteggio dei passi dell'utente o classificare l'attività fisica dell'utente, come camminare, andare in bicicletta o spostarsi in un veicolo. Questo è progettato per offrire agli utenti visibilità su come vengono utilizzati i dati dei sensori del dispositivo nelle Impostazioni.
Alcune librerie all'interno dei servizi Google Play, come l' API Activity Recognition e l' API Google Fit , non forniscono risultati a meno che l'utente non abbia concesso alla tua app questa autorizzazione.
Gli unici sensori integrati nel dispositivo che richiedono la dichiarazione di questa autorizzazione sono i sensori contapassi e rilevatore passi .
Se la tua app è destinata ad Android 9 (livello API 28) o versioni precedenti, il sistema concede automaticamente l'autorizzazione android.permission.ACTIVITY_RECOGNITION alla tua app, secondo necessità, se l'app soddisfa ciascuna delle seguenti condizioni:

  • Il file manifest include l'autorizzazione com.google.android.gms.permission.ACTIVITY_RECOGNITION .
  • Il file manifest non include l'autorizzazione android.permission.ACTIVITY_RECOGNITION .

Se system-auto concede l'autorizzazione android.permission.ACTIVITY_RECOGNITION , la tua app manterrà l'autorizzazione dopo aver aggiornato l'app per scegliere come target Android 10. Tuttavia, l'utente può revocare questa autorizzazione in qualsiasi momento nelle impostazioni di sistema.

Restrizioni del filesystem /proc/net

Sui dispositivi che eseguono Android 10 o versioni successive, le app non possono accedere /proc/net , che include informazioni sullo stato della rete di un dispositivo. Le app che devono accedere a queste informazioni, ad esempio le VPN, devono utilizzare la classe NetworkStatsManager o ConnectivityManager .

Gruppi di autorizzazioni rimossi dall'interfaccia utente

A partire da Android 10, le app non possono verificare come sono raggruppate le autorizzazioni nell'interfaccia utente.

Rimozione dell'affinità dei contatti

A partire da Android 10, la piattaforma non tiene traccia delle informazioni sull'affinità dei contatti. Di conseguenza, se la tua app esegue una ricerca sui contatti dell'utente, i risultati non vengono ordinati in base alla frequenza di interazione.
La guida su ContactsProvider contiene un avviso che descrive i campi e i metodi specifici che sono obsoleti su tutti i dispositivi a partire da Android 10.

Accesso limitato ai contenuti dello schermo

Per proteggere i contenuti dello schermo degli utenti, Android 10 impedisce l'accesso silenzioso ai contenuti dello schermo del dispositivo modificando l'ambito delle autorizzazioni READ_FRAME_BUFFER , CAPTURE_VIDEO_OUTPUT e CAPTURE_SECURE_VIDEO_OUTPUT . A partire da Android 10, queste autorizzazioni riguardano solo l'accesso tramite firma .
Le app che devono accedere ai contenuti dello schermo del dispositivo dovrebbero utilizzare l'API MediaProjection , che visualizza una richiesta che chiede all'utente di fornire il consenso.

Numero di serie del dispositivo USB

Se la tua app è destinata ad Android 10 o versioni successive, non potrà leggere il numero di serie finché l'utente non avrà concesso all'app l'autorizzazione ad accedere al dispositivo o all'accessorio USB.
Per saperne di più su come lavorare con i dispositivi USB, consulta la guida su come configurare gli host USB .

Wifi

Le app destinate ad Android 10 o versioni successive non possono abilitare o disabilitare il Wi-Fi. Il metodo WifiManager.setWifiEnabled() restituisce sempre false .
Se devi chiedere agli utenti di abilitare e disabilitare il Wi-Fi, utilizza un pannello delle impostazioni .

Restrizioni all'accesso diretto alle reti Wi-Fi configurate

Per proteggere la privacy degli utenti, la configurazione manuale dell'elenco delle reti Wi-Fi è limitata alle app di sistema e ai controller delle policy dei dispositivi (DPC) . Un determinato DPC può essere il proprietario del dispositivo o il proprietario del profilo.
Se la tua app è destinata ad Android 10 o versioni successive e non è un'app di sistema o un DPC, i seguenti metodi non restituiscono dati utili:

Androide 9

Ogni versione di Android include dozzine di miglioramenti della sicurezza per proteggere gli utenti. Per un elenco di alcuni dei principali miglioramenti della sicurezza disponibili in Android 9, consulta le Note sulla versione di Android .

Androide 8

Ogni versione di Android include dozzine di miglioramenti della sicurezza per proteggere gli utenti. Ecco alcuni dei principali miglioramenti della sicurezza disponibili in Android 8.0:

  • Crittografia . Aggiunto supporto per sfrattare la chiave nel profilo di lavoro.
  • Stivale verificato . Aggiunto avvio verificato Android (AVB). Base di codice di avvio verificato che supporta la protezione dal rollback per l'uso nei caricatori di avvio aggiunti ad AOSP. Consiglia il supporto del bootloader per la protezione dal rollback per HLOS. I caricatori di avvio consigliati possono essere sbloccati solo dall'utente che interagisce fisicamente con il dispositivo.
  • Blocca schermo . Aggiunto supporto per l'utilizzo di hardware a prova di manomissione per verificare le credenziali della schermata di blocco.
  • KeyStore . Attestazione chiave obbligatoria per tutti i dispositivi forniti con Android 8.0+. Aggiunto supporto per l' attestazione ID per migliorare la registrazione Zero Touch.
  • Sandbox . In un sandbox più stretto molti componenti utilizzando l'interfaccia standard di Project Treble tra il framework e i componenti specifici del dispositivo. Filtraggio seccomp applicato a tutte le app non attendibili per ridurre la superficie di attacco del kernel. WebView viene ora eseguito in un processo isolato con accesso molto limitato al resto del sistema.
  • Indurimento del kernel . Implementazione hardened usercopy , emulazione PAN, sola lettura dopo init e KASLR.
  • Rafforzamento dello spazio utente . CFI implementato per lo stack di supporti. Gli overlay delle app non possono più coprire le finestre critiche per il sistema e gli utenti hanno un modo per eliminarle.
  • Aggiornamento del sistema operativo in streaming . Aggiornamenti abilitati sui dispositivi che hanno poco spazio su disco.
  • Installa app sconosciute . Gli utenti devono concedere l'autorizzazione per installare app da un'origine che non è un app store proprietario.
  • Privacy . L'ID Android (SSAID) ha un valore diverso per ogni app e ogni utente sul dispositivo. Per le app del browser Web, l'ID client Widevine restituisce un valore diverso per ciascun nome del pacchetto dell'app e origine Web. net.hostname ora è vuoto e il client DHCP non invia più un nome host. android.os.Build.SERIAL è stato sostituito con l' API Build.SERIAL che è protetta da un'autorizzazione controllata dall'utente. Migliorata la randomizzazione degli indirizzi MAC in alcuni chipset.

Androide7

Ogni versione di Android include dozzine di miglioramenti della sicurezza per proteggere gli utenti. Ecco alcuni dei principali miglioramenti della sicurezza disponibili in Android 7.0:

  • Crittografia basata su file . La crittografia a livello di file, invece di crittografare l'intera area di archiviazione come una singola unità, isola e protegge meglio i singoli utenti e profili (come quelli personali e di lavoro) su un dispositivo.
  • Avvio diretto . Abilitato dalla crittografia basata su file, Direct Boot consente l'esecuzione di alcune app come la sveglia e le funzioni di accessibilità quando il dispositivo è acceso ma non sbloccato.
  • Stivale verificato . L'avvio verificato è ora rigorosamente applicato per impedire l'avvio dei dispositivi compromessi; supporta la correzione degli errori per migliorare l'affidabilità contro il danneggiamento dei dati non dannoso.
  • SELinux . La configurazione SELinux aggiornata e la maggiore copertura seccomp bloccano ulteriormente la sandbox dell'applicazione e riducono la superficie di attacco.
  • Randomizzazione dell'ordine di caricamento della libreria e ASLR migliorato . La maggiore casualità rende meno affidabili alcuni attacchi di riutilizzo del codice.
  • Indurimento del kernel . Aggiunta una protezione aggiuntiva della memoria per i kernel più recenti contrassegnando porzioni di memoria del kernel come di sola lettura, limitando l'accesso del kernel agli indirizzi dello spazio utente e riducendo ulteriormente la superficie di attacco esistente.
  • Schema di firma APK v2 . Introdotto uno schema di firma dell'intero file che migliora la velocità di verifica e rafforza le garanzie di integrità.
  • Archivio CA affidabile . Per consentire alle app di controllare più facilmente l'accesso al proprio traffico di rete protetto, le autorità di certificazione installate dagli utenti e quelle installate tramite le API di amministrazione del dispositivo non sono più considerate attendibili per impostazione predefinita per le app destinate al livello API 24+. Inoltre, tutti i nuovi dispositivi Android devono essere spediti con lo stesso archivio CA affidabile.
  • Configurazione sicurezza di rete . Configura la sicurezza di rete e TLS tramite un file di configurazione dichiarativo.

Androide 6

Ogni versione di Android include dozzine di miglioramenti della sicurezza per proteggere gli utenti. Ecco alcuni dei principali miglioramenti della sicurezza disponibili in Android 6.0:

  • Autorizzazioni di runtime . Le applicazioni richiedono autorizzazioni in fase di esecuzione anziché essere concesse al momento dell'installazione dell'app. Gli utenti possono attivare e disattivare le autorizzazioni sia per le applicazioni M che per quelle pre-M.
  • Stivale verificato . Prima dell'esecuzione viene eseguita una serie di controlli crittografici del software di sistema per garantire che il telefono sia integro dal bootloader fino al sistema operativo.
  • Sicurezza isolata dall'hardware . Nuovo Hardware Abstraction Layer (HAL) utilizzato da Fingerprint API, Lockscreen, Device Encryption e Client Certificates per proteggere le chiavi dalla compromissione del kernel e/o da attacchi fisici locali
  • Impronte digitali . I dispositivi ora possono essere sbloccati con un semplice tocco. Gli sviluppatori possono anche sfruttare le nuove API per utilizzare le impronte digitali per bloccare e sbloccare le chiavi di crittografia.
  • Adozione scheda SD . I supporti rimovibili possono essere adottati su un dispositivo ed espandere lo spazio di archiviazione disponibile per dati locali dell'app, foto, video, ecc., ma essere comunque protetti dalla crittografia a livello di blocco.
  • Traffico di testo in chiaro . Gli sviluppatori possono utilizzare un nuovo StrictMode per assicurarsi che la loro applicazione non utilizzi il testo in chiaro.
  • Rafforzamento del sistema . Rafforzamento del sistema tramite le politiche imposte da SELinux. Ciò offre un migliore isolamento tra gli utenti, il filtraggio IOCTL, riduce la minaccia dei servizi esposti, un ulteriore restringimento dei domini SELinux e un accesso /proc estremamente limitato.
  • Controllo dell'accesso USB: gli utenti devono confermare per consentire l'accesso USB a file, archiviazione o altre funzionalità sul telefono. L'impostazione predefinita ora è addebitata solo con l'accesso allo spazio di archiviazione che richiede l'approvazione esplicita dell'utente.

Androide 5

5.0

Ogni versione di Android include dozzine di miglioramenti della sicurezza per proteggere gli utenti. Ecco alcuni dei principali miglioramenti della sicurezza disponibili in Android 5.0:

  • Crittografato per impostazione predefinita. Sui dispositivi forniti con L out-of-the-box, la crittografia completa del disco è abilitata per impostazione predefinita per migliorare la protezione dei dati sui dispositivi smarriti o rubati. I dispositivi che si aggiornano a L possono essere crittografati in Impostazioni > Sicurezza .
  • Crittografia completa del disco migliorata. La password dell'utente è protetta dagli attacchi di forza bruta mediante scrypt e, ove disponibile, la chiave è associata al keystore hardware per prevenire attacchi off-device. Come sempre, il segreto di blocco dello schermo di Android e la chiave di crittografia del dispositivo non vengono inviati dal dispositivo o esposti ad alcuna applicazione.
  • Sandbox Android rinforzato con SELinux . Android ora richiede SELinux in modalità di applicazione per tutti i domini. SELinux è un sistema di controllo dell'accesso obbligatorio (MAC) nel kernel Linux utilizzato per aumentare il modello di sicurezza DAC (Discretional Access Control) esistente. Questo nuovo livello fornisce una protezione aggiuntiva contro potenziali vulnerabilità della sicurezza.
  • Serratura intelligente. Android ora include trustlet che offrono maggiore flessibilità per lo sblocco dei dispositivi. Ad esempio, i trustlet possono consentire lo sblocco automatico dei dispositivi quando sono vicini a un altro dispositivo affidabile (tramite NFC, Bluetooth) o vengono utilizzati da qualcuno con un volto fidato.
  • Modalità multiutente, profilo limitato e ospite per telefoni e tablet. Android ora fornisce più utenti sui telefoni e include una modalità ospite che può essere utilizzata per fornire un facile accesso temporaneo al tuo dispositivo senza concedere l'accesso ai tuoi dati e alle tue app.
  • Aggiornamenti a WebView senza OTA. WebView ora può essere aggiornato indipendentemente dal framework e senza OTA di sistema. Ciò consentirà una risposta più rapida a potenziali problemi di sicurezza in WebView.
  • Crittografia aggiornata per HTTPS e TLS/SSL. TLSv1.2 e TLSv1.1 sono ora abilitati, la segretezza in avanti è ora preferita, AES-GCM è ora abilitato e le suite di crittografia deboli (MD5, 3DES e suite di crittografia di esportazione) sono ora disabilitate. Per maggiori dettagli, vedere https://developer.android.com/reference/javax/net/ssl/SSLSocket.html .
  • supporto per linker non PIE rimosso. Android ora richiede che tutti gli eseguibili collegati dinamicamente supportino PIE (eseguibili indipendenti dalla posizione). Ciò migliora l'implementazione della randomizzazione del layout dello spazio degli indirizzi (ASLR) di Android.
  • FORTIFY_SOURCE miglioramenti. Le seguenti funzioni libc ora implementano le protezioni FORTIFY_SOURCE: stpcpy() , stpncpy() , read() , recvfrom() , FD_CLR() , FD_SET() e FD_ISSET() . Ciò fornisce protezione contro le vulnerabilità di danneggiamento della memoria che coinvolgono tali funzioni.
  • Correzioni di sicurezza. Android 5.0 include anche correzioni per vulnerabilità specifiche di Android. Le informazioni su queste vulnerabilità sono state fornite ai membri di Open Handset Alliance e le correzioni sono disponibili in Android Open Source Project. Per migliorare la sicurezza, anche alcuni dispositivi con versioni precedenti di Android potrebbero includere queste correzioni.

Android 4 e versioni precedenti

Ogni versione di Android include dozzine di miglioramenti della sicurezza per proteggere gli utenti. Di seguito sono riportati alcuni dei miglioramenti della sicurezza disponibili in Android 4.4:

  • Sandbox Android rinforzato con SELinux. Android ora utilizza SELinux in modalità di applicazione. SELinux è un sistema di controllo dell'accesso (MAC) obbligatorio nel kernel Linux utilizzato per aumentare il modello di sicurezza basato sul controllo dell'accesso discrezionale (DAC) esistente. Ciò fornisce una protezione aggiuntiva contro potenziali vulnerabilità della sicurezza.
  • VPN per utente. Sui dispositivi multiutente, le VPN vengono ora applicate per utente. Ciò può consentire a un utente di instradare tutto il traffico di rete attraverso una VPN senza influire sugli altri utenti sul dispositivo.
  • Supporto del provider ECDSA in AndroidKeyStore. Android dispone ora di un provider di keystore che consente l'utilizzo di algoritmi ECDSA e DSA.
  • Avvisi di monitoraggio del dispositivo. Android fornisce agli utenti un avviso se è stato aggiunto un certificato all'archivio certificati del dispositivo che potrebbe consentire il monitoraggio del traffico di rete crittografato.
  • FORTIFY_SOURCE. Android ora supporta FORTIFY_SOURCE livello 2 e tutto il codice viene compilato con queste protezioni. FORTIFY_SOURCE è stato migliorato per funzionare con clang.
  • Appuntamento del certificato. Android 4.4 rileva e previene l'uso di certificati Google fraudolenti utilizzati nelle comunicazioni SSL/TLS sicure.
  • Correzioni di sicurezza. Android 4.4 include anche correzioni per vulnerabilità specifiche di Android. Le informazioni su queste vulnerabilità sono state fornite ai membri di Open Handset Alliance e le correzioni sono disponibili in Android Open Source Project. Per migliorare la sicurezza, anche alcuni dispositivi con versioni precedenti di Android potrebbero includere queste correzioni.

Ogni versione di Android include decine di miglioramenti alla sicurezza per proteggere gli utenti. Di seguito sono riportati alcuni dei miglioramenti della sicurezza disponibili in Android 4.3:

  • Sandbox Android rinforzato con SELinux. Questa versione rafforza la sandbox Android utilizzando il sistema di controllo degli accessi obbligatorio (MAC) SELinux nel kernel Linux. Il rafforzamento di SELinux è invisibile agli utenti e agli sviluppatori e aggiunge robustezza al modello di sicurezza Android esistente mantenendo la compatibilità con le applicazioni esistenti. Per garantire la compatibilità continua, questa versione consente l'uso di SELinux in modalità permissiva. Questa modalità registra eventuali violazioni delle policy, ma non interromperà le applicazioni né influenzerà il comportamento del sistema.
  • Nessun programma setuid/setgid. Aggiunto il supporto per le funzionalità del filesystem ai file di sistema Android e rimossi tutti i programmi setuid/setguid. Ciò riduce la superficie di attacco root e la probabilità di potenziali vulnerabilità della sicurezza.
  • Autenticazione ADB. A partire da Android 4.2.2, le connessioni ad ADB vengono autenticate con una coppia di chiavi RSA. Ciò impedisce l'uso non autorizzato di ADB laddove l'aggressore ha accesso fisico a un dispositivo.
  • Limita Setuid dalle app Android. La partizione /system è ora montata su nosuid per i processi generati dallo zigote, impedendo alle applicazioni Android di eseguire programmi setuid. Ciò riduce la superficie di attacco root e la probabilità di potenziali vulnerabilità della sicurezza.
  • Delimitazione delle capacità. Android zygote e ADB ora utilizzano prctl(PR_CAPBSET_DROP) per eliminare le funzionalità non necessarie prima di eseguire le applicazioni. Ciò impedisce alle applicazioni Android e alle applicazioni avviate dalla shell di acquisire funzionalità privilegiate.
  • Fornitore AndroidKeyStore. Android ora dispone di un provider di archivi di chiavi che consente alle applicazioni di creare chiavi di utilizzo esclusivo. Ciò fornisce alle applicazioni un'API per creare o archiviare chiavi private che non possono essere utilizzate da altre applicazioni.
  • KeyChain è l'algoritmo BoundKey. L'API Portachiavi ora fornisce un metodo (isBoundKeyType) che consente alle applicazioni di confermare che le chiavi a livello di sistema sono associate a una radice hardware di attendibilità per il dispositivo. Ciò fornisce un luogo in cui creare o archiviare chiavi private che non possono essere esportate dal dispositivo, anche in caso di compromissione del root.
  • NO_NEW_PRIVS. Android zygote ora utilizza prctl(PR_SET_NO_NEW_PRIVS) per bloccare l'aggiunta di nuovi privilegi prima dell'esecuzione del codice dell'applicazione. Ciò impedisce alle applicazioni Android di eseguire operazioni che possono elevare i privilegi tramite execve. (Ciò richiede il kernel Linux versione 3.5 o successiva).
  • Miglioramenti FORTIFY_SOURCE. Abilitato FORTIFY_SOURCE su Android x86 e MIPS e chiamate strchr(), strrchr(), strlen() e umask() fortificate. Ciò può rilevare potenziali vulnerabilità di danneggiamento della memoria o costanti di stringa non terminate.
  • Tutele per il trasferimento. Abilitate le rilocazioni di sola lettura (relro) per gli eseguibili collegati staticamente e rimosse tutte le rilocazioni di testo nel codice Android. Ciò fornisce una difesa approfondita contro potenziali vulnerabilità di corruzione della memoria.
  • Migliorato EntropyMixer. EntropyMixer ora scrive entropia allo spegnimento/riavvio, oltre al missaggio periodico. Ciò consente di conservare tutta l'entropia generata mentre i dispositivi sono accesi ed è particolarmente utile per i dispositivi che vengono riavviati immediatamente dopo il provisioning.
  • Correzioni di sicurezza. Android 4.3 include anche correzioni per vulnerabilità specifiche di Android. Le informazioni su queste vulnerabilità sono state fornite ai membri della Open Handset Alliance e le correzioni sono disponibili in Android Open Source Project. Per migliorare la sicurezza, anche alcuni dispositivi con versioni precedenti di Android potrebbero includere queste correzioni.

Android fornisce un modello di sicurezza a più livelli descritto nella Panoramica sulla sicurezza di Android . Ogni aggiornamento ad Android include dozzine di miglioramenti della sicurezza per proteggere gli utenti. Di seguito sono riportati alcuni dei miglioramenti della sicurezza introdotti in Android 4.2:

  • Verifica dell'applicazione : gli utenti possono scegliere di abilitare "Verifica app" e far esaminare le applicazioni da un verificatore di applicazioni, prima dell'installazione. La verifica dell'app può avvisare l'utente se tenta di installare un'app che potrebbe essere dannosa; se un'applicazione è particolarmente dannosa, può bloccare l'installazione.
  • Maggiore controllo degli SMS premium : Android fornirà una notifica se un'applicazione tenta di inviare SMS a un codice funzione che utilizza servizi premium che potrebbero causare costi aggiuntivi. L'utente può scegliere se consentire all'applicazione di inviare il messaggio o bloccarlo.
  • VPN sempre attiva : la VPN può essere configurata in modo che le applicazioni non abbiano accesso alla rete fino a quando non viene stabilita una connessione VPN. Ciò impedisce alle applicazioni di inviare dati su altre reti.
  • Blocco dei certificati : le librerie di base di Android ora supportano il blocco dei certificati . I domini aggiunti riceveranno un errore di convalida del certificato se il certificato non è collegato a una serie di certificati previsti. Ciò protegge da possibili compromissioni delle autorità di certificazione.
  • Visualizzazione migliorata delle autorizzazioni Android : le autorizzazioni sono state organizzate in gruppi più facilmente comprensibili dagli utenti. Durante la revisione delle autorizzazioni, l'utente può fare clic sull'autorizzazione per visualizzare informazioni più dettagliate sull'autorizzazione.
  • installd hardening - Il daemon installd non viene eseguito come utente root, riducendo la potenziale superficie di attacco per l'escalation dei privilegi di root.
  • init script hardening - gli script init ora applicano la semantica O_NOFOLLOW per prevenire attacchi relativi ai collegamenti simbolici.
  • FORTIFY_SOURCE - Android ora implementa FORTIFY_SOURCE . Viene utilizzato dalle librerie di sistema e dalle applicazioni per prevenire il danneggiamento della memoria.
  • Configurazione predefinita di ContentProvider : le applicazioni che hanno come destinazione il livello API 17 avranno "export" impostato su "false" per impostazione predefinita per ogni provider di contenuti , riducendo la superficie di attacco predefinita per le applicazioni.
  • Crittografia - Modificate le implementazioni predefinite di SecureRandom e Cipher.RSA per utilizzare OpenSSL. Aggiunto supporto per socket SSL per TLSv1.1 e TLSv1.2 utilizzando OpenSSL 1.0.1
  • Correzioni di sicurezza - Le librerie open source aggiornate con correzioni di sicurezza includono WebKit, libpng, OpenSSL e LibXML. Android 4.2 include anche correzioni per vulnerabilità specifiche di Android. Le informazioni su queste vulnerabilità sono state fornite ai membri di Open Handset Alliance e le correzioni sono disponibili in Android Open Source Project. Per migliorare la sicurezza, anche alcuni dispositivi con versioni precedenti di Android potrebbero includere queste correzioni.

Android fornisce un modello di sicurezza a più livelli descritto nella Panoramica sulla sicurezza di Android . Ogni aggiornamento ad Android include dozzine di miglioramenti della sicurezza per proteggere gli utenti. Di seguito sono riportati alcuni dei miglioramenti della sicurezza introdotti nelle versioni di Android da 1.5 a 4.1:

Android 1.5
  • ProPolice per prevenire il sovraccarico del buffer dello stack (-fstack-protector)
  • safe_iop per ridurre gli overflow di numeri interi
  • Estensioni a OpenBSD dlmalloc per prevenire le vulnerabilità double free() e per prevenire gli attacchi di consolidamento dei blocchi. Gli attacchi di consolidamento dei blocchi sono un modo comune per sfruttare la corruzione dell'heap.
  • Calloc OpenBSD per prevenire overflow di interi durante l'allocazione della memoria
Android 2.3
  • Formatta le protezioni dalle vulnerabilità delle stringhe (-Wformat-security -Werror=format-security)
  • Basato su hardware No eXecute (NX) per impedire l'esecuzione di codice nello stack e nell'heap
  • Linux mmap_min_addr per mitigare l'escalation dei privilegi di dereference del puntatore nullo (ulteriormente migliorato in Android 4.1)
Android 4.0
Address Space Layout Randomization (ASLR) per randomizzare le posizioni chiave nella memoria
Android 4.1
  • Supporto PIE (Position Independent Executable).
  • Riposizionamento di sola lettura/associazione immediata (-Wl,-z,relro -Wl,-z,now)
  • dmesg_restrict abilitato (evita la perdita di indirizzi del kernel)
  • kptr_restrict abilitato (evita la perdita di indirizzi del kernel)