Patch keamanan tambahan

Dengan peralihan Android ke rilis berkelanjutan dan buletin triwulanan sebagai bagian dari update keamanan berbasis risiko, OEM mungkin ingin memperbaiki kerentanan di antara rilis, bukan menunggu satu triwulan penuh. Fitur XML patch keamanan tambahan memungkinkan OEM melaporkan CVE yang di-patch di luar tingkat patch keamanan (SPL) yang dideklarasikan dengan menyediakan file XML standar, sehingga OEM menerima kredit untuk patching berkelanjutan.

Alur tingkat tinggi

Diagram yang menunjukkan alur data XML patch keamanan tambahan dari sistem OEM, vendor, dan partisi produk ke AOSP Framework API

Gambar 1. Arsitektur dan alur data patch keamanan tambahan.

OEM dapat menempatkan file XML di beberapa partisi perangkat (/system, /vendor, atau /product), sehingga patch keamanan dari framework dan komponen khusus hardware akan diperhitungkan. File XML harus diinstal di /etc/security/supplemental_security_patches.xml untuk partisi masing-masing.

Platform ini menggabungkan data CVE di seluruh partisi perangkat ini dan menampilkannya di API platform dan library Jetpack. Untuk mengetahui detailnya, lihat API Platform Android 17 dan yang lebih tinggi serta Backport ke versi Android yang lebih rendah.

Contoh berikut menunjukkan contoh file XML patch keamanan tambahan yang diinstal di perangkat yang didukung 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 Platform (Android 17 dan yang lebih tinggi)

Untuk Android 17 (level API 37) dan yang lebih tinggi, platform's SecurityStateManager menangani penguraian patch tambahan dari semua lokasi partisi yang didukung dan menampilkannya dalam Paket yang ditampilkan dari getGlobalSecurityState menggunakan kunci KEY_SYSTEM_SUPPLEMENTAL_PATCHES dan KEY_VENDOR_SUPPLEMENTAL_PATCHES.

SecurityStateManagerService layanan sistem menggabungkan file XML partisi ke dalam dua bucket pelaporan utama ini:

  • KEY_SYSTEM_SUPPLEMENTAL_PATCHES: Menggabungkan patch dari jalur partisi /system, /system_ext, dan /product.
  • KEY_VENDOR_SUPPLEMENTAL_PATCHES: Menggabungkan patch dari jalur partisi /vendor dan /odm.

Backport ke versi Android yang lebih rendah

Untuk Android 16 dan yang lebih rendah, tidak ada dukungan API platform. Sebagai gantinya, library Jetpack androidx.security:security-state (SecurityStateManagerCompat) membaca file XML secara manual menggunakan XmlPullParser. Untuk mengizinkan domain untrusted_app membaca file di Android 16 dan yang lebih rendah, OEM harus menerapkan perubahan SELinux berikut di semua jalur partisi tempat file XML diinstal:

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

Membuat aturan dan validasi skema

Untuk menginstal file XML patch tambahan ke /vendor/etc/security/, /system/etc/security/, atau /product/etc/security/, tambahkan aturan prebuilt_etcin Android.bp. Karena SecurityStateManagerService mengharapkan file di perangkat diberi nama persis supplemental_security_patches.xml, gunakan properti filename saat menggunakan nama modul khusus partisi:

// 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,
}

Project Open Source Android (AOSP) menyertakan skema XSD di supplemental_security_patches.xsd dan memvalidasi format file XML selama proses build menggunakan aturan build xsdc di 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
}

Anda juga dapat memvalidasi file XML secara lokal terhadap skema XSD menggunakan xmllint:

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

Pengujian dan integrasi rangkaian pengujian

The Security Test Suite (STS) dan Firmware Analysis (BTS) menggunakan data dari file supplemental_security_patches.xml untuk memperluas analisis patch untuk kerentanan yang ada dalam file XML. Jadi, selain mencerminkan status keamanan perangkat, mengintegrasikan file ini dengan benar memungkinkan OEM melakukan analisis patch proaktif pada kerentanan yang di-patch di atas SPL perangkat, bukan menunggu SPL triwulanan dideklarasikan secara resmi.