Ek güvenlik yamaları

Android'in riske dayalı güvenlik güncellemeleri kapsamında sürekli yayın ve üç aylık bültenlere geçişiyle birlikte OEM'ler, güvenlik açıklarını düzeltmek için çeyrek boyunca beklemek yerine yayınlar arasında düzeltmek isteyebilir. Ek güvenlik yaması XML özelliği, OEM'lerin standartlaştırılmış bir XML dosyası sağlayarak, bildirilen güvenlik yaması seviyesinin (SPL) ötesinde yama uygulanan CVE'leri bildirmesine olanak tanır. Böylece OEM'ler sürekli yama uygulama konusunda kredi alabilir.

Üst düzey akış

OEM sistemi, satıcı ve ürün bölümlerinden AOSP Framework API'ye ek güvenlik yamaları XML veri akışını gösteren diyagram

Şekil 1. Ek güvenlik yamaları mimarisi ve veri akışı.

OEM'ler, XML dosyasını birden fazla cihaz bölümüne (/system, /vendor veya /product) yerleştirebilir. Bu sayede hem çerçeve hem de donanıma özgü bileşenlerdeki güvenlik yamalarının hesaba katılması sağlanır. XML dosyası, ilgili bölüm için /etc/security/supplemental_security_patches.xml konumuna yüklenmelidir.

Platform, bu cihaz bölümlerindeki CVE verilerini toplar ve platform API'lerinde ve Jetpack kitaplıklarında kullanıma sunar. Ayrıntılar için Platform API Android 17 ve sonraki sürümler ile Daha düşük Android sürümlerine geri taşıma başlıklı makaleleri inceleyin.

Aşağıdaki örnekte, Android destekli bir cihaza yüklenen örnek bir ek güvenlik yaması XML dosyası gösterilmektedir:

<?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>

Platform API'si (Android 17 ve sonraki sürümler)

Android 17 (API düzeyi 37) ve sonraki sürümlerde platformun SecurityStateManager, desteklenen tüm bölüm konumlarındaki ek yamaları ayrıştırmayı yönetir ve KEY_SYSTEM_SUPPLEMENTAL_PATCHES ile KEY_VENDOR_SUPPLEMENTAL_PATCHES anahtarlarını kullanarak getGlobalSecurityState'den döndürülen pakette kullanıma sunar.

Sisteme ait hizmet SecurityStateManagerService, bölüm XML dosyalarını şu iki üst raporlama grubunda toplar:

  • KEY_SYSTEM_SUPPLEMENTAL_PATCHES: /system, /system_ext ve /product bölüm yollarındaki yamaları toplar.
  • KEY_VENDOR_SUPPLEMENTAL_PATCHES: /vendor ve /odm bölüm yollarındaki yamaları toplar.

Daha düşük Android sürümlerine geri taşıma

Android 16 ve önceki sürümlerde platform API desteği yoktur. Bunun yerine, Jetpack androidx.security:security-state kitaplığı (SecurityStateManagerCompat), XmlPullParser kullanarak XML dosyalarını manuel olarak okur. OEM'lerin, untrusted_app alanının Android 16 ve önceki sürümlerdeki dosyaları okumasına izin vermek için XML dosyasının yüklendiği tüm bölüm yollarında aşağıdaki SELinux değişikliklerini uygulaması gerekir:

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

Kural oluşturma ve şema doğrulama

Ek yama XML dosyasını /vendor/etc/security/, /system/etc/security/ veya /product/etc/security/'ye yüklemek için Android.bp'da prebuilt_etc kuralı ekleyin. SecurityStateManagerService, cihazdaki dosyanın tam olarak supplemental_security_patches.xml olarak adlandırılmasını beklediğinden, bölüme özel modül adları kullanırken filename özelliğini kullanın:

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

Android Açık Kaynak Projesi (AOSP), XSD şemasını supplemental_security_patches.xsd içine dahil eder ve Android.bp içindeki xsdc derleme kuralını kullanarak derleme işlemi sırasında XML dosya biçimini doğrular:

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
}

XML dosyanızı yerel olarak XSD şemasına göre doğrulamak için xmllint aracını da kullanabilirsiniz:

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

Test ve paket entegrasyonu

Güvenlik Test Paketi (STS) ve Donanım Yazılımı Analizi (BTS), XML dosyasında bulunan güvenlik açıklarına yönelik yama analizini genişletmek için supplemental_security_patches.xml dosyasındaki verileri kullanır. Bu nedenle, cihazın güvenlik durumunu yansıtmanın yanı sıra bu dosyanın doğru şekilde entegre edilmesi, OEM'lerin üç aylık SPL'nin resmi olarak duyurulmasını beklemek yerine cihazın SPL'sinin üzerinde yamalanan güvenlik açıklarında proaktif yama analizi yapmasına olanak tanır.