Google si impegna a far progredire equità razziale per le comunità nere. Vedi come.
Questa pagina è stata tradotta dall'API Cloud Translation.
Switch to English

Security-Enhanced Linux in Android

Come parte del Android modello di sicurezza , Android utilizza Security-Enhanced Linux (SELinux) per imporre il controllo di accesso obbligatorio (MAC) di tutti i processi, anche i processi in esecuzione con privilegi di root / superutente (capacità Linux). Molte aziende e organizzazioni hanno contribuito alla Android implementazione di SELinux . Con SELinux, Android può meglio proteggere e servizi di sistema Confine, controllare l'accesso ai dati delle applicazioni e dei log di sistema, ridurre gli effetti di software dannoso, e gli utenti a proteggere da potenziali falle nel codice su dispositivi mobili.

SELinux opera secondo il principio di negazione predefinita: Tutto quanto non esplicitamente consentito è negato. SELinux può operare in due modi globali:

  • Modalità permissiva, in cui smentite autorizzazione vengono registrati ma non applicate.
  • Modalità, in cui autorizzazioni smentite sono entrambi registrati e applicati enforcing.

Android include SELinux in modalità enforcing e un corrispondente politica di sicurezza che funziona per impostazione predefinita in tutto AOSP. In modalità enforcing, le azioni non consentiti sono impediti e di tutti tentativi di violazione vengono registrati dal kernel per dmesg e logcat . Durante lo sviluppo, è necessario utilizzare questi errori per perfezionare il software e le politiche di SELinux prima di farle rispettare. Per maggiori dettagli, vedere Implementazione SELinux .

SELinux supporta anche una modalità per ogni dominio permissiva in cui domini specifici (processi) possono essere effettuate permissiva pur ponendo il resto del sistema in modalità enforcing globale. Un dominio è semplicemente un'etichetta che identifica un processo o insieme di processi nella politica di sicurezza, in cui tutti i processi etichettati con lo stesso dominio vengono trattati nello stesso dalla politica di sicurezza. Per-dominio in modalità permissive consente l'applicazione incrementale di SELinux ad una porzione sempre maggiore del sistema e la politica di sviluppo di nuovi servizi (mantenendo il resto del enforcing sistema).

sfondo

Il modello di sicurezza di Android è in parte basato sul concetto di sandbox dell'applicazione . Ogni applicazione viene eseguita nella propria sandbox. Prima di Android 4.3, queste sandbox sono stati definiti con la creazione di un unico Linux UID per ogni applicazione al momento dell'installazione. Android 4.3 e successive usa SELinux per definire ulteriormente i limiti della sandbox dell'applicazione Android.

In Android 5.0 e versioni successive, SELinux è pienamente applicata, sulla base del rilascio permissiva di Android 4.3 e l'esecuzione parziale di Android 4.4. Con questa modifica, Android è passato da esecuzione su un numero limitato di domini cruciali ( installd , netd , vold e zygote ) a tutto (più di 60 domini). In particolare:

  • Tutto è in modalità enforcing in 5.xe Android e superiori.
  • Nessun processo diverso init dovrebbe correre nella init dominio.
  • Qualsiasi rifiuto generico (per un block_device , socket_device , default_service ) indica che il dispositivo ha bisogno di un dominio speciale.

Android 6.0 indurito il sistema riducendo il permissivismo della nostra politica per includere un migliore isolamento tra gli utenti, il filtraggio IOCTL, ridotta minaccia di servizi esposti, ulteriore inasprimento dei domini di SELinux, ed estremamente limitato /proc accesso.

Android 7.0 aggiornamento di configurazione di SELinux ad un ulteriore blocco verso il basso sandbox dell'applicazione e ridurre la superficie di attacco. Questa versione ha anche rotto lo stack MediaServer monolitica in processi più piccoli per ridurre la portata delle relative autorizzazioni. Per ulteriori dettagli, vedere Protezione Android con più difese del kernel Linux e l'indurimento della risma .

Android 8.0 aggiornato SELinux di lavoro con alti , che separa il codice fornitore di livello inferiore dal quadro sistema Android. Questa versione aggiornata policy SELinux per consentire produttori di dispositivi e SOC fornitori di aggiornare le loro parti della politica, costruire le loro immagini ( vendor.img , boot.img , ecc), quindi aggiornare quelle immagini indipendenti dalla piattaforma o viceversa.

Mentre è possibile avere maggiori / piattaforma più recente (quadro) versione in esecuzione sul dispositivo, il caso opposto non è supportato; le immagini vendor ( vendor.img/odm.img ) non possono avere una versione più recente rispetto alla piattaforma ( system.img ). Quindi, una versione più recente della piattaforma potrebbe introdurre problemi di compatibilità SELinux perché la politica piattaforma di SELinux è a una versione più recente di parti fornitore SELinux della politica. Il modello Android 8.0 fornisce un metodo per mantenere la compatibilità per evitare inutili OTA simultanei.

Risorse addizionali

Per informazioni costruire politiche di SELinux utili, fare riferimento alle seguenti risorse: