অতিরিক্ত নিরাপত্তা প্যাচ

ঝুঁকি-ভিত্তিক নিরাপত্তা আপডেটের অংশ হিসেবে অ্যান্ড্রয়েডের ক্রমাগত রিলিজ এবং ত্রৈমাসিক বুলেটিনের দিকে ঝোঁকার কারণে, OEM-রা পুরো একটি ত্রৈমাসিক অপেক্ষা না করে রিলিজের মধ্যবর্তী সময়ে দুর্বলতাগুলো ঠিক করতে চাইতে পারে। সাপ্লিমেন্টাল সিকিউরিটি প্যাচ XML ফিচারটি একটি প্রমিত XML ফাইল প্রদানের মাধ্যমে OEM-দেরকে ঘোষিত সিকিউরিটি প্যাচ লেভেল (SPL)-এর বাইরে প্যাচ করা CVE-গুলো রিপোর্ট করার সুযোগ দেয়, ফলে OEM-রা ক্রমাগত প্যাচিংয়ের জন্য স্বীকৃতি পায়।

উচ্চ স্তরের প্রবাহ

OEM সিস্টেম, ভেন্ডর এবং প্রোডাক্ট পার্টিশন থেকে AOSP ফ্রেমওয়ার্ক API-তে সম্পূরক নিরাপত্তা প্যাচ XML ডেটা প্রবাহ দেখানো ডায়াগ্রাম।

চিত্র ১. সম্পূরক নিরাপত্তা প্যাচসমূহের গঠন ও তথ্য প্রবাহ।

OEM-রা XML ফাইলটি একাধিক ডিভাইস পার্টিশনে ( /system , /vendor , বা /product ) রাখতে পারে, যা ফ্রেমওয়ার্ক এবং হার্ডওয়্যার-নির্দিষ্ট উভয় উপাদানের নিরাপত্তা প্যাচগুলোর অন্তর্ভুক্তি নিশ্চিত করে। XML ফাইলটি সংশ্লিষ্ট পার্টিশনের জন্য /etc/security/supplemental_security_patches.xml এ ইনস্টল করা উচিত।

প্ল্যাটফর্মটি এই ডিভাইস পার্টিশনগুলো থেকে CVE ডেটা একত্রিত করে এবং সেগুলোকে প্ল্যাটফর্ম API ও Jetpack লাইব্রেরিতে প্রকাশ করে। বিস্তারিত জানতে, Platform API Android 17 and higher এবং Backport to lower Android versions দেখুন।

নিম্নলিখিত উদাহরণটি একটি অ্যান্ড্রয়েড-চালিত ডিভাইসে ইনস্টল করা একটি নমুনা সম্পূরক নিরাপত্তা প্যাচ XML ফাইল দেখাচ্ছে:

<?xml version="1.0" encoding="utf-8"?>
<security-patches xmlns="http://schemas.android.com/security/patches/1.0">
    <patch><id>CVE-2026-12345</id></patch>
</security-patches>

প্ল্যাটফর্ম এপিআই (অ্যান্ড্রয়েড ১৭ এবং উচ্চতর সংস্করণ)

অ্যান্ড্রয়েড ১৭ (এপিআই লেভেল ৩৭) এবং এর পরবর্তী সংস্করণগুলোর জন্য, প্ল্যাটফর্মের SecurityStateManager সমস্ত সমর্থিত পার্টিশন অবস্থান থেকে সম্পূরক প্যাচগুলো পার্স করার কাজটি পরিচালনা করে এবং getGlobalSecurityState থেকে ফেরত আসা বান্ডেলে KEY_SYSTEM_SUPPLEMENTAL_PATCHESKEY_VENDOR_SUPPLEMENTAL_PATCHES কী-গুলো ব্যবহার করে সেগুলোকে প্রকাশ করে।

সিস্টেম সার্ভিস SecurityStateManagerService পার্টিশন XML ফাইলগুলোকে এই দুটি মূল রিপোর্টিং বাকেটে একত্রিত করে:

  • KEY_SYSTEM_SUPPLEMENTAL_PATCHES : /system , /system_ext , এবং /product পার্টিশন পাথগুলো থেকে প্যাচসমূহ একত্রিত করে।
  • KEY_VENDOR_SUPPLEMENTAL_PATCHES : /vendor এবং /odm পার্টিশন পাথ থেকে প্যাচসমূহ একত্রিত করে।

নিম্নতর অ্যান্ড্রয়েড সংস্করণগুলিতে ব্যাকপোর্ট করুন

অ্যান্ড্রয়েড ১৬ এবং এর নিচের সংস্করণগুলোর জন্য কোনো প্ল্যাটফর্ম এপিআই সাপোর্ট নেই। এর পরিবর্তে, জেটপ্যাকের androidx.security:security-state লাইব্রেরি ( SecurityStateManagerCompat ) XmlPullParser ব্যবহার করে ম্যানুয়ালি এক্সএমএল ফাইলগুলো পড়ে। অ্যান্ড্রয়েড ১৬ এবং এর নিচের সংস্করণগুলোতে untrusted_app ডোমেইনকে ফাইলগুলো পড়ার অনুমতি দেওয়ার জন্য, ওইএম-দের অবশ্যই সেই সমস্ত পার্টিশন পাথে নিম্নলিখিত SELinux পরিবর্তনগুলো প্রয়োগ করতে হবে যেখানে এক্সএমএল ফাইলটি ইনস্টল করা আছে:

file_contexts :

/(system|vendor|product|system_ext|odm)/etc/security/supplemental_security_patches\.xml u:object_r:supplemental_security_patches:s0

supplemental_security_patches.te :

allow untrusted_app supplemental_security_patches:file { getattr open read };

নিয়ম তৈরি করুন এবং স্কিমা যাচাইকরণ

/vendor/etc/security/ , /system/etc/security/ , অথবা /product/etc/security/ -এ সাপ্লিমেন্টাল প্যাচ XML ফাইলটি ইনস্টল করতে, Android.bp -তে একটি prebuilt_etc রুল যোগ করুন। যেহেতু SecurityStateManagerService আশা করে যে ডিভাইসের ফাইলটির নাম হুবহু supplemental_security_patches.xml হবে, তাই পার্টিশন-নির্দিষ্ট মডিউলের নাম ব্যবহার করার সময় filename প্রপার্টিটি ব্যবহার করুন:

// For vendor partition (/vendor/etc/security/supplemental_security_patches.xml)
prebuilt_etc {
    name: "vendor_supplemental_security_patches.xml",
    src: "supplemental_security_patches.xml",
    filename: "supplemental_security_patches.xml",
    sub_dir: "security",
    vendor: true,
}
// For system partition (/system/etc/security/supplemental_security_patches.xml)
prebuilt_etc {
    name: "system_supplemental_security_patches.xml",
    src: "supplemental_security_patches.xml",
    filename: "supplemental_security_patches.xml",
    sub_dir: "security",
}
// For product partition (/product/etc/security/supplemental_security_patches.xml)
prebuilt_etc {
    name: "product_supplemental_security_patches.xml",
    src: "supplemental_security_patches.xml",
    filename: "supplemental_security_patches.xml",
    sub_dir: "security",
    product_specific: true,
}

অ্যান্ড্রয়েড ওপেন সোর্স প্রজেক্ট (AOSP) supplemental_security_patches.xsd এ XSD স্কিমা অন্তর্ভুক্ত করে এবং Android.bp তে xsdc বিল্ড রুল ব্যবহার করে বিল্ড প্রক্রিয়ার সময় XML ফাইলের ফরম্যাট যাচাই করে।

xsdc {
    name: "supplemental_security_patches_xsd",
    srcs: ["supplemental_security_patches/supplemental_security_patches.xsd"],
    package_name: "android.security.patches", // Java package name for generated code
}

এছাড়াও আপনি xmllint ব্যবহার করে XSD স্কিমার সাথে আপনার XML ফাইলটি স্থানীয়ভাবে যাচাই করতে পারেন:

xmllint --schema frameworks/base/services/core/xsd/supplemental_security_patches/supplemental_security_patches.xsd --noout supplemental_security_patches.xml

টেস্ট এবং স্যুট ইন্টিগ্রেশন

সিকিউরিটি টেস্ট স্যুট (STS) এবং ফার্মওয়্যার অ্যানালাইসিস (BTS) এক্সএমএল ফাইলে উপস্থিত দুর্বলতাগুলোর জন্য প্যাচ অ্যানালাইসিসকে প্রসারিত করতে supplemental_security_patches.xml ফাইলের ডেটা ব্যবহার করে। সুতরাং, ডিভাইসের নিরাপত্তা অবস্থা প্রতিফলিত করার পাশাপাশি, এই ফাইলটিকে সঠিকভাবে একীভূত করলে OEM-রা ত্রৈমাসিক SPL আনুষ্ঠানিকভাবে ঘোষিত হওয়ার জন্য অপেক্ষা না করেই, ডিভাইসের SPL-এর উপরে প্যাচ করা দুর্বলতাগুলোর উপর সক্রিয়ভাবে প্যাচ অ্যানালাইসিস করতে পারে।