Android 16 QPR2 bổ sung một macro SELinux để tăng cường bảo mật cho trình điều khiển nhân. Macro này chặn các IOCTL bị hạn chế trong quá trình sản xuất, chẳng hạn như các IOCTL không dùng nữa hoặc các IOCTL dành cho quá trình phát triển trình điều khiển hạt nhân. Thao tác này cũng giới hạn IOCTL cho việc lập hồ sơ trình điều khiển đối với các ứng dụng có thể gỡ lỗi hoặc shell. Hãy dùng macro này để tăng cường tính bảo mật cho thiết bị của bạn.
Triển khai
Để tăng cường bảo mật cho thiết bị bằng tính năng lọc lệnh gọi hệ thống chi tiết, hãy gọi macro set_xperm_filter trong SEPolicy của thiết bị, ví dụ:
# 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)
Định nghĩa macro cho set_xperm_filter nằm trong system/sepolicy/public/te_macros.
Macro này cho phép unpriv_ioctls, chặn restricted_ioctls và giới hạn instrumentation_ioctls đối với quy trình shell hoặc ứng dụng debuggable. Bộ lọc này áp dụng cho những ứng dụng bắt đầu từ một target_sdk cụ thể.
Tính năng này đã được triển khai trên các thiết bị Pixel sử dụng GPU Mali (Pixel 6-9). Arm đã cung cấp danh mục chính thức về các IOCTL trong Documentation/ioctl-categories.rst của bản phát hành r54p2.
Danh sách này sẽ tiếp tục được duy trì trong các bản phát hành trình điều khiển trong tương lai.
Kiểm tra
Hãy làm như sau để xác minh hành vi của trình điều khiển nhân:
Kiểm tra để đảm bảo trình điều khiển không chặn các IOCTL ứng dụng hợp lệ và
Xác minh rằng các ứng dụng không đáng tin cậy không thể thực thi hoạt động đo lường và IOCTL bị hạn chế.