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
Every Android release includes dozens of security enhancements to protect users. Here are some of the major security enhancements available in Android 14:
- Hardware-assisted AddressSanitizer (HWASan), introduced in Android 10, is a memory error detection tool similar to AddressSanitizer. Android 14 brings significant improvements to HWASan. Learn how it helps prevent bugs from making it into Android releases, HWAddressSanitizer
- In Android 14, starting with apps that share location data with third-parties, the system runtime permission dialog now includes a clickable section that highlights the app's data-sharing practices, including information such as why an app may decide to share data with third parties.
- Android 12 introduced an option to disable 2G support at the modem level, which protects users from the inherent security risk from 2G's obsolete security model. Recognizing how critical disabling 2G could be for enterprise customers, Android 14 enables this security feature in Android Enterprise, introducing support for IT admins to restrict the ability of a managed device to downgrade to 2G connectivity.
- Added support to reject null-ciphered cellular connections, ensuring that circuit-switched voice and SMS traffic is always encrypted and protected from passive over-the-air interception. Learn more about Android's program to harden cellular connectivity.
- Added support for multiple IMEIs
- Since Android 14, AES-HCTR2 is the preferred mode of filenames encryption for devices with accelerated cryptography instructions.
- Cellular connectivity
- Documentation added for Android Safety Center
- If your app targets Android 14 and uses Dynamic Code Loading (DCL), all dynamically-loaded files must be marked as read-only. Otherwise, the system throws an exception. We recommend that apps avoid dynamically loading code whenever possible, as doing so greatly increases the risk that an app can be compromised by code injection or code tampering.
Check out our full AOSP release notes and the Android Developer features and changes list.
Android 13
Every Android release includes dozens of security enhancements to protect users. Here are some of the major security enhancements available in Android 13:
- Android 13 adds multi-document presentation support. This new Presentation Session interface enables an app to do a multi-document presentation, something which isn't possible with the existing API. For further information, refer to Identity Credential
- In Android 13, intents originating from external apps are delivered to an exported component if and only if the intents match their declared intent-filter elements.
- Open Mobile API (OMAPI) is a standard API used to communicate with a device's Secure Element. Before Android 13, only apps and framework modules had access to this interface. By converting it to a vendor stable interface, HAL modules are also capable of communicating with the secure elements through the OMAPI service. For more information, see OMAPI Vendor Stable Interface.
- As of Android 13-QPR, shared UIDs are deprecated. Users of Android 13 or higher should put the line `android:sharedUserMaxSdkVersion="32"` in their manifest. This entry prevents new users from getting a shared UID. For further information on UIDs, see App signing.
- Android 13 added support Keystore symmetric cryptographic primitives such as AES (Advanced Encryption Standard), HMAC (Keyed-Hash Message Authentication Code), and asymmetric cryptographic algorithms (including Elliptic Curve, RSA2048, RSA4096, and Curve 25519)
- Android 13 (API level 33) and higher supports a runtime permission for sending non-exempt notifications from an app. This gives users control over which permission notifications they see.
- Added per-use prompt for apps requesting access to all device logs, giving users the ability to allow or deny access.
- introduced the Android Virtualization Framework (AVF), which brings together different hypervisors under one framework with standardized APIs. It provides secure and private execution environments for executing workloads isolated by hypervisor.
- Introduced APK signature scheme v3.1 All new key rotations that use apksigner use the v3.1 signature scheme by default to target rotation for Android 13 and higher.
Check out our full AOSP release notes and the Android Developer features and changes list.
Android 12
Every Android release includes dozens of security enhancements to protect users. Here are some of the major security enhancements available in Android 12:
- Android 12 introduces the BiometricManager.Strings API, which provides localized strings for apps that use BiometricPrompt for authentication. These strings are intended to be device-aware and provide more specificity about which authentication types might be used. Android 12 also includes support for under-display fingerprint sensors
- Support added for under-display fingerprint sensors
- Introduction of the Fingerprint Android Interface Definition Language (AIDL)
- Support for new Face AIDL
- Introduction of Rust as a language for platform development
- The option for users to grant access only to their approximate location added
- Added Privacy indicators on the status bar when an app is using the camera or microphone
- Android's Private Compute Core (PCC)
- Added an option to disable 2G support
Android 11
Every Android release includes dozens of security enhancements to protect users. For a list of some of the major security enhancements available in Android 11, see the Android Release Notes.
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:
- Ambiente di runtime Android
- Conscrypt
- Resolver DNS
- DocumentsUI
- ExtServices
- Media
- ModuleMetadata
- Networking
- PermissionController
- Dati sul fuso orario
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 �ShadowCallStack
ShadowCallStack
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>
perACCESS_FINE_LOCATION
oACCESS_COARSE_LOCATION
, il sistema aggiunge automaticamente un elemento<uses-permission>
perACCESS_BACKGROUND_LOCATION
durante l'installazione. - Se la tua app richiede
ACCESS_FINE_LOCATION
oACCESS_COARSE_LOCATION
, il sistema aggiunge automaticamenteACCESS_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, impostatargetSdkVersion
ocompileSdkVersion
della tua app su29
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:
- File nella directory specifica dell'app, a cui si accede utilizzando
getExternalFilesDir()
. - Foto, video e clip audio creati dall'app dal Media Store.
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_STATE
autorizzazione privilegiata per accedere agli identificatori non reimpostabili del dispositivo, inclusi IMEI e numero di serie.
Build
TelephonyManager
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'autorizzazioneREAD_PHONE_STATE
. In caso contrario, si verifica unSecurityException
.
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:
- Il metodo
getConfiguredNetworks()
restituisce sempre un elenco vuoto. - Ogni metodo di operazione di rete che restituisce un valore intero,
addNetwork()
eupdateNetwork()
, restituisce sempre -1. - Ogni operazione di rete che restituisce un valore booleano (
removeNetwork()
,reassociate()
,enableNetwork()
,disableNetwork()
,reconnect()
edisconnect()
) restituisce semprefalse
.
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
Ogni release di Android include dozzine di miglioramenti della sicurezza per proteggere gli utenti. Di seguito sono riportati alcuni dei principali miglioramenti alla sicurezza disponibili in Android 8.0:
- Crittografia. È stato aggiunto il supporto per l'espulsione della chiave nel profilo di lavoro.
- Avvio verificato. È stato aggiunto l'avvio verificato di Android (AVB). Base di codice di avvio verificata che supporta la protezione del rollback per l'utilizzo nei bootloader aggiunti ad AOSP. Consiglia il supporto del bootloader per la protezione rollback per il sistema operativo di base. Consiglia di sbloccare i bootloader solo tramite l'interazione fisica dell'utente con il dispositivo.
- Schermata di blocco. È stato aggiunto il supporto per l'utilizzo di hardware antimanomissione per verificare la credenziale della schermata di blocco.
- KeyStore. È richiesta l'attestazione della chiave per tutti i dispositivi forniti con Android 8.0 e versioni successive. È stato aggiunto il supporto dell'attestazione dell'ID per migliorare la registrazione zero-touch.
- Limitazione tramite sandbox. Molti componenti sono più rigidamente controllati in una sandbox grazie all'interfaccia standard di Project Treble tra il framework e i componenti specifici del dispositivo. È stato applicato il filtro seccomp a tutte le app non attendibili per ridurre la superficie di attacco del kernel. WebView ora viene eseguito in un processo isolato con accesso molto limitato al resto del sistema.
- Ottimizzazione del kernel. È stata implementata la usercopy rafforzata, l'emulazione PAN, la modalità di sola lettura dopo l'inizializzazione e KASLR.
- Ottimizzazione dello spazio utente. È stato implementato il CFI per lo stack multimediale. Gli overlay delle app non possono più coprire le finestre di sistema critiche e gli utenti hanno un modo per ignorarli.
- Aggiornamento del sistema operativo di streaming. Aggiornamenti attivati su dispositivi con poco spazio su disco.
- Installa app sconosciute. Gli utenti devono concedere l'autorizzazione per installare app da un'origine che non sia uno 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 ogni 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'APIBuild.SERIAL
, protetta da un'autorizzazione controllata dall'utente. Miglioramento della randomizzazione dell'indirizzo MAC in alcuni chipset.
Android 7
Ogni release di Android include dozzine di miglioramenti della sicurezza per proteggere gli utenti. Di seguito sono riportati alcuni dei principali miglioramenti della sicurezza disponibili in Android 7.0:
- Crittografia basata su file. La crittografia a livello di file, anziché l'intera area di archiviazione come singola unità, isole e protegge meglio i singoli utenti e profili (ad esempio personali e di lavoro) su un dispositivo.
- Avvio diretto. Attivato dalla crittografia basata su file, Avvio diretto consente a determinate app, come la sveglia e le funzionalità di accessibilità, di funzionare quando il dispositivo è acceso, ma non sbloccato.
- Avvio verificato. L'Avvio verificato ora viene applicato rigorosamente per impedire l'avvio dei dispositivi compromessi. Supporta la correzione degli errori per migliorare l'affidabilità contro la corruzione dei dati non dannosa.
- SELinux. La configurazione aggiornata di SELinux e l'aumento della copertura di seccomp bloccano ulteriormente la sandbox delle applicazioni e riducono la superficie di attacco.
- Casualizzazione dell'ordine di caricamento delle librerie e ASLR migliorata. L'aumento della casualità rende meno affidabili alcuni attacchi di riutilizzo del codice.
- Ottimizzazione del kernel. È stata aggiunta una protezione della memoria aggiuntiva per i kernel più recenti contrassegnando parti della 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 dell'APK v2. È stato introdotto uno schema di firma dell'intero file che migliora la velocità di verifica e rafforza le garanzie di integrità.
- Negozio CA attendibile. Per semplificare il controllo da parte delle app dell'accesso al loro traffico di rete sicuro, le autorità di certificazione installate dall'utente e quelle installate tramite le API Device Admin non sono più considerate attendibili per impostazione predefinita per le app che hanno come target il livello API 24 e versioni successive. Inoltre, tutti i nuovi dispositivi Android devono essere forniti con lo stesso archivio CA attendibile.
- Network Security Config. Configura la sicurezza di rete e TLS tramite un file di configurazione dichiarativo.
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()
eFD_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.
Ogni release 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.3:
- Sandbox Android rafforzata con SELinux. Questa release rafforza la sandbox di Android utilizzando il sistema di controllo dell'accesso obbligatorio (MAC) SELinux nel kernel di Linux. Il rafforzamento di SELinux è invisibile a utenti e sviluppatori e aggiunge robustezza al modello di sicurezza Android esistente, mantenendo la compatibilità con le app esistenti. Per garantire la compatibilità, questa release consente l'utilizzo di SELinux in una modalità permissiva. Questa modalità registra eventuali violazioni delle norme, ma non blocca le app né influisce sul comportamento del sistema.
- Nessun programma
setuid
osetgid
. È stato aggiunto il supporto delle funzionalità del file system ai file di sistema di Android e sono stati rimossi tutti i programmisetuid
osetgid
. In questo modo si riduce la superficie di attacco del root e la probabilità di potenziali vulnerabilità di sicurezza. - Autenticazione ADB. A partire da Android 4.2.2, le connessioni ad ADB vengono autenticate con una coppia di chiavi RSA. In questo modo viene impedito l'uso non autorizzato di ADB se l'utente malintenzionato ha accesso fisico a un dispositivo.
- Limita Setuid dalle app Android.
La partizione
/system
è ora montata nosuid per i processi generati da zygote, impedendo alle app Android di eseguire programmisetuid
. In questo modo si riduce la superficie di attacco del root e la probabilità di potenziali vulnerabilità di sicurezza. - Limitazione delle funzionalità.
Ora zygote di Android e ADB utilizzano
prctl(PR_CAPBSET_DROP)
per rimuovere le funzionalità non necessarie prima di eseguire le app. In questo modo, le app Android e le app avviate dalla shell non possono acquisire funzionalità con privilegi. - Provider AndroidKeyStore. Android ora dispone di un provider di archivi chiavi che consente alle app di creare chiavi di utilizzo esclusivo. In questo modo, le app dispongono di un'API per creare o archiviare chiavi private che non possono essere utilizzate da altre app.
- Portachiavi
isBoundKeyAlgorithm
. L'API Keychain ora fornisce un metodo (isBoundKeyType
) che consente alle app di verificare che le chiavi di sistema siano associate a un'autorità di certificazione hardware per il dispositivo. In questo modo, hai un luogo per creare o memorizzare chiavi private che non possono essere esportate dal dispositivo, anche in caso di compromissione del root. NO_NEW_PRIVS
. Ora il zygote di Android utilizzaprctl(PR_SET_NO_NEW_PRIVS)
per bloccare l'aggiunta di nuovi privilegi prima dell'esecuzione del codice dell'app. In questo modo, viene impedito alle app Android di eseguire operazioni che possono elevare i privilegi tramite execve. (questa operazione richiede la versione 3.5 o successive del kernel Linux).- Miglioramenti di
FORTIFY_SOURCE
. È stato attivatoFORTIFY_SOURCE
su Android x86 e MIPS e sono state rinforzate le chiamatestrchr()
,strrchr()
,strlen()
eumask()
. In questo modo è possibile rilevare potenziali vulnerabilità di corruzione della memoria o costanti di stringa non terminate. - Protezioni per il trasferimento. Sono state attivate le riallocazioni di sola lettura (relro) per gli eseguibili con link statico e sono state rimosse tutte le riallocazioni di testo nel codice di Android. In questo modo, viene garantita una difesa in profondità contro potenziali vulnerabilità legate alla corruzione della memoria.
- EntropyMixer migliorato. EntropyMixer ora scrive l'entropia all'arresto o al riavvio, oltre alla miscelazione periodica. Ciò consente di conservare tutta l'entropia generata durante l'accensione dei dispositivi ed è particolarmente utile per i dispositivi che vengono riavviati immediatamente dopo il provisioning.
- Correzioni relative alla sicurezza. Android 4.3 include anche correzioni per le vulnerabilità specifiche di Android. Le informazioni su queste vulnerabilità sono state fornite ai membri di Open Handset Alliance e le correzioni sono disponibili nell'Android Open Source Project. Per migliorare la sicurezza, anche alcuni dispositivi con versioni precedenti di Android potrebbero includere 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 4.2:
- App verification: Users can choose to enable Verify Apps and have apps screened by an app verifier, prior to installation. App verification can alert the user if they try to install an app that might be harmful; if an app is especially bad, it can block installation.
- More control of premium SMS: Android provides a notification if an app attempts to send SMS to a short code that uses premium services that might cause additional charges. The user can choose whether to allow the app to send the message or block it.
- Always-on VPN: VPN can be configured so that apps won't have access to the network until a VPN connection is established. This prevents apps from sending data across other networks.
- Certificate pinning: The Android core libraries now support certificate pinning. Pinned domains receive a certificate validation failure if the certificate doesn't chain to a set of expected certificates. This protects against possible compromise of certificate authorities.
- Improved display of Android permissions: Permissions are organized into groups that are more easily understood by users. During review of the permissions, the user can click on the permission to see more detailed information about the permission.
- installd hardening: The
installd
daemon does not run as the root user, reducing potential attack surface for root privilege escalation. - init script hardening: init scripts now apply
O_NOFOLLOW
semantics to prevent symlink related attacks. FORTIFY_SOURCE
: Android now implementsFORTIFY_SOURCE
. This is used by system libraries and apps to prevent memory corruption.- ContentProvider default configuration: Apps that target API
level 17 have
export
set tofalse
by default for each Content Provider, reducing default attack surface for apps. - Cryptography: Modified the default implementations of SecureRandom and Cipher.RSA to use OpenSSL. Added SSL Socket support for TLSv1.1 and TLSv1.2 using OpenSSL 1.0.1
- Security fixes: Upgraded open source libraries with security fixes include WebKit, libpng, OpenSSL, and LibXML. Android 4.2 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 nelle versioni di Android da 1.5 a 4.1:
- Android 1.5
- ProPolice per evitare gli overrun del buffer dello stack (-fstack-protector)
- safe_iop per ridurre i valori in eccesso degli interi
- Estensioni a dlmalloc di OpenBSD per evitare vulnerabilità di doppio free() e attacchi di consolidamento dei chunk. Gli attacchi di consolidamento dei chunk sono un modo comune per sfruttare la corruzione dell'heap.
- calloc di OpenBSD per evitare overflow di interi durante l'allocazione della memoria
- Android 2.3
- Protezioni delle vulnerabilità delle stringhe di formato (-Wformat-security -Werror=format-security)
- No eXecute (NX) basato sull'hardware per impedire l'esecuzione di codice nello stack e nell'heap
- mmap_min_addr di Linux per mitigare l'escalation dei privilegi tramite il dereferenziamento di un puntatore nullo (migliorata ulteriormente in Android 4.1)
- Android 4.0
- ASLR (Address Space Layout Randomization) per randomizzare le posizioni delle chiavi in memoria
- Android 4.1
- Supporto di PIE (Position Independent Executable)
- Spostamenti di sola lettura / associazione immediata (-Wl,-z,relro -Wl,-z,now)
- dmesg_restrict abilitato (per evitare la fuga di indirizzi del kernel)
- kptr_restrict abilitato (per evitare la fuga di indirizzi del kernel)