Android'de Güvenliği Geliştirilmiş Linux

Android güvenlik modelinin bir parçası olarak Android, tüm işlemler, hatta kök / süper kullanıcı ayrıcalıklarıyla çalışan işlemler (Linux yetenekleri) üzerinde zorunlu erişim denetimi (MAC) uygulamak için Güvenliği Geliştirilmiş Linux (SELinux) kullanır. Android'in SELinux uygulamasına birçok şirket ve kuruluş katkıda bulunmuştur. SELinux ile Android, sistem hizmetlerini daha iyi koruyabilir ve sınırlandırabilir, 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 red 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 zorlanmadığı müsaadeli mod.
  • İzinleri inkar hem kaydedilir ve yürürlüğe konulduğu modunu Bağlayıcılığı.

Android, uygulama modunda SELinux'u ve AOSP genelinde varsayılan olarak çalışan ilgili bir güvenlik politikasını içerir. Zorlama modunda, izin verilmeyen eylemler engellenir ve tüm ihlal girişimleri çekirdek tarafından dmesg ve logcat . Geliştirme sırasında, yazılımınızı ve SELinux ilkelerinizi uygulamadan önce 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ı global uygulama moduna yerleştirirken belirli alanların (işlemlerin) izin verilebilir hale getirilebildiği alan başına izin verilen bir modu destekler. Bir etki alanı, aynı etki alanıyla etiketlenen tüm işlemlerin güvenlik ilkesi tarafından aynı şekilde ele alındığı güvenlik ilkesindeki bir süreci veya süreçler kümesini tanımlayan basit bir etikettir. Etki alanı başına izin verme modu, SELinux'un sistemin sürekli artan bir kısmına kademeli olarak uygulanmasını ve yeni hizmetler için politika geliştirmesini sağlar (sistemin geri kalanını zorlarken).

Arka fon

Android güvenlik modeli kısmen uygulama sanal alanları kavramına dayanmaktadır. Her uygulama kendi sanal alanında çalışır. Android 4.3'ten önce, bu sanal alanlar, kurulum sırasında her uygulama için benzersiz bir Linux UID oluşturulmasıyla tanımlanıyordu. Android 4.3 ve sonraki sürümler, Android uygulama sanal alanının sınırlarını daha fazla tanımlamak için SELinux 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ısmen uygulanmasına dayalı olarak tamamen uygulanmaktadır. Bu değişiklikle Android, sınırlı sayıda önemli alan installd ( installd , netd , vold ve zygote ) uygulamadan her şeye (60'tan fazla alan adı) geçti. Özellikle:

  • Android 5.x ve sonraki sürümlerde her şey zorlama modunda.
  • init dışında hiçbir işlem init etki alanında çalışmamalıdır.
  • Herhangi bir genel reddetme ( block_device , socket_device , default_service ) aygıtın özel bir etki alanına ihtiyacı olduğunu gösterir.

Android 6.0, politikamızın izin verebilirliğini, kullanıcılar arasında daha iyi izolasyon, IOCTL filtreleme, maruz kalan hizmetlerin azaltılmış tehdidi, SELinux alanlarının daha da sıkılaştırılması ve son derece sınırlı /proc erişimini içerecek şekilde azaltarak sistemi güçlendirdi.

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, izinlerinin kapsamını azaltmak için monolitik ortam sunucusu yığınını daha küçük süreçlere böldü. Daha fazla ayrıntı için bkz.Android'i daha fazla Linux çekirdek savunmasıyla koruma ve ortam yığınını güçlendirme .

Android 8.0, alt düzey satıcı kodunu Android sistem çerçevesinden ayıran Treble ile çalışacak şekilde SELinux'u güncelledi. Bu sürüm, SELinux politikasını, cihaz üreticilerinin ve SOC satıcılarının politikanın bölümlerini güncellemelerine, görüntülerini oluşturmalarına ( vendor.img , boot.img , vb.) Ve ardından bu görüntüleri platformdan bağımsız olarak güncellemelerine veya tam tersi şekilde güncellemelerine izin verecek şekilde güncelledi.

Cihazda daha yüksek / daha yeni platform (çerçeve) sürümünün çalışması mümkün olsa da, tersi durum desteklenmemektedir; satıcı görüntüleri ( vendor.img/odm.img ) platformdan ( system.img ) daha yeni bir sürüme sahip olamaz. Dolayısıyla, daha yeni bir platform sürümü SELinux uyumluluk sorunlarını ortaya çıkarabilir çünkü platform SELinux politikası, politikanın satıcı SELinux bölümlerinden daha yeni bir sürümdedir. 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 politikalarının oluşturulmasına yardımcı olması için aşağıdaki kaynaklara bakın: