Mit der Umstellung von Android auf kontinuierliche Releases und vierteljährliche Bulletins im Rahmen risikobasierter Sicherheitsupdates möchten OEMs möglicherweise Sicherheitslücken zwischen den Releases beheben, anstatt ein ganzes Quartal zu warten. Mit der XML-Funktion für zusätzliche Sicherheitspatches können OEMs CVEs melden, die über das deklarierte Sicherheitsupdate-Level (Security Patch Level, SPL) hinaus gepatcht wurden. Dazu müssen sie eine standardisierte XML-Datei bereitstellen. So erhalten OEMs eine Gutschrift für kontinuierliche Patches.
Allgemeiner Ablauf
Abbildung 1 : Architektur und Datenfluss von zusätzlichen Sicherheitspatches
OEMs können die XML-Datei auf mehreren Gerätepartitionen (/system, /vendor oder /product) platzieren, um sicherzustellen, dass Sicherheitspatches sowohl für das Framework als auch für hardwarespezifische Komponenten berücksichtigt werden. Die XML-Datei sollte für die jeweilige Partition unter /etc/security/supplemental_security_patches.xml installiert werden.
Die Plattform aggregiert CVE-Daten auf diesen Gerätepartitionen und stellt sie in Plattform-APIs und Jetpack-Bibliotheken zur Verfügung. Weitere Informationen finden Sie unter Plattform-API für Android 17 und höher und Backport auf niedrigere Android-Versionen.
Das folgende Beispiel zeigt eine XML-Beispieldatei für zusätzliche Sicherheitspatches, die auf einem Android-Gerät installiert ist:
<?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>
Plattform-API (Android 17 und höher)
Unter Android 17 (API-Level 37) und höher analysiert die Plattform
SecurityStateManager die zusätzlichen Patches von allen
unterstützten Partitionsspeicherorten und stellt sie im zurückgegebenen Bundle von
getGlobalSecurityState mit den Schlüsseln KEY_SYSTEM_SUPPLEMENTAL_PATCHES
und KEY_VENDOR_SUPPLEMENTAL_PATCHES zur Verfügung.
Der Systemdienst SecurityStateManagerService aggregiert XML-Dateien von Partitionen in diesen beiden übergeordneten Berichts-Buckets:
KEY_SYSTEM_SUPPLEMENTAL_PATCHES: Aggregiert Patches aus den Partitionspfaden/system,/system_extund/product.KEY_VENDOR_SUPPLEMENTAL_PATCHES: Aggregiert Patches aus den Partitionspfaden/vendorund/odm.
Backport auf niedrigere Android-Versionen
Für Android 16 und niedriger gibt es keine Unterstützung für die Plattform-API. Stattdessen liest die Jetpack
androidx.security:security-state Bibliothek (SecurityStateManagerCompat)
die XML-Dateien manuell mit XmlPullParser. Damit die Domain untrusted_app die Dateien unter Android 16 und niedriger lesen kann, müssen OEMs die folgenden SELinux-Änderungen für alle Partitionspfade implementieren, in denen die XML-Datei installiert ist:
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 };
Build-Regeln und Schema-Validierung
Wenn Sie die XML-Datei für zusätzliche Patches unter /vendor/etc/security/,
/system/etc/security/, oder /product/etc/security/ installieren möchten, fügen Sie in Android.bp eine prebuilt_etc Regel
hinzu. Da SecurityStateManagerService erwartet, dass die Datei auf dem Gerät genau supplemental_security_patches.xml heißt, verwenden Sie die Property filename, wenn Sie partitionspezifische Modulnamen verwenden:
// 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,
}
Das Open-Source-Projekt für Android (AOSP) enthält das XSD-Schema in
supplemental_security_patches.xsd
und validiert das XML-Dateiformat während des Build-Prozesses mit der xsdc
Build-Regel in 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
}
Sie können Ihre XML-Datei auch lokal mit xmllint anhand des XSD-Schemas validieren:
xmllint --schema frameworks/base/services/core/xsd/supplemental_security_patches/supplemental_security_patches.xsd --noout supplemental_security_patches.xml
Test- und Suite-Integration
Die Security Test Suite (STS) und die Firmware Analysis (BTS) verwenden die
Daten aus der Datei supplemental_security_patches.xml, um die Patch
Analyse für Sicherheitslücken in der XML-Datei zu erweitern. Neben der Darstellung des Sicherheitsstatus des Geräts ermöglicht die korrekte Integration dieser Datei OEMs, proaktive Patch-Analysen für Sicherheitslücken durchzuführen, die über das SPL des Geräts hinaus gepatcht wurden. So müssen sie nicht warten, bis das vierteljährliche SPL offiziell deklariert wird.