Android güvenlik modelinin bir parçası olarak Android, kök/süper kullanıcı ayrıcalıklarıyla (Linux yetenekleri) çalışan süreçler dahil tüm süreçlerde zorunlu erişim kontrolünü (MAC) uygulamak için Güvenliği Geliştirilmiş Linux (SELinux) kullanır. Birçok şirket ve kuruluş, Android'in SELinux uygulamasına katkıda bulunmuştur. SELinux ile Android, sistem hizmetlerini daha iyi koruyabilir ve sınırlayabilir, uygulama verilerine ve sistem günlüklerine erişimi kontrol edebilir, kötü amaçlı yazılımların etkilerini azaltabilir ve kullanıcıları mobil cihazlardaki olası kod kusurlarından koruyabilir.
SELinux, varsayılan reddetme ilkesine göre çalışır: Açıkça izin verilmeyen her şey reddedilir. SELinux iki global modda çalışabilir:
- İzin reddinin günlüğe kaydedildiği ancak zorunlu tutulmadığı izinli mod.
- İzin reddinin hem günlüğe kaydedildiği hem de uygulandığı zorlama modu.
Android, zorlama modunda SELinux'u ve AOSP'de varsayılan olarak çalışan ilgili bir güvenlik politikasını içerir. Zorlama modunda, izin verilmeyen eylemler engellenir ve tüm teşebbüs edilen ihlaller çekirdek tarafından
dmesg ve
logcat kaydedilir. Geliştirme yaparken, bunları uygulamadan önce yazılımınızı ve SELinux ilkelerinizi iyileştirmek için bu hataları kullanmalısınız. Daha fazla ayrıntı için bkz. SELinux'u Uygulama .
SELinux ayrıca, sistemin geri kalanını küresel zorlama moduna geçirirken belirli etki alanlarının (süreçlerin) izinli hale getirilebildiği etki alanı başına izinli bir modu da destekler. Etki alanı, aynı etki alanı ile etiketlenen tüm işlemlerin güvenlik politikası tarafından aynı şekilde ele alındığı, güvenlik politikasındaki bir işlemi veya bir dizi işlemi tanımlayan bir etikettir. Etki alanı başına izinli mod, SELinux'un sistemin sürekli artan bir bölümüne aşamalı olarak uygulanmasını ve yeni hizmetler için politika geliştirmeyi (sistemin geri kalanını zorunlu tutarken) sağlar.
Arka fon
Android güvenlik modeli, kısmen uygulama sanal alanları kavramına dayanmaktadır. Her uygulama kendi korumalı alanında çalışır. Android 4.3'ten önce, bu sanal alanlar, kurulum sırasında her uygulama için benzersiz bir Linux UID'si oluşturularak tanımlandı. Android 4.3 ve sonraki sürümleri, Android uygulama sanal alanının sınırlarını daha fazla tanımlamak için SELinux'u kullanır.
Android 5.0 ve sonraki sürümlerde, SELinux, Android 4.3'ün izin verilen sürümüne ve Android 4.4'ün kısmi uygulamasına dayalı olarak tamamen uygulanır. Bu değişiklikle birlikte Android, sınırlı bir dizi önemli etki alanında (
installd ,
netd ,
vold ve
zygote ) zorlamadan her şeye (60'tan fazla alan) geçti. özellikle:
- Android 5.x ve sonraki sürümlerde her şey zorlama modundadır.
-
initetki alanında
initdışında hiçbir işlem çalışmamalıdır.
- Herhangi bir genel reddetme (
block_device,
socket_device,
default_serviceiçin), cihazın özel bir etki alanına ihtiyacı olduğunu gösterir.
Android 6.0, kullanıcılar arasında daha iyi izolasyon, IOCTL filtreleme, açıkta kalan hizmetlere yönelik tehdidin azaltılması, SELinux etki alanlarının daha da sıkılaştırılması ve son derece sınırlı
/proc erişimini içerecek şekilde politikamızın izin verilebilirliğini azaltarak sistemi sağlamlaştırdı.
Android 7.0, uygulama sanal alanını daha da kilitlemek ve saldırı yüzeyini azaltmak için SELinux yapılandırmasını güncelledi. Bu sürüm ayrıca izinlerin kapsamını azaltmak için monolitik medya sunucusu yığınını daha küçük işlemlere böldü. Daha fazla ayrıntı için, bkz. Android'i daha fazla Linux çekirdeği savunmasıyla koruma ve Medya yığınını sağlamlaştırma .
Android 8.0, SELinux'u, alt düzey satıcı kodunu Android sistem çerçevesinden ayıran Treble ile çalışacak şekilde güncelledi. Bu sürüm, cihaz üreticilerinin ve
boot.img satıcılarının politikanın kendi bölümlerini güncellemelerine, görüntülerini oluşturmalarına (
vendor.img .
Cihazda daha yüksek/daha yeni platform (çerçeve) sürümü çalıştırmak mümkün olsa da, tersi durum desteklenmemektedir; satıcı resimleri (
vendor.img/odm.img ) platformdan (
system.img ) daha yeni bir sürüme sahip olamaz. Bu nedenle, platform SELinux ilkesi, ilkenin satıcı SELinux bölümlerinden daha yeni bir sürümde olduğundan, daha yeni bir platform sürümü SELinux uyumluluk sorunlarına neden olabilir. Android 8.0 modeli, gereksiz eşzamanlı OTA'ları önlemek için uyumluluğu korumak için bir yöntem sağlar.
Ek kaynaklar
Yararlı SELinux ilkeleri oluşturma konusunda yardım için aşağıdaki kaynaklara bakın. Bazı SELinux kavramları Android tarafından kullanılmaz, harici belgeleri değerlendirirken Özgüllük bölümüne bakın.
- SELinux Notebook , SELinux için güncel referans. Politika dili, her bir anahtar kelimenin anlamı ve güvenlik bağlamlarının nasıl hesaplandığı hakkında daha fazla ayrıntı içerir.
- SELinux ilke uygulaması için görsel nasıl yapılır kılavuzunuz
- Linux için Güvenlik Geliştirmeleri
- Gelişmiş Güvenlik (SE) Android: Android'e Esnek MAC Getirme
- SELinux'u Linux Güvenlik Modülü Olarak Uygulamak
- SELinux Politikasını Yapılandırma