GPU syscall ফিল্টারিং

অ্যান্ড্রয়েড ১৬ কিউপিআর২ কার্নেল ড্রাইভারকে আরও সুরক্ষিত করতে একটি এসইএলিনাক্স ম্যাক্রো যুক্ত করেছে। এই ম্যাক্রোটি প্রোডাকশন পর্যায়ে সীমাবদ্ধ আইওসিটিএল (IOCTL) ব্লক করে, যেমন ডেপ্রিকেটেড আইওসিটিএল বা কার্নেল ড্রাইভার ডেভেলপমেন্টের জন্য ব্যবহৃত আইওসিটিএল। এটি ড্রাইভার প্রোফাইলিংয়ের জন্য ব্যবহৃত আইওসিটিএল-কে শেল বা ডিবাগযোগ্য অ্যাপের মধ্যে সীমাবদ্ধ রাখে। আপনার ডিভাইসের নিরাপত্তা বাড়াতে এই ম্যাক্রোটি ব্যবহার করুন।

বাস্তবায়ন

সূক্ষ্ম সিস্টেম কল ফিল্টারিংয়ের মাধ্যমে আপনার ডিভাইসকে আরও সুরক্ষিত করতে, আপনার ডিভাইসের SEPolicy-তে set_xperm_filter ম্যাক্রোটি কল করুন, উদাহরণস্বরূপ:

# 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 6-9) ব্যবহারকারী পিক্সেল ডিভাইসগুলিতে প্রয়োগ করা হয়েছে। Arm তাদের r54p2 রিলিজের Documentation/ioctl-categories.rst ফাইলে তাদের IOCTL-গুলির আনুষ্ঠানিক শ্রেণিবিন্যাস প্রদান করেছে। ভবিষ্যতের ড্রাইভার রিলিজগুলিতে এই তালিকাটি রক্ষণাবেক্ষণ করা অব্যাহত থাকবে।

পরীক্ষা

কার্নেল ড্রাইভারের আচরণ যাচাই করতে নিম্নলিখিতগুলি করুন:

  • যাচাই করুন যে ড্রাইভারটি বৈধ অ্যাপ্লিকেশন IOCTL-গুলিকে ব্লক করছে না এবং,

  • যাচাই করুন যে অবিশ্বস্ত অ্যাপ্লিকেশনগুলি ইন্সট্রুমেন্টেশন এবং সীমাবদ্ধ IOCTL গুলি কার্যকর করতে পারে না।