Miglioramenti alla sicurezza

Android migliora costantemente le proprie funzionalità e offerte di sicurezza. Consulta gli elenchi dei miglioramenti per release nel riquadro di navigazione a sinistra.

Android 14

Ogni release di Android include dozzine di miglioramenti alla sicurezza per proteggere gli utenti. Di seguito sono riportati alcuni dei principali miglioramenti della sicurezza disponibili in Android 14:

  • AddressSanitizer (HWASan) con l'aiuto dell'hardware, introdotto in Android 10, è uno strumento di rilevamento degli errori di memoria simile a AddressSanitizer. Android 14 offre notevoli miglioramenti a HWASan. Scopri come contribuisce a evitare che i bug vengano inclusi nelle release di 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 selezionabile che mette in evidenza le pratiche di condivisione dei dati dell'app, incluse informazioni come il motivo per cui un'app potrebbe decidere di condividere dati con terze parti.
  • Android 12 ha introdotto un'opzione per disattivare il supporto 2G a livello di modem, che protegge gli utenti dal rischio di sicurezza intrinseco del modello di sicurezza obsoleto del 2G. Consapevole di quanto possa essere importante 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 possibilità di un dispositivo gestito di eseguire il downgrade alla connettività 2G.
  • È stato aggiunto il supporto per rifiutare le connessioni cellulari con crittografia null, garantendo che il traffico voce e SMS con commutazione di circuito sia sempre criptato e protetto dall'intercettazione passiva over-the-air. Scopri di più sul programma di Android per rafforzare la connettività cellulare.
  • È stato aggiunto il supporto per più IMEI
  • Da Android 14, AES-HCTR2 è la modalità preferita per la crittografia dei nomi file per i dispositivi con istruzioni di crittografia accelerate.
  • Connettività cellulare
  • Documentazione aggiunta per il Centro per la sicurezza di Android
  • Se la tua app ha come target Android 14 e utilizza il caricamento di codice dinamico (DCL), tutti i file caricati dinamicamente devono essere contrassegnati come di sola lettura. In caso contrario, il sistema genera un'eccezione. Consigliamo alle app di evitare di caricare dinamicamente il codice, se possibile, in quanto ciò aumenta notevolmente il rischio che un'app possa essere compromessa da un'iniezione di codice o da una manomissione del codice.

Consulta le nostre note di rilascio complete di AOSP e l'elenco di funzionalità e modifiche di Android for Developers.

Android 13

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

  • Android 13 aggiunge il supporto delle presentazioni con più documenti. Questa nuova interfaccia Sessione di presentazione consente a un'app di eseguire una presentazione di più documenti, cosa non possibile con l'API esistente. Per ulteriori informazioni, consulta Documento di identità
  • In Android 13, gli intent provenienti da app esterne vengono inviati a un componente esportato se e solo se corrispondono ai relativi elementi di filtro intent dichiarati.
  • Open Mobile API (OMAPI) è un'API standard utilizzata per comunicare con l'elemento di sicurezza di un dispositivo. Prima di Android 13, solo le app e i moduli del framework avevano accesso a questa interfaccia. Se la converti in un'interfaccia stabile del fornitore, i moduli HAL sono in grado di comunicare anche con gli elementi di sicurezza tramite il servizio OMAPI. Per ulteriori informazioni, consulta OMAPI Vendor Stable Interface.
  • 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 file manifest. Questa voce impedisce ai nuovi utenti di ottenere un UID condiviso. Per ulteriori informazioni sugli UID, consulta Firma dell'app.
  • Android 13 ha aggiunto il supporto delle primitive di crittografia simmetrica del Keystore, come AES (Advanced Encryption Standard), HMAC (Keyed-Hash Message Authentication Code) e algoritmi di crittografia asimmetrica (incluse le curve ellittiche, 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. In questo modo, gli utenti hanno il controllo sulle notifiche di autorizzazione che visualizzano.
  • È stata aggiunta la richiesta per uso singolo per le app che richiedono l'accesso a tutti i log del dispositivo, consentendo agli utenti di consentire o negare l'accesso.
  • ha introdotto il Framework di virtualizzazione di Android (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.
  • È stato introdotto lo schema di firma dell'APK v3.1 Per impostazione predefinita, tutte le nuove rotazioni delle chiavi che utilizzano apksigner utilizzano lo schema di firma v3.1 per la rotazione target per Android 13 e versioni successive.

Consulta le nostre note di rilascio complete di AOSP e l'elenco di funzionalità e modifiche di Android for Developers.

Android 12

Ogni release di Android include dozzine di miglioramenti della 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 devono essere consapevoli del dispositivo e fornire maggiori informazioni sui tipi di autenticazione che potrebbero essere utilizzati. Android 12 include inoltre il supporto per i sensori di impronte digitali integrati nel display
  • È stato aggiunto il supporto per i sensori di impronte digitali integrati nel display
  • Introduzione del Fingerprint Android Interface Definition Language (AIDL)
  • Supporto per il nuovo AIDL di Face
  • Introduzione di Rust come linguaggio per lo sviluppo della piattaforma
  • È stata aggiunta l'opzione che consente agli utenti di concedere l'accesso solo alla loro posizione approssimativa.
  • Sono stati aggiunti indicatori della privacy nella barra di stato quando un'app utilizza la fotocamera o il microfono
  • Private Compute Core (PCC) di Android
  • È stata aggiunta un'opzione per disattivare il supporto 2G

Android 11

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

Android 10

Ogni release di Android include dozzine di miglioramenti della sicurezza per proteggere gli utenti. Android 10 include diversi miglioramenti in termini di sicurezza e privacy. Consulta le note di rilascio di Android 10 per un elenco completo delle modifiche in Android 10.

Sicurezza

BoundsSanitizer

Android 10 implementa BoundsSanitizer (BoundSan) in Bluetooth e codec. BoundSan utilizza lo strumento di contenimento dei limiti di UBSan. Questa mitigazione è attivata a livello di modulo. Contribuisce a mantenere al sicuro i componenti critici di Android e non deve essere disattivato. 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 binari di sistema AArch64 sono contrassegnate come di sola esecuzione (non leggibili) come misura di mitigazione del rafforzamento contro gli attacchi di riutilizzo del codice just-in-time. Il codice che mescola dati e codice e il codice che esamina intenzionalmente queste sezioni (senza prima rimappare i segmenti di memoria come leggibili) non funziona più. Le app con un SDK target di Android 10 (livello API 29 o successivo) sono interessate se tentano di leggere sezioni di codice delle librerie di sistema abilitate per la memoria di sola esecuzione (XOM) in memoria senza prima contrassegnarla come leggibile.

Accesso esteso

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

Autenticazione volti

L'autenticazione del volto consente agli utenti di sbloccare il dispositivo semplicemente guardando la parte anteriore del dispositivo. Android 10 aggiunge il supporto di un nuovo stack di autenticazione dei volti in grado di elaborare in modo sicuro i frame della videocamera, tutelando la sicurezza e la privacy durante l'autenticazione dei volti su hardware supportato. Android 10 offre inoltre un modo semplice per le implementazioni conformi alla sicurezza di attivare l'integrazione delle app per transazioni come l'internet banking o altri servizi.

Sanificazione per overflow di numeri interi

Android 10 attiva la sanificazione per overflow di interi (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 di aggiornarli al di fuori del normale ciclo di rilascio di Android. Alcuni moduli includono:

OEMCrypto

Android 10 utilizza la versione 15 dell'API OEMCrypto.

Scudo

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

ShadowCallStack

ShadowCallStack (SCS) è una modalità di ShadowCallStackShadowCallStack

WPA3 e Enhanced Open Wi-Fi

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

Privacy

Accesso alle app quando si ha come target Android 9 o versioni precedenti

Se la tua app è in esecuzione su Android 10 o versioni successive, ma ha come target 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.

Limitazioni delle attività in background

A partire da Android 10, il sistema applica limitazioni all'avvio di attività in background. Questa modifica del comportamento consente di minimizzare le interruzioni per l'utente e di mantenere un maggiore controllo su ciò che viene mostrato sullo schermo. Se la tua app avvia attività come risultato diretto della interazione dell'utente, molto probabilmente non è interessata da queste limitazioni.
Per scoprire di più sull'alternativa consigliata per avviare le 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 per impostazione predefinita dal metodo getCameraCharacteristics(). In particolare, la tua app deve disporre dell'autorizzazione CAMERA per accedere ai metadati potenzialmente specifici del dispositivo inclusi nel valore restituito di questo metodo.
Per scoprire di più su queste modifiche, consulta la sezione sui campi della fotocamera che richiedono l'autorizzazione.

Dati appunti

A meno che l'app non sia l'editor di metodi di inserimento (IME) predefinito o l'app attualmente attiva, non può accedere ai dati della clipboard su Android 10 o versioni successive.

Posizione del dispositivo

Per supportare il controllo aggiuntivo che gli utenti hanno sull'accesso di un'app ai dati 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 alla posizione di un'app quando viene eseguita in background. Un'app è considerata come se accedesse 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 un tipo di servizio in primo piano pari a location.
    Per dichiarare il tipo di servizio in primo piano per un servizio nella tua app, imposta targetSdkVersion o compileSdkVersion della tua app su 29 o versioni successive. Scopri di più su come i servizi in primo piano possono continuare le azioni avviate dall'utente che richiedono l'accesso alla posizione.

Memoria esterna

Per impostazione predefinita, alle app che hanno come target Android 10 e versioni successive viene concesso l'accesso con ambito allo spazio di archiviazione esterno o lo spazio di archiviazione con ambito. Queste app possono vedere i seguenti tipi di file all'interno di un dispositivo di archiviazione esterno senza dover richiedere autorizzazioni utente relative allo spazio di archiviazione:

Per scoprire di più sullo spazio di archiviazione limitato e su come condividere, accedere e modificare i file salvati su dispositivi di archiviazione esterni, consulta le guide su come gestire i file nello spazio di archiviazione esterno e su come accedere ai file multimediali e modificarli.

Selezione casuale dell'indirizzo MAC

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

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

Identificatori dei dispositivi non reimpostabili

A partire da Android 10, le app devono disporre dell'READ_PRIVILEGED_PHONE_STATEautorizzazione privilegiata per accedere agli identificatori non reimpostabili del dispositivo, inclusi IMEI e numero di serie.

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

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

Riconoscimento dell'attività fisica

Android 10 introduce l'android.permission.ACTIVITY_RECOGNITION autorizzazione di runtime per le app che devono rilevare il numero di passi dell'utente o classificare la sua attività fisica, ad esempio camminare, andare in bici o muoversi in un veicolo. Questo è progettato per offrire agli utenti la visibilità di come vengono utilizzati i dati dei sensori del dispositivo nelle Impostazioni.
Alcune librerie di Google Play Services, 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 permission.
Gli unici sensori integrati sul dispositivo che richiedono di dichiarare questa autorizzazione sono i sensori contatore dei passi e rilevamento dei passi.
Se la tua app ha come target Android 9 (livello API 28) o versioni precedenti, il sistema concede automaticamente l'autorizzazione android.permission.ACTIVITY_RECOGNITION all'app, se necessario, 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 il sistema automatico concede l'autorizzazioneandroid.permission.ACTIVITY_RECOGNITION, l'app mantiene l'autorizzazione dopo l'aggiornamento in modo che abbia come target Android 10. Tuttavia, l'utente può revocare questa autorizzazione in qualsiasi momento nelle impostazioni di sistema.

Restrizioni del file system /proc/net

Sui dispositivi con Android 10 o versioni successive, le app non possono accedere a /proc/net, che include informazioni sullo stato della rete di un dispositivo. Le app che hanno bisogno di accedere a queste informazioni, come 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 controllare in che modo le autorizzazioni vengono raggruppate 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 nei contatti dell'utente, i risultati non sono ordinati in base alla frequenza di interazione.
La guida su ContactsProvider contiene una nota che descrive i metodi e i campi specifici 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 sono solo di accesso con firma.
Le app che devono accedere ai contenuti dello schermo del dispositivo devono utilizzare l'MediaProjection API, che mostra una richiesta all'utente di fornire il consenso.

Numero di serie del dispositivo USB

Se la tua app ha come target Android 10 o versioni successive, non può leggere il numero di serie finché l'utente non ha concesso all'app l'autorizzazione ad accedere al dispositivo o all'accessorio USB.
Per scoprire di più sull'utilizzo dei dispositivi USB, consulta la guida su come configurare gli host USB.

Wi-Fi

Le app che hanno come target Android 10 o versioni successive non possono attivare o disattivare il Wi-Fi. Il metodo WifiManager.setWifiEnabled() restituisce sempre false.
Se devi chiedere agli utenti di attivare e disattivare il Wi-Fi, utilizza un pannello di impostazioni.

Limitazioni 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 di criteri del dispositivo (DPC). Un determinato amministratore dispositivo può essere il proprietario del dispositivo o del profilo.
Se la tua app ha come target Android 10 o versioni successive e non è un'app di sistema o un'app con accesso in background, i seguenti metodi non restituiscono dati utili:

Android 9

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

Android 8

Every Android release includes dozens of security enhancements to protect users. Here are some of the major security enhancements available in Android 8.0:

  • Encryption. Added support to evict key in work profile.
  • Verified Boot. Added Android Verified Boot (AVB). Verified Boot codebase supporting rollback protection for use in boot loaders added to AOSP. Recommend bootloader support for rollback protection for the HLOS. Recommend boot loaders can only be unlocked by user physically interacting with the device.
  • Lock screen. Added support for using tamper-resistant hardware to verify lock screen credential.
  • KeyStore. Required key attestation for all devices that ship with Android 8.0+. Added ID attestation support to improve Zero Touch Enrollment.
  • Sandboxing. More tightly sandboxed many components using Project Treble's standard interface between framework and device-specific components. Applied seccomp filtering to all untrusted apps to reduce the kernel's attack surface. WebView is now run in an isolated process with very limited access to the rest of the system.
  • Kernel hardening. Implemented hardened usercopy, PAN emulation, read-only after init, and KASLR.
  • Userspace hardening. Implemented CFI for the media stack. App overlays can no longer cover system-critical windows and users have a way to dismiss them.
  • Streaming OS update. Enabled updates on devices that are are low on disk space.
  • Install unknown apps. Users must grant permission to install apps from a source that isn't a first-party app store.
  • Privacy. Android ID (SSAID) has a different value for each app and each user on the device. For web browser apps, Widevine Client ID returns a different value for each app package name and web origin. net.hostname is now empty and the dhcp client no longer sends a hostname. android.os.Build.SERIAL has been replaced with the Build.SERIAL API which is protected behind a user-controlled permission. Improved MAC address randomization in some chipsets.

Android 7

Every Android release includes dozens of security enhancements to protect users. Here are some of the major security enhancements available in Android 7.0:

  • File-based encryption. Encrypting at the file level, instead of encrypting the entire storage area as a single unit, better isolates and protects individual users and profiles (such as personal and work) on a device.
  • Direct Boot. Enabled by file-based encryption, Direct Boot allows certain apps such as alarm clock and accessibility features to run when device is powered on but not unlocked.
  • Verified Boot. Verified Boot is now strictly enforced to prevent compromised devices from booting; it supports error correction to improve reliability against non-malicious data corruption.
  • SELinux. Updated SELinux configuration and increased seccomp coverage further locks down the Application Sandbox and reduces attack surface.
  • Library load-order randomization and improved ASLR. Increased randomness makes some code-reuse attacks less reliable.
  • Kernel hardening. Added additional memory protection for newer kernels by marking portions of kernel memory as read-only, restricting kernel access to userspace addresses and further reducing the existing attack surface.
  • APK signature scheme v2. Introduced a whole-file signature scheme that improves verification speed and strengthens integrity guarantees.
  • Trusted CA store. To make it easier for apps to control access to their secure network traffic, user-installed certificate authorities and those installed through Device Admin APIs are no longer trusted by default for apps targeting API Level 24+. Additionally, all new Android devices must ship with the same trusted CA store.
  • Network Security Config. Configure network security and TLS through a declarative configuration file.

Android 6

Every Android release includes dozens of security enhancements to protect users. Here are some of the major security enhancements available in Android 6.0:

  • Runtime Permissions. Apps request permissions at runtime instead of being granted at App install time. Users can toggle permissions on and off for both M and pre-M apps.
  • Verified Boot. A set of cryptographic checks of system software are conducted prior to execution to ensure the phone is healthy from the bootloader all the way up to the operating system.
  • Hardware-Isolated Security. New Hardware Abstraction Layer (HAL) used by Fingerprint API, Lockscreen, Device Encryption, and Client Certificates to protect keys against kernel compromise and/or local physical attacks
  • Fingerprints. Devices can now be unlocked with just a touch. Developers can also take advantage of new APIs to use fingerprints to lock and unlock encryption keys.
  • SD Card Adoption. Removable media can be adopted to a device and expand available storage for app local data, photos, videos, etc., but still be protected by block-level encryption.
  • Clear Text Traffic. Developers can use a new StrictMode to make sure their app doesn't use cleartext.
  • System Hardening. Hardening of the system via policies enforced by SELinux. This offers better isolation between users, IOCTL filtering, reduce threat of exposed services, further tightening of SELinux domains, and extremely limited /proc access.
  • USB Access Control: Users must confirm to allow USB access to files, storage, or other functionality on the phone. Default is now charge only with access to storage requiring explicit approval from the user.

Android 5

5,0

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

  • Crittografati per impostazione predefinita. Sui dispositivi su cui è preinstallato L, la crittografia completa del disco è attivata per impostazione predefinita per migliorare la protezione dei dati sui dispositivi smarriti o rubati. I dispositivi aggiornati a L possono essere criptati in Impostazioni > Sicurezza .
  • Crittografia completa del disco migliorata. La password utente è protetta dagli attacchi di forza bruta utilizzando scrypt e, se disponibile, la chiave è associata al keystore hardware per impedire gli attacchi al di fuori del dispositivo. Come sempre, il segreto del blocco schermo di Android e la chiave di crittografia del dispositivo non vengono inviati dal dispositivo né esposti a nessuna applicazione.
  • Sandbox Android rafforzata con SELinux . Ora Android richiede SELinux in modalità di applicazione per tutti i domini. SELinux è un sistema di controllo dell'accesso obbligatorio (MAC) nel kernel di Linux utilizzato per integrare il modello di sicurezza del controllo dell'accesso discrezionale (DAC) esistente. Questo nuovo livello offre una protezione aggiuntiva contro potenziali vulnerabilità di sicurezza.
  • Smart Lock. Android ora include trustlet che offrono maggiore flessibilità per sbloccare i dispositivi. Ad esempio, i trustlet possono consentire di sbloccare automaticamente i dispositivi quando sono nelle vicinanze di un altro dispositivo attendibile (tramite NFC, Bluetooth) o quando vengono utilizzati da una persona con un volto attendibile.
  • Modalità multiutente, profilo con limitazioni e ospite per smartphone e tablet. Android ora supporta più utenti sugli smartphone e include una modalità ospite che può essere utilizzata per fornire un facile accesso temporaneo al dispositivo senza concedere l'accesso ai dati e alle app.
  • Aggiornamenti a WebView senza OTA. Ora WebView può essere aggiornato indipendentemente dal framework e senza un OTA di sistema. In questo modo è possibile rispondere più rapidamente a potenziali problemi di sicurezza in WebView.
  • Crittografia aggiornata per HTTPS e TLS/SSL. TLS 1.2 e TLS 1.1 sono ora attivati, la crittografia lato client è ora preferita, AES-GCM è ora attivato e le suite di crittografia deboli (MD5, 3DES e suite di crittografia di esportazione) sono ora disattivate. Per ulteriori dettagli, visita la pagina https://developer.android.com/reference/javax/net/ssl/SSLSocket.html.
  • Rimosso il supporto del linker non PIE. Ora Android richiede che tutti gli eseguibili con collegamento dinamico supportino PIE (eseguibili indipendenti dalla posizione). In questo modo viene migliorata l'implementazione della casualizzazione dello spazio degli indirizzi (ASLR) di Android.
  • Miglioramenti a FORTIFY_SOURCE. Le seguenti funzioni libc ora implementano le protezioni FORTIFY_SOURCE: stpcpy(), stpncpy(), read(), recvfrom(), FD_CLR(), FD_SET() e FD_ISSET(). Ciò offre protezione dalle vulnerabilità di corruzione della memoria che coinvolgono queste 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 dell'Open Handset Alliance e le correzioni sono disponibili nel progetto open source Android. Per migliorare la sicurezza, alcune versioni precedenti di Android potrebbero includere anche queste correzioni.

Android 4 e versioni precedenti

Every Android release includes dozens of security enhancements to protect users. The following are some of the security enhancements available in Android 4.4:

  • Android sandbox reinforced with SELinux. Android now uses SELinux in enforcing mode. SELinux is a mandatory access control (MAC) system in the Linux kernel used to augment the existing discretionary access control (DAC) based security model. This provides additional protection against potential security vulnerabilities.
  • Per User VPN. On multi-user devices, VPNs are now applied per user. This can allow a user to route all network traffic through a VPN without affecting other users on the device.
  • ECDSA Provider support in AndroidKeyStore. Android now has a keystore provider that allows use of ECDSA and DSA algorithms.
  • Device Monitoring Warnings. Android provides users with a warning if any certificate has been added to the device certificate store that could allow monitoring of encrypted network traffic.
  • FORTIFY_SOURCE. Android now supports FORTIFY_SOURCE level 2, and all code is compiled with these protections. FORTIFY_SOURCE has been enhanced to work with clang.
  • Certificate Pinning. Android 4.4 detects and prevents the use of fraudulent Google certificates used in secure SSL/TLS communications.
  • Security Fixes. Android 4.4 also includes fixes for Android-specific vulnerabilities. Information about these vulnerabilities has been provided to Open Handset Alliance members and fixes are available in Android Open Source Project. To improve security, some devices with earlier versions of Android may also include these fixes.

Every Android release includes dozens of security enhancements to protect users. The following are some of the security enhancements available in Android 4.3:

  • Android sandbox reinforced with SELinux. This release strengthens the Android sandbox using the SELinux mandatory access control system (MAC) in the Linux kernel. SELinux reinforcement is invisible to users and developers, and adds robustness to the existing Android security model while maintaining compatibility with existing apps. To ensure continued compatibility this release allows the use of SELinux in a permissive mode. This mode logs any policy violations, but will not break apps or affect system behavior.
  • No setuid or setgid programs. Added support for filesystem capabilities to Android system files and removed all setuid or setgid programs. This reduces root attack surface and the likelihood of potential security vulnerabilities.
  • ADB authentication. Starting in Android 4.2.2, connections to ADB are authenticated with an RSA keypair. This prevents unauthorized use of ADB where the attacker has physical access to a device.
  • Restrict Setuid from Android Apps. The /system partition is now mounted nosuid for zygote-spawned processes, preventing Android apps from executing setuid programs. This reduces root attack surface and the likelihood of potential security vulnerabilities.
  • Capability bounding. Android zygote and ADB now use prctl(PR_CAPBSET_DROP) to drop unnecessary capabilities prior to executing apps. This prevents Android apps and apps launched from the shell from acquiring privileged capabilities.
  • AndroidKeyStore Provider. Android now has a keystore provider that allows apps to create exclusive use keys. This provides apps with an API to create or store private keys that cannot be used by other apps.
  • KeyChain isBoundKeyAlgorithm. Keychain API now provides a method (isBoundKeyType) that allows apps to confirm that system-wide keys are bound to a hardware root of trust for the device. This provides a place to create or store private keys that can't be exported off the device, even in the event of a root compromise.
  • NO_NEW_PRIVS. Android zygote now uses prctl(PR_SET_NO_NEW_PRIVS) to block addition of new privileges prior to execution app code. This prevents Android apps from performing operations that can elevate privileges through execve. (This requires Linux kernel version 3.5 or greater).
  • FORTIFY_SOURCE enhancements. Enabled FORTIFY_SOURCE on Android x86 and MIPS and fortified strchr(), strrchr(), strlen(), and umask() calls. This can detect potential memory corruption vulnerabilities or unterminated string constants.
  • Relocation protections. Enabled read only relocations (relro) for statically linked executables and removed all text relocations in Android code. This provides defense in depth against potential memory corruption vulnerabilities.
  • Improved EntropyMixer. EntropyMixer now writes entropy at shutdown or reboot, in addition to periodic mixing. This allows retention of all entropy generated while devices are powered on, and is especially useful for devices that are rebooted immediately after provisioning.
  • Security fixes. Android 4.3 also includes fixes for Android-specific vulnerabilities. Information about these vulnerabilities has been provided to Open Handset Alliance members and fixes are available in Android Open Source Project. To improve security, some devices with earlier versions of Android may also include these fixes.

Android fornisce un modello di sicurezza multilivello descritto nella Panoramica della sicurezza Android. Ogni aggiornamento di Android include decine di miglioramenti alla sicurezza per proteggere gli utenti. Di seguito sono riportati alcuni dei miglioramenti della sicurezza introdotti in Android 4.2:

  • Verifica app:gli utenti possono scegliere di attivare la Verifica app e di far esaminare le app da un verificatore di app prima dell'installazione. La verifica dell'app può avvisare l'utente se tenta di installare un'app potenzialmente dannosa. Se un'app è particolarmente dannosa, può bloccarne l'installazione.
  • Maggiore controllo sugli SMS premium: Android fornisce una notifica se un'app tenta di inviare un SMS a un codice corto che utilizza servizi premium che potrebbero comportare addebiti aggiuntivi. L'utente può scegliere se consentire all'app di inviare il messaggio o bloccarlo.
  • VPN sempre attiva:la VPN può essere configurata in modo che le app non abbiano accesso alla rete finché non viene stabilita una connessione VPN. In questo modo, le app non possono inviare dati su altre reti.
  • Blocco dei certificati: le librerie di base di Android ora supportano il blocco dei certificati. I domini bloccati ricevono un errore di convalida del certificato se il certificato non è collegato a un insieme di certificati previsti. In questo modo, è possibile proteggersi da una possibile compromissione delle autorità di certificazione.
  • Visualizzazione migliorata delle autorizzazioni Android: le autorizzazioni sono 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.
  • Ottimizzazione di installd:il daemon installd non viene eseguito come utente installd, riducendo la potenziale superficie di attacco per l'escalation dei privilegi di installd.
  • Ottimizzazione script di inizializzazione: gli script di inizializzazione ora applicano la semantica O_NOFOLLOW per difendersi dagli attacchi correlati ai link simbolici.
  • FORTIFY_SOURCE: ora Android implementa FORTIFY_SOURCE. Viene utilizzato dalle librerie di sistema e dalle app per evitare la corruzione della memoria.
  • Configurazione predefinita di ContentProvider: per impostazione predefinita, le app che hanno come target il livello 17 dell'API hanno export impostato su false per ogni ContentProvider, riducendo la superficie di attacco predefinita per le app.
  • Crittografia: sono state modificate le implementazioni predefinite di SecureRandom e Cipher.RSA per utilizzare OpenSSL. È stato aggiunto il supporto delle socket SSL per TLSv1.1 e TLSv1.2 utilizzando OpenSSL 1.0.1
  • Correzioni di sicurezza: le librerie open source di cui è stato eseguito l'upgrade con le 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 nel progetto open source Android. Per migliorare la sicurezza, alcune versioni precedenti di Android potrebbero includere anche queste correzioni.

Android provides a multi-layered security model described in the Android Security Overview. Each update to Android includes dozens of security enhancements to protect users. The following are some of the security enhancements introduced in Android versions 1.5 through 4.1:

Android 1.5
  • ProPolice to prevent stack buffer overruns (-fstack-protector)
  • safe_iop to reduce integer overflows
  • Extensions to OpenBSD dlmalloc to prevent double free() vulnerabilities and to prevent chunk consolidation attacks. Chunk consolidation attacks are a common way to exploit heap corruption.
  • OpenBSD calloc to prevent integer overflows during memory allocation
Android 2.3
  • Format string vulnerability protections (-Wformat-security -Werror=format-security)
  • Hardware-based No eXecute (NX) to prevent code execution on the stack and heap
  • Linux mmap_min_addr to mitigate null pointer dereference privilege escalation (further enhanced in Android 4.1)
Android 4.0
Address Space Layout Randomization (ASLR) to randomize key locations in memory
Android 4.1
  • PIE (Position Independent Executable) support
  • Read-only relocations / immediate binding (-Wl,-z,relro -Wl,-z,now)
  • dmesg_restrict enabled (avoid leaking kernel addresses)
  • kptr_restrict enabled (avoid leaking kernel addresses)