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

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.

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

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 type(s) may 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

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

Every Android release includes dozens of security enhancements to protect users. For a list of some of the major security enhancements available in Android 9, see the Android Release Notes.

Androide 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.

Androide7

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.

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

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

  • Encrypted by default. On devices that ship with L out-of-the-box, full disk encryption is enabled by default to improve protection of data on lost or stolen devices. Devices that update to L can be encrypted in Settings > Security.
  • Improved full disk encryption. The user password is protected against brute-force attacks using scrypt and, where available, the key is bound to the hardware keystore to prevent off-device attacks. As always, the Android screen lock secret and the device encryption key are not sent off the device or exposed to any application.
  • Android sandbox reinforced with SELinux. Android now requires SELinux in enforcing mode for all domains. SELinux is a mandatory access control (MAC) system in the Linux kernel used to augment the existing discretionary access control (DAC) security model. This new layer provides additional protection against potential security vulnerabilities.
  • Smart Lock. Android now includes trustlets that provide more flexibility for unlocking devices. For example, trustlets can allow devices to be unlocked automatically when close to another trusted device (via NFC, Bluetooth) or being used by someone with a trusted face.
  • Multi user, restricted profile, and guest modes for phones & tablets. Android now provides for multiple users on phones and includes a guest mode that can be used to provide easy temporary access to your device without granting access to your data and apps.
  • Updates to WebView without OTA. WebView can now be updated independent of the framework and without a system OTA. This will allow for faster response to potential security issues in WebView.
  • Updated cryptography for HTTPS and TLS/SSL. TLSv1.2 and TLSv1.1 is now enabled, Forward Secrecy is now preferred, AES-GCM is now enabled, and weak cipher suites (MD5, 3DES, and export cipher suites) are now disabled. See https://developer.android.com/reference/javax/net/ssl/SSLSocket.html for more details.
  • non-PIE linker support removed. Android now requires all dynamically linked executables to support PIE (position-independent executables). This enhances Android’s address space layout randomization (ASLR) implementation.
  • FORTIFY_SOURCE improvements. The following libc functions now implement FORTIFY_SOURCE protections: stpcpy(), stpncpy(), read(), recvfrom(), FD_CLR(), FD_SET(), and FD_ISSET(). This provides protection against memory-corruption vulnerabilities involving those functions.
  • Security Fixes. Android 5.0 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 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 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)