Android 16 QPR2 menambahkan makro SELinux untuk memperkuat driver kernel. Makro ini memblokir IOCTL yang dibatasi dalam produksi, seperti IOCTL yang tidak digunakan lagi atau IOCTL untuk pengembangan driver kernel. Hal ini juga membatasi IOCTL untuk pembuatan profil driver ke aplikasi shell atau yang dapat di-debug. Gunakan makro ini untuk meningkatkan keamanan perangkat Anda.
Implementasi
Untuk memperkuat perangkat Anda dengan pemfilteran syscall terperinci, panggil makro
set_xperm_filter di SEPolicy perangkat Anda, misalnya:
# 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)
Definisi makro untuk set_xperm_filter ada di
system/sepolicy/public/te_macros.
Makro ini mengizinkan unpriv_ioctls, memblokir restricted_ioctls, dan membatasi
instrumentation_ioctls ke proses shell atau aplikasi debuggable. Filter
berlaku untuk aplikasi yang dimulai dari target_sdk tertentu.
Fitur ini telah diterapkan di perangkat Pixel yang menggunakan GPU Mali (Pixel
6-9). Arm telah memberikan kategorisasi resmi IOCTL mereka di
Documentation/ioctl-categories.rst rilis r54p2 mereka.
Daftar ini akan terus dipertahankan dalam rilis driver mendatang.
Tes
Lakukan hal berikut untuk memverifikasi perilaku driver kernel:
Pastikan driver tidak memblokir IOCTL aplikasi yang sah dan,
Memastikan bahwa aplikasi yang tidak tepercaya tidak dapat menjalankan instrumentasi dan IOCTL yang dibatasi.