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
每个 Android 版本中都包含数十种安全增强功能,以保护用户。以下是 Android 14 中提供的一些主要安全增强功能:
- Android 10 中引入的硬件辅助 AddressSanitizer (HWASan) 是一款类似于 AddressSanitizer 的内存错误检测工具。Android 14 对 HWASan 进行了重大改进。如需了解它如何帮助防止 bug 进入 Android 版本,请访问 HWAddressSanitizer
- 在 Android 14 中,从与第三方共享位置数据的应用开始,系统运行时权限对话框现在包含一个可点击的部分,用于突出显示应用的数据分享做法,包括诸如以下信息:应用为什么可能会决定与第三方分享数据。
- Android 12 引入了在调制解调器级别停用 2G 支持的选项,以保护用户免受 2G 的过时安全模型固有的安全风险的影响。认识到停用 2G 对企业客户的重要性后,Android 14 在 Android Enterprise 中启用了此安全功能,以便 IT 管理员能够限制受管设备降级到 2G 连接。
- 开始支持拒绝未加密的移动网络连接,确保电路交换语音和短信流量始终会加密,并可防范被动无线拦截。详细了解 Android 的移动网络连接强化计划。
- 新增了对多个 IMEI 的支持
- 从 Android 14 开始,AES-HCTR2 是采用加速加密指令的设备的首选文件名加密模式。
- 移动网络连接
- 在 Android 安全中心添加了相关文档
- 如果您的应用以 Android 14 为目标平台并使用动态代码加载 (DCL) 功能,则必须将所有动态加载的文件标记为只读。否则,系统会抛出异常。我们建议应用尽可能避免动态加载代码,因为这样做会大大增加应用因代码注入或代码篡改而遭到入侵的风险。
Android 13
Ogni release di Android include dozzine di miglioramenti della sicurezza per proteggere gli utenti. Ecco alcuni dei principali miglioramenti alla sicurezza disponibili in Android 13:
- Android 13 aggiunge il supporto delle presentazioni con più documenti. Questa nuova interfaccia Sessione di presentazione consente a un'app di eseguire una presentazione di più documenti, cosa non possibile con l'API esistente. Per ulteriori informazioni, consulta Documento di identità
- In Android 13, gli intent provenienti da app esterne vengono inviati a un componente esportato se e solo se corrispondono ai relativi elementi di filtro intent dichiarati.
- Open Mobile API (OMAPI) è un'API standard utilizzata per comunicare con l'elemento di sicurezza di un dispositivo. Prima di Android 13, solo le app e i moduli del framework avevano accesso a questa interfaccia. Se la converti in un'interfaccia stabile del fornitore, i moduli HAL sono in grado di comunicare anche con gli elementi di sicurezza tramite il servizio OMAPI. Per ulteriori informazioni, consulta OMAPI Vendor Stable Interface.
- A partire da Android 13-QPR, gli UID condivisi sono deprecati. Gli utenti di Android 13 o versioni successive devono inserire la riga `android:sharedUserMaxSdkVersion="32"` nel file manifest. Questa voce impedisce ai nuovi utenti di ottenere un UID condiviso. Per ulteriori informazioni sugli UID, consulta Firma dell'app.
- Android 13 ha aggiunto il supporto delle primitive di crittografia simmetrica del Keystore, come AES (Advanced Encryption Standard), HMAC (Keyed-Hash Message Authentication Code) e algoritmi di crittografia asimmetrica (incluse le curve ellittiche, RSA2048, RSA4096 e Curve 25519).
- Android 13 (livello API 33) e versioni successive supportano un'autorizzazione di runtime per l'invio di notifiche non esenti da un'app. In questo modo, gli utenti hanno il controllo sulle notifiche di autorizzazione che visualizzano.
- È stata aggiunta la richiesta per uso singolo per le app che richiedono l'accesso a tutti i log del dispositivo, consentendo agli utenti di consentire o negare l'accesso.
- ha introdotto il Framework di virtualizzazione di Android (AVF), che riunisce diversi hypervisor in un unico framework con API standardizzate. Fornisce ambienti di esecuzione sicuri e privati per l'esecuzione di carichi di lavoro isolati dall'hypervisor.
- È stato introdotto lo schema di firma dell'APK v3.1 Per impostazione predefinita, tutte le nuove rotazioni delle chiavi che utilizzano apksigner utilizzano lo schema di firma v3.1 per la rotazione target per Android 13 e versioni successive.
Consulta le nostre note di rilascio complete di AOSP e l'elenco di funzionalità e modifiche di Android for Developers.
Android 12
Ogni release di Android include decine di miglioramenti della sicurezza per proteggere gli utenti. Di seguito sono riportati alcuni dei principali miglioramenti della sicurezza disponibili in Android 12:
- Android 12 introduce l'API BiometricManager.Strings, che fornisce stringhe localizzate per le app che utilizzano BiometricPrompt per l'autenticazione. Queste stringhe sono pensate per essere specifiche per il dispositivo e fornire maggiori dettagli sui tipi di autenticazione che potrebbero essere utilizzati. Android 12 include anche il supporto per i sensori di impronte digitali integrati nel display
- È stato aggiunto il supporto per i sensori di impronte digitali integrati nel display
- Introduzione di Fingerprint Android Interface Definition Language (AIDL)
- Supporto per il nuovo AIDL Face
- Introduzione di Rust come linguaggio per lo sviluppo della piattaforma
- Aggiunta dell'opzione per gli utenti di concedere l'accesso solo alla propria posizione approssimativa
- Sono stati aggiunti indicatori della privacy nella barra di stato quando un'app utilizza la fotocamera o il microfono
- Private Compute Core (PCC) di Android
- Aggiunta di un'opzione per disattivare il supporto 2G
Android 11
Ogni release di Android include dozzine di miglioramenti della sicurezza per proteggere gli utenti. Per un elenco di alcuni dei principali miglioramenti alla sicurezza disponibili in Android 11, consulta le Note di rilascio di Android.
Android 10
Ogni release di Android include dozzine di miglioramenti della sicurezza per proteggere gli utenti. Android 10 include diversi miglioramenti in termini di sicurezza e privacy. Consulta le note di rilascio di Android 10 per un elenco completo delle modifiche in Android 10.
Sicurezza
BoundsSanitizer
Android 10 implementa BoundsSanitizer (BoundSan) in Bluetooth e codec. BoundSan utilizza lo strumento di contenimento dei limiti di UBSan. Questa mitigazione è attivata a livello di modulo. Contribuisce a mantenere al sicuro i componenti critici di Android e non deve essere disattivato. BoundSan è abilitato nei seguenti codec:
libFLAClibavcdeclibavcenclibhevcdeclibmpeg2libopuslibvpxlibspeexresamplerlibvorbisideclibaaclibxaac
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:
libFLAClibavcdeclibavcenclibhevcdeclibmpeg2libopuslibvpxlibspeexresamplerlibvorbisidec
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 �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>perACCESS_FINE_LOCATIONoACCESS_COARSE_LOCATION, il sistema aggiunge automaticamente un elemento<uses-permission>perACCESS_BACKGROUND_LOCATIONdurante l'installazione. - Se la tua app richiede
ACCESS_FINE_LOCATIONoACCESS_COARSE_LOCATION, il sistema aggiunge automaticamenteACCESS_BACKGROUND_LOCATIONalla 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, impostatargetSdkVersionocompileSdkVersiondella tua app su29o 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_STATEautorizzazione privilegiata per accedere agli identificatori non reimpostabili del dispositivo, inclusi IMEI e numero di serie.
BuildTelephonyManager
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
nullo 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
每个 Android 版本中都包含数十种用于保护用户的安全增强功能。以下是 Android 6.0 中提供的一些主要安全增强功能:
- 运行时权限:应用在运行时请求权限,而不是在安装时被授予权限。用户可以为 M 及更低版本的 Android 应用启用和停用权限。
- 验证启动:在执行系统软件之前,先对其进行一系列加密检查,以确保手机从引导加载程序到操作系统均处于正常状况。
- 硬件隔离安全措施:新的硬件抽象层 (HAL),Fingerprint API、锁定屏幕、设备加密功能和客户端证书可以利用它来保护密钥免遭内核入侵和/或现场攻击。
- 指纹:现在,只需触摸一下,即可解锁设备。开发者还可以借助新的 API 来使用指纹锁定和解锁加密密钥。
- 加装 SD 卡:可将移动媒体设备加装到设备上,以便扩展可用存储空间来存放本地应用数据、照片、视频等内容,但仍受块级加密保护。
- 明文流量:开发者可以使用新的 StrictMode 来确保其应用不会使用明文。
- 系统加固:通过由 SELinux 强制执行的政策对系统进行加固。这可以实现更好的用户隔离和 IOCTL 过滤、降低可从设备/系统之外访问的服务面临的威胁、进一步强化 SELinux 域,以及高度限制对 /proc 的访问。
- USB 访问控制:必须由用户确认是否允许通过 USB 访问手机上的文件、存储空间或其他功能。现在,默认设置是“仅充电”,如果要访问存储空间,必须获得用户的明确许可。
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
scrypte, 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
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.4:
- Sandbox Android rafforzata con SELinux. Android ora utilizza SELinux in modalità di applicazione. SELinux è un sistema di controllo dell'accesso obbligatorio (MAC) nel kernel di Linux utilizzato per migliorare il modello di sicurezza basato sul controllo dell'accesso discrezionale (DAC) esistente. Ciò fornisce una protezione aggiuntiva contro potenziali vulnerabilità di sicurezza.
- VPN per utente. Sui dispositivi multiutente, le VPN vengono ora applicate per utente. In questo modo, un utente può instradare tutto il traffico di rete tramite una VPN senza influire sugli altri utenti del dispositivo.
- Supporto del provider ECDSA in AndroidKeyStore. Android ora dispone di un provider di keystore che consente l'utilizzo degli algoritmi ECDSA e DSA.
- Avvisi relativi al monitoraggio del dispositivo. Android fornisce agli utenti un avviso se è stato aggiunto al magazzino dei certificati del dispositivo un certificato che potrebbe consentire il monitoraggio del traffico di rete criptato.
- FORTIFY_SOURCE. Android ora supporta il livello 2 di FORTIFY_SOURCE e tutto il codice viene compilato con queste protezioni. FORTIFY_SOURCE è stato migliorato per funzionare con clang.
- Blocco dei certificati. Android 4.4 rileva e impedisce 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 nell'Android Open Source Project. Per migliorare la sicurezza, alcune versioni precedenti di Android potrebbero includere anche queste correzioni.
每个 Android 版本中都包含数十项用于保护用户的安全增强功能。以下是 Android 4.3 中提供的一些安全增强功能:
- 通过 SELinux 得到增强的 Android 沙盒。此版本利用 Linux 内核中的 SELinux 强制访问权限控制系统 (MAC) 增强了 Android 沙盒。SELinux 强化功能(用户和开发者看不到它)可提高现有 Android 安全模型的可靠性,同时与现有应用保持兼容。为了确保持续兼容,此版本允许以宽容模式使用 SELinux。此模式会记录所有违反政策的行为,但不会中断应用,也不会影响系统行为。
- 没有
setuid或setgid程序。针对 Android 系统文件添加了对文件系统功能的支持,并移除了所有setuid或setgid程序。这可以减小 Root 攻击面,并降低出现潜在安全漏洞的可能性。 - ADB 身份验证。从 Android 4.2.2 起,开始使用 RSA 密钥对为 ADB 连接进行身份验证。这可以防止攻击者在实际接触到设备的情况下未经授权使用 ADB。
- 限制 Android 应用执行 SetUID 程序。
/system分区现在针对 Zygote 衍生的进程装载了 nosuid,以防止 Android 应用执行setuid程序。这可以减小 root 攻击面,并降低出现潜在安全漏洞的可能性。 - 功能绑定。在执行应用之前,Android Zygote 和 ADB 现在会先使用
prctl(PR_CAPBSET_DROP)舍弃不必要的功能。这可以防止 Android 应用和从 shell 启动的应用获取特权功能。 - AndroidKeyStore 提供程序。Android 现在有一个允许应用创建专用密钥的密钥库提供程序。该程序可以为应用提供一个用于创建或存储私钥的 API,其他应用将无法使用这些私钥。
- KeyChain
isBoundKeyAlgorithm。Keychain API 现在提供了一种方法 (isBoundKeyType),可让应用确认系统级密钥是否已绑定到设备的硬件信任根。该方法提供了一个用于创建或存储私钥的位置,即使发生 root 权限被窃取的情况,这些私钥也无法从设备中导出。 NO_NEW_PRIVS。Android Zygote 现在会在执行应用代码之前使用prctl(PR_SET_NO_NEW_PRIVS)禁止添加新权限。这可以防止 Android 应用执行可通过 execve 提升权限的操作。(此功能需要使用 3.5 或更高版本的 Linux 内核)。FORTIFY_SOURCE增强。在 Android x86 和 MIPS 上启用了FORTIFY_SOURCE,并增强了strchr()、strrchr()、strlen()和umask()调用。这可以检测潜在的内存损坏漏洞或没有结束符的字符串常量。- 重定位保护。针对静态关联的可执行文件启用了只读重定位 (relro) 技术,并移除了 Android 代码中的所有文本重定位技术。这可以纵深防御潜在的内存损坏漏洞。
- 经过改进的 EntropyMixer。除了定期执行混合操作之外,EntropyMixer 现在还会在关机或重新启动时写入熵。这样一来,便可以保留设备开机时生成的所有熵,而这对于配置之后立即重新启动的设备来说尤其有用。
- 安全修复程序。Android 4.3 中还包含针对 Android 特有漏洞的修复。有关这些漏洞的信息已提供给“开放手机联盟”(Open Handset Alliance) 成员,并且 Android 开放源代码项目中提供了相应的修复。为了提高安全性,搭载更低版本 Android 的某些设备可能也会包含这些修复。
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
installdnon viene eseguito come utenteinstalld, riducendo la potenziale superficie di attacco per l'escalation dei privilegi diinstalld. - Ottimizzazione script di inizializzazione: gli script di inizializzazione ora applicano la semantica
O_NOFOLLOWper difendersi dagli attacchi correlati ai link simbolici. FORTIFY_SOURCE: ora Android implementaFORTIFY_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
exportimpostato sufalseper 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)