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