فیلتر سیستم GPU

اندروید ۱۶ QPR2 یک ماکروی SELinux برای تقویت درایورهای هسته اضافه می‌کند. این ماکرو IOCTLهای محدود شده در محیط تولید، مانند IOCTLهای منسوخ شده یا آنهایی که برای توسعه درایور هسته استفاده می‌شوند را مسدود می‌کند. همچنین IOCTLهای مربوط به پروفایل درایور را به برنامه‌های پوسته یا اشکال‌زدایی شده محدود می‌کند. از این ماکرو برای افزایش امنیت دستگاه خود استفاده کنید.

پیاده‌سازی

برای مقاوم‌سازی دستگاه خود با فیلترینگ فراخوانی سیستمی دقیق، ماکروی 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 مشخص شروع می‌شوند، اعمال می‌شود.

این ویژگی روی دستگاه‌های پیکسل که از پردازنده گرافیکی Mali (پیکسل ۶-۹) استفاده می‌کنند، پیاده‌سازی شده است. آرم دسته‌بندی رسمی IOCTLهای خود را در Documentation/ioctl-categories.rst از نسخه r54p2 خود ارائه کرده است. این فهرست در نسخه‌های درایور آینده نیز حفظ خواهد شد.

تست

برای تأیید رفتار درایور هسته، موارد زیر را انجام دهید:

  • بررسی کنید که درایور، IOCTLهای برنامه‌های قانونی را مسدود نکند و،

  • تأیید کنید که برنامه‌های غیرقابل اعتماد نمی‌توانند ابزار دقیق و IOCTLهای محدود شده را اجرا کنند.