Patch di sicurezza supplementari

Con il passaggio di Android alla release continua e ai bollettini trimestrali nell'ambito degli aggiornamenti della sicurezza basati sul rischio, gli OEM potrebbero voler correggere le vulnerabilità tra le release anziché attendere un intero trimestre. La funzionalità XML delle patch di sicurezza supplementari consente agli OEM di segnalare le CVE corrette oltre il livello patch di sicurezza (SPL) dichiarato fornendo un file XML standardizzato, in modo che gli OEM ricevano credito per l'applicazione continua di patch.

Flusso di alto livello

Diagramma che mostra il flusso di dati XML delle patch di sicurezza supplementari dal sistema OEM, dal fornitore e dalle partizioni del prodotto all'API AOSP Framework

Figura 1. Architettura e flusso di dati delle patch di sicurezza supplementari.

Gli OEM possono inserire il file XML in più partizioni del dispositivo (/system, /vendor o /product), assicurandosi che vengano prese in considerazione le patch di sicurezza sia del framework sia dei componenti specifici dell'hardware. Il file XML deve essere installato in /etc/security/supplemental_security_patches.xml per la rispettiva partizione.

La piattaforma aggrega i dati delle CVE in queste partizioni del dispositivo e li espone nelle API della piattaforma e nelle librerie Jetpack. Per maggiori dettagli, consulta API della piattaforma Android 17 e versioni successive e Backport alle versioni precedenti di Android.

L'esempio seguente mostra un file XML di patch di sicurezza supplementare di esempio installato su un dispositivo con 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 della piattaforma (Android 17 e versioni successive)

Per Android 17 (livello API 37) e versioni successive, SecurityStateManager della piattaforma gestisce l'analisi delle patch supplementari da tutte le posizioni delle partizioni supportate e le espone nel bundle restituito da getGlobalSecurityState utilizzando le chiavi KEY_SYSTEM_SUPPLEMENTAL_PATCHES e KEY_VENDOR_SUPPLEMENTAL_PATCHES.

Il servizio di sistema SecurityStateManagerService aggrega i file XML delle partizioni in questi due bucket di report ombrello:

  • KEY_SYSTEM_SUPPLEMENTAL_PATCHES: aggrega le patch dai percorsi delle partizioni /system, /system_ext e /product.
  • KEY_VENDOR_SUPPLEMENTAL_PATCHES: aggrega le patch dai percorsi delle partizioni /vendor e /odm.

Backport alle versioni precedenti di Android

Per Android 16 e versioni precedenti, non è disponibile il supporto per le API della piattaforma. Invece, la libreria Jetpack androidx.security:security-state (SecurityStateManagerCompat) legge manualmente i file XML utilizzando XmlPullParser. Per consentire al dominio untrusted_app di leggere i file su Android 16 e versioni precedenti, gli OEM devono implementare le seguenti modifiche SELinux in tutti i percorsi delle partizioni in cui è installato il file 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 };

Regole di build e convalida dello schema

Per installare il file XML della patch supplementare in /vendor/etc/security/, /system/etc/security/, o /product/etc/security/, aggiungi una regola prebuilt_etcin Android.bp. Poiché SecurityStateManagerService si aspetta che il file sul dispositivo sia denominato esattamente supplemental_security_patches.xml, utilizza la proprietà filename quando utilizzi nomi di moduli specifici della partizione:

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

L'Android Open Source Project (AOSP) include lo schema XSD in supplemental_security_patches.xsd e convalida il formato file XML durante il processo di compilazione utilizzando la xsdc regola di build 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
}

Puoi anche convalidare il file XML localmente in base allo schema XSD utilizzando xmllint:

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

Test e integrazione della suite

The Security Test Suite (STS) e Firmware Analysis (BTS) utilizzano i dati del file supplemental_security_patches.xml per estendere l'analisi delle patch per le vulnerabilità presenti nel file XML. Pertanto, oltre a riflettere lo stato di sicurezza del dispositivo, l'integrazione corretta di questo file consente agli OEM di eseguire un'analisi proattiva delle patch sulle vulnerabilità corrette al di sopra dell'SPL del dispositivo anziché attendere la dichiarazione ufficiale dell'SPL trimestrale.