Zusätzliche Sicherheitspatches

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

Diagramm, das den XML-Datenfluss für zusätzliche Sicherheitspatches vom OEM-System, Anbieter- und Produktpartitionen zur AOSP Framework API zeigt

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_ext und /product.
  • KEY_VENDOR_SUPPLEMENTAL_PATCHES: Aggregiert Patches aus den Partitionspfaden /vendor und /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.