Android 16 QPR2, çekirdek sürücüleri güçlendirmek için bir SELinux makrosu ekler. Bu makro, üretimde kısıtlanmış IOCTL'leri (ör. kullanımdan kaldırılan IOCTL'ler veya çekirdek sürücüsü geliştirmeye yönelik olanlar) engeller. Ayrıca, sürücü profil oluşturma için IOCTL'leri kabuk veya hata ayıklanabilir uygulamalarla sınırlar. Cihazınızın güvenliğini artırmak için bu makroyu kullanın.
Uygulama
Cihazınızı ayrıntılı syscall filtreleme ile korumak için cihazınızın SEPolicy'sinde set_xperm_filter makrosunu çağırın. Örneğin:
# set_xperm_filter(target_context, allowed_target, unpriv_ioctls, restricted_ioctls, instrumentation_ioctls)
# Allow targets to harden their IOCTL interfaces by specifying
# unprivileged, blocked, and instrumentation-specific IOCTLs for appdomain.
#
# Parameters:
# target_context: The target context to apply the filter to.
# allowed_target: Additional `appdomain` target to exempt from hardened policy.
# Allows for an allowlist of services, or gating by a target SDK.
# unpriv_ioctls: IOCTLs to allow across appdomain.
# restricted_ioctls: IOCTLs to deny across appdomain.
# instrumentation_ioctls: IOCTLs intended to be used in development.
# IOCTLs will be allowed from `shell` or `debuggable` applications.
define(`unpriv_gpu_ioctls', `0x0000, 0x0001, 0x0002')
define(`restricted_ioctls', `0x1110, 0x1111, 0x1112')
define(`instrumentation_gpu_ioctls', `0x2220, 0x2221, 0x2222')
set_xperm_filter(
gpu_device,
untrusted_app_sdk_gate,
unpriv_ioctls,
restricted_ioctls,
instrumentation_ioctls)
set_xperm_filter makrosunun tanımı system/sepolicy/public/te_macros içinde yer alıyor.
Makro, unpriv_ioctls öğesine izin verir, restricted_ioctls öğesini engeller ve instrumentation_ioctls öğesini shell işlemi veya debuggable uygulamalarıyla sınırlar. Filtre, belirtilen bir target_sdk ile başlayan uygulamalar için geçerlidir.
Bu özellik, Mali GPU'yu kullanan Pixel cihazlarda (Pixel 6-9) uygulanmıştır. Arm, r54p2 sürümündeki Documentation/ioctl-categories.rst dosyasında IOCTL'lerinin resmi sınıflandırmasını sağlamıştır.
Bu liste, gelecekteki sürücü sürümlerinde güncellenmeye devam edecektir.
Test
Çekirdek sürücüsünün davranışını doğrulamak için aşağıdakileri yapın:
Sürücünün, geçerli uygulama IOCTL'lerini engellemediğini ve
Güvenilmeyen uygulamaların enstrümantasyon ve kısıtlanmış IOCTL'ler yürütemediğini doğrulayın.