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.

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.

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.

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 版本中都包含数十项用于保护用户的安全增强功能。如需查看 Android 11 中提供的一些主要安全增强功能的列表,请参阅 Android 版本说明

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:

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 版本中都包含数十种用于保护用户的安全增强功能。以下是 Android 8.0 中提供的一些主要安全增强功能:

  • 加密:在工作资料中增加了对撤销密钥 (evict key) 的支持。
  • 验证启动:增加了 Android 启动时验证 (AVB)。支持回滚保护(用于引导加载程序)的启动时验证代码库已添加到 AOSP 中。建议提供引导加载程序支持,以便为 HLOS 提供回滚保护。建议将引导加载程序设为只能由用户通过实际操作设备来解锁。
  • 锁定屏幕:增加了对使用防篡改硬件验证锁定屏幕凭据的支持。
  • KeyStore:搭载 Android 8.0 及更高版本的所有设备都需要进行密钥认证。增加了 ID 认证支持,以改进零触摸注册计划。
  • 沙盒:使用 Treble 计划的框架和设备特定组件之间的标准接口更紧密地对许多组件进行沙盒化处理。将 seccomp 过滤应用到了所有不信任的应用,以减少内核的攻击面。WebView 现在运行在一个独立的进程中,对系统其余部分的访问非常有限。
  • 内核加固:实现了经过安全强化的 usercopy、PAN 模拟、初始化后变为只读以及 KASLR。
  • 用户空间安全强化:为媒体堆栈实现了 CFI。 应用叠加层不能再遮盖系统关键窗口,并且用户可以关闭这些叠加层。
  • 操作系统流式更新:在磁盘空间不足的设备上启用了更新
  • 安装未知应用:用户必须授予权限,系统才能从不是第一方应用商店的来源安装应用。
  • 隐私权:对于设备上的每个应用和使用设备的每个用户,Android ID (SSAID) 都采用不同的值。对于网络浏览器应用,Widevine 客户端 ID 会针对每个应用软件包名称和网络来源返回不同的值。 net.hostname 现在为空,并且 DHCP 客户端不再发送主机名。android.os.Build.SERIAL 已被替换为 Build.SERIAL API(受到用户控制权限的保护)。改进了某些芯片组中的 MAC 地址随机分配功能。

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.

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

  • Autorizzazioni di runtime. Le app richiedono le autorizzazioni in fase di esecuzione anziché al momento dell'installazione. Gli utenti possono attivare/disattivare le autorizzazioni sia per le app M sia per quelle pre-M.
  • Avvio verificato. Prima dell'esecuzione viene eseguito un insieme di controlli crittografici del software di sistema per garantire che lo smartphone sia integro dal bootloader fino al sistema operativo.
  • Sicurezza con isolamento hardware. Nuovo livello di astrazione hardware (HAL) utilizzato dall'API Fingerprint, dalla schermata di blocco, dalla crittografia del dispositivo e dai certificati client per proteggere le chiavi da compromissione del kernel e/o attacchi fisici locali
  • Impronte digitali. Ora i dispositivi possono essere sbloccati con un solo tocco. Gli sviluppatori possono anche usufruire delle nuove API per utilizzare le impronte digitali per bloccare e sbloccare le chiavi di crittografia.
  • Adesione alla scheda SD. I dispositivi multimediali rimovibili possono essere adottati su un dispositivo ed espandere lo spazio di archiviazione disponibile per i dati locali delle app, foto, video e così via, ma essere comunque protetti dalla crittografia a livello di blocco.
  • Traffico di testo non cifrato. Gli sviluppatori possono utilizzare un nuovo StrictMode per assicurarsi che la loro app non utilizzi il testo non cifrato.
  • Ottimizzazione del sistema. Rafforzamento del sistema tramite criteri applicati da SELinux. In questo modo viene offerto un migliore isolamento tra gli utenti, il filtro IOCTL, la riduzione della minaccia dei servizi esposti, un ulteriore rafforzamento dei domini SELinux e un accesso estremamente limitato a /proc.
  • Controllo dell'accesso USB: gli utenti devono confermare di consentire l'accesso USB a file, spazio di archiviazione o altre funzionalità sullo smartphone. Il valore predefinito ora è solo addebito con accesso allo spazio di archiviazione che richiede l'approvazione esplicita dell'utente.

5,0

每个 Android 版本中都包含数十项用于保护用户的安全增强功能。以下是 Android 5.0 中提供的一些主要安全增强功能:

  • 默认加密。在以开箱即用的方式搭载 L 的设备上,会默认启用全盘加密功能,以便更好地保护丢失设备或被盗设备上的数据。对于更新到 L 的设备,可以在设置 > 安全性部分进行加密。
  • 经过改进的全盘加密功能。使用 scrypt 保护用户密码免遭暴力破解攻击;在可能的情况下,该密钥会绑定到硬件密钥库,以防范来自设备外的攻击。 和以往一样,Android 屏幕锁定密钥和设备加密密钥不会被发送到设备以外,也不会提供给任何应用。
  • 通过 SELinux 得到增强的 Android 沙盒。对于所有域,Android 现在都要求 SELinux 处于强制模式。SELinux 是 Linux 内核中的强制访问控制 (MAC) 系统,用于增强现有的自主访问控制 (DAC) 安全模型。这个新的安全层为防范潜在的安全漏洞提供了额外的保护屏障。
  • Smart Lock。Android 现在包含一些 Trustlet,它们可以提供更灵活的设备解锁方式。 例如,Trustlet 可让设备在靠近其他可信设备时自动解锁(通过 NFC、蓝牙),或让设备在用户拥有可信面孔时自动解锁。
  • 面向手机和平板电脑的多用户功能、受限个人资料和访客模式。Android 现在为手机提供了多用户功能,并包含一个访客模式。利用访客模式,您可以让访客轻松地临时使用您的设备,而不向他们授予对您的数据和应用的访问权限。
  • 不使用 OTA 的 WebView 更新方式。现在可以独立于框架对 WebView 进行更新,而且无需采用系统 OTA 方式。 这有助于更快速地应对 WebView 中的潜在安全问题。
  • 经过更新的 HTTPS 和 TLS/SSL 加密功能。现在启用了 TLSv1.2 和 TLSv1.1,首选是正向加密,启用了 AES-GCM,停用了弱加密套件(MD5、3DES 和导出密码套件)。如需了解详情,请访问 https://developer.android.com/reference/javax/net/ssl/SSLSocket.html
  • 移除了非 PIE 链接器支持。Android 现在要求所有动态链接的可执行文件都要支持 PIE(位置无关可执行文件)。这有助于增强 Android 的地址空间布局随机化 (ASLR) 实现。
  • FORTIFY_SOURCE 改进。以下 libc 函数现在实现了 FORTIFY_SOURCE 保护功能:stpcpy()stpncpy()read()recvfrom()FD_CLR()FD_SET()FD_ISSET()。这有助于防范涉及这些函数的内存损坏漏洞。
  • 安全修复程序。Android 5.0 中还包含针对 Android 特有漏洞的修复程序。有关这些漏洞的信息已提供给“开放手机联盟”(Open Handset Alliance) 成员,并且 Android 开放源代码项目中提供了相应的修复程序。为了提高安全性,部分搭载更低版本 Android 系统的设备可能也会包含这些修复程序。

每个 Android 版本中都包含数十项用于保护用户的安全增强功能。以下是 Android 4.4 中提供的一些安全增强功能:

  • 通过 SELinux 得到增强的 Android 沙盒。 Android 现在以强制模式使用 SELinux。SELinux 是 Linux 内核中的强制访问控制 (MAC) 系统,用于增强基于自主访问控制 (DAC) 的现有安全模型。 这为防范潜在的安全漏洞提供了额外的保护屏障。
  • 按用户应用 VPN。 在多用户设备上,现在按用户应用 VPN。 这样一来,用户就可以通过一个 VPN 路由所有网络流量,而不会影响使用同一设备的其他用户。
  • AndroidKeyStore 中的 ECDSA 提供程序支持。 Android 现在有一个允许使用 ECDSA 和 DSA 算法的密钥库提供程序。
  • 设备监测警告。 如果有任何可能允许监测加密网络流量的证书添加到设备证书库中,Android 都会向用户发出警告。
  • FORTIFY_SOURCE。 Android 现在支持 FORTIFY_SOURCE 第 2 级,并且所有代码在编译时都会受到这些保护。FORTIFY_SOURCE 已得到增强,能够与 Clang 配合使用。
  • 证书锁定。 Android 4.4 能够检测安全的 SSL/TLS 通信中是否使用了欺诈性 Google 证书,并且能够阻止这种行为。
  • 安全修复程序。 Android 4.4 中还包含针对 Android 特有漏洞的修复程序。 有关这些漏洞的信息已提供给“开放手机联盟”(Open Handset Alliance) 成员,并且 Android 开源项目中提供了相应的修复程序。为了提高安全性,搭载更低版本 Android 的某些设备可能也会包含这些修复程序。

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 o setgid. È stato aggiunto il supporto delle funzionalità del file system ai file di sistema di Android e sono stati rimossi tutti i programmi setuid o setgid. 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 programmi setuid. 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 utilizza prctl(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 attivato FORTIFY_SOURCE su Android x86 e MIPS e sono state rinforzate le chiamate strchr(), strrchr(), strlen() e umask(). 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 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 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)