يضيف الإصدار Android 16 QPR2 وحدة ماكرو SELinux لتشديد أمان برامج تشغيل النواة. يمنع هذا الماكرو استخدام IOCTLs المحظورة في الإصدارات العلنية، مثل IOCTLs المتوقّفة نهائيًا أو تلك الخاصة بتطوير برامج تشغيل النواة. ويقتصر استخدام IOCTLs لتحديد خصائص برامج التشغيل على التطبيقات التي يمكن تصحيح أخطائها أو تطبيقات shell. استخدِم هذا الماكرو لتعزيز أمان جهازك.
التنفيذ
لتشديد أمان جهازك باستخدام فلترة دقيقة الحبيبات لطلبات النظام، استخدِم الماكرو
set_xperm_filter في سياسة SEPolicy الخاصة بجهازك، على سبيل المثال:
# 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 في
system/sepolicy/public/te_macros.
يسمح الماكرو بـ unpriv_ioctls ويحظر restricted_ioctls ويضع حدودًا على instrumentation_ioctls في عملية shell أو تطبيقات debuggable. ينطبق الفلتر على التطبيقات التي تبدأ من target_sdk محدّد.
تم تنفيذ هذه الميزة على أجهزة Pixel التي تستخدم وحدة معالجة الرسومات Mali (من Pixel 6 إلى Pixel 9). قدّمت شركة Arm تصنيفًا رسميًا لرموز IOCTL في
Documentation/ioctl-categories.rst من الإصدار r54p2.
وسيتم مواصلة تحديث هذه القائمة في إصدارات برامج التشغيل المستقبلية.
الاختبار
اتّبِع الخطوات التالية للتحقّق من سلوك برنامج تشغيل النواة:
تأكَّد من أنّ برنامج التشغيل لا يحظر عمليات إدخال/إخراج التطبيقات المشروعة (IOCTL)،
تأكَّد من أنّه لا يمكن للتطبيقات غير الموثوق بها تنفيذ عمليات قياس الأداء وIOCTLs المحظورة.