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
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_exte/product.KEY_VENDOR_SUPPLEMENTAL_PATCHES: aggrega le patch dai percorsi delle partizioni/vendore/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.