แพตช์ด้านความปลอดภัยเพิ่มเติม

เมื่อ Android เปลี่ยนไปใช้การเผยแพร่ต่อเนื่องและกระดานข่าวสารรายไตรมาส ซึ่งเป็นส่วนหนึ่งของการอัปเดตความปลอดภัยตามความเสี่ยง ผู้ผลิตอุปกรณ์ดั้งเดิม (OEM) อาจต้องการแก้ไข ช่องโหว่ระหว่างการเผยแพร่แทนที่จะรอทั้งไตรมาส ฟีเจอร์ XML ของแพตช์ความปลอดภัยเพิ่มเติมช่วยให้ OEM รายงาน CVE ที่ได้รับการแก้ไขนอกเหนือจากระดับแพตช์ด้านความปลอดภัย (SPL) ที่ประกาศไว้ได้โดยการระบุไฟล์ XML ที่ได้มาตรฐาน เพื่อให้ OEM ได้รับเครดิตสำหรับการแก้ไขอย่างต่อเนื่อง

ขั้นตอนการดำเนินการระดับสูง

แผนภาพแสดงโฟลว์ข้อมูล XML ของแพตช์ความปลอดภัยเสริมจากระบบ OEM, ผู้ให้บริการ และพาร์ติชันผลิตภัณฑ์ไปยัง AOSP Framework API

รูปที่ 1 สถาปัตยกรรมและโฟลว์ข้อมูลของแพตช์ความปลอดภัยเพิ่มเติม

OEM สามารถวางไฟล์ XML ในพาร์ติชันอุปกรณ์หลายรายการ (/system, /vendor หรือ /product) เพื่อให้แน่ใจว่ามีการพิจารณาแพตช์ความปลอดภัยจากทั้งเฟรมเวิร์กและคอมโพเนนต์เฉพาะของฮาร์ดแวร์ ควรติดตั้งไฟล์ XML ใน /etc/security/supplemental_security_patches.xml สำหรับพาร์ติชันที่เกี่ยวข้อง

แพลตฟอร์มจะรวบรวมข้อมูล CVE ในพาร์ติชันอุปกรณ์เหล่านี้และแสดงข้อมูลใน API ของแพลตฟอร์มและไลบรารี Jetpack ดูรายละเอียดได้ที่ API ของแพลตฟอร์ม Android 17 ขึ้นไป และ การย้ายข้อมูลกลับไปยัง Android เวอร์ชันที่ต่ำกว่า

ตัวอย่างต่อไปนี้แสดงไฟล์ XML ของแพตช์ความปลอดภัยเพิ่มเติมตัวอย่างที่ติดตั้งในอุปกรณ์ที่ใช้ Android

<?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>

API ของแพลตฟอร์ม (Android 17 ขึ้นไป)

สำหรับ Android 17 (API ระดับ 37) ขึ้นไป แพลตฟอร์ม's SecurityStateManager จะจัดการการแยกวิเคราะห์แพตช์เพิ่มเติมจากตำแหน่งพาร์ติชันที่ รองรับทั้งหมดและแสดงแพตช์ใน Bundle ที่ส่งคืนจาก getGlobalSecurityState โดยใช้คีย์ KEY_SYSTEM_SUPPLEMENTAL_PATCHES และ KEY_VENDOR_SUPPLEMENTAL_PATCHES

บริการของระบบ SecurityStateManagerService จะรวบรวมไฟล์ XML ของพาร์ติชันลงในบัคเก็ตการรายงาน 2 รายการต่อไปนี้

  • KEY_SYSTEM_SUPPLEMENTAL_PATCHES: รวบรวมแพตช์จากเส้นทางพาร์ติชัน /system, /system_ext และ /product
  • KEY_VENDOR_SUPPLEMENTAL_PATCHES: รวบรวมแพตช์จากเส้นทางพาร์ติชัน /vendor และ /odm

การย้ายข้อมูลกลับไปยัง Android เวอร์ชันที่ต่ำกว่า

สำหรับ Android 16 และต่ำกว่า จะไม่มีการรองรับ API ของแพลตฟอร์ม แต่ไลบรารี androidx.security:security-state (SecurityStateManagerCompat) ของ Jetpack จะอ่านไฟล์ XML ด้วยตนเองโดยใช้ XmlPullParser เพื่อให้โดเมน untrusted_app อ่านไฟล์ใน Android 16 และต่ำกว่าได้ OEM ต้องใช้การเปลี่ยนแปลง SELinux ต่อไปนี้ในเส้นทางพาร์ติชันทั้งหมดที่ติดตั้งไฟล์ XML

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 };

กฎการสร้างและการตรวจสอบความถูกต้องของสคีมา

หากต้องการติดตั้งไฟล์ XML ของแพตช์เพิ่มเติมใน /vendor/etc/security/, /system/etc/security/, หรือ /product/etc/security/ ให้เพิ่มกฎ prebuilt_etc rule ใน Android.bp เนื่องจาก 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,
}

โครงการโอเพนซอร์ส Android (AOSP) มีสคีมา XSD ใน supplemental_security_patches.xsd และตรวจสอบรูปแบบไฟล์ XML ระหว่างกระบวนการบิลด์โดยใช้กฎการบิลด์ xsdc ใน Android.bp

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
}

นอกจากนี้ คุณยังตรวจสอบไฟล์ XML ในเครื่องกับสคีมา XSD ได้โดยใช้ xmllint

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

การผสานรวมการทดสอบและชุดทดสอบ

Security Test Suite (STS) และ Firmware Analysis (BTS) ใช้ ข้อมูลจากไฟล์ supplemental_security_patches.xml เพื่อขยายการวิเคราะห์แพตช์ สำหรับช่องโหว่ที่มีอยู่ในไฟล์ XML ดังนั้น นอกเหนือจากการแสดงสถานะความปลอดภัยของอุปกรณ์แล้ว การผสานรวมไฟล์นี้อย่างถูกต้องยังช่วยให้ OEM ทำการวิเคราะห์แพตช์เชิงรุกสำหรับช่องโหว่ที่ได้รับการแก้ไขเหนือ SPL ของอุปกรณ์ได้แทนที่จะรอให้มีการประกาศ SPL รายไตรมาสอย่างเป็นทางการ