Xen iTLB-multihit machine check (CVE-2018-12207)¶
Xen XSA-304 / CVE-2018-12207: kötü niyetli bir HVM/PVH guest, bir Intel iTLB-multihit erratum'unu suistimal eder — executable bir mapping'in page size'ını TLB invalidation olmadan değiştirerek — host'u crash eden (DoS) uncorrectable bir machine check zorlamak için.
Mechanism¶
Note
Buradaki güvenlik sınırı hardware fault'lar altında host availability'dir. x86, belirli corner case'lerde bir page-table entry'sini araya bir TLB invalidation girmeden değiştirmeye mimari olarak izin verir. Savunmasız Intel Core CPU'larda (Nehalem ve sonrası) bu corner case — size'ı değişmiş bir page'e çarpan bir instruction fetch (örneğin aynı linear address için bir 4K ve bir 2M/1G translation'ın iTLB'de birlikte var olması) — yalnızca fault vermez; uncorrectable bir machine-check exception (MCE) yükseltir ve tüm fiziksel core'u (ve host'u) düşürür. Xen, HVM/PVH guest'lerin kendi second-level (EPT/HAP) mapping'lerini kontrol etmesine izin verdiği için, bir guest executable bir superpage üzerinde page-size-change-without-flush koşulunu kasıtlı olarak oluşturabilir ve erratum'u tetikleyebilir.
Aşılan invariant şudur: bir guest'in kendi nested page table'larını manipüle etmesi asla host'u durduramamalıdır. Fix, executable superpage'leri reddederek guest'in fault koşuluna ulaşma yeteneğini kaldırır.
Walkthrough¶
Public reference: Xen Security Advisory 304 ve NVD CVE-2018-12207. Yalnızca conceptual path (advisory sınıfı belirtir):
- Bir HVM/PVH guest'ten, bir HAP superpage (2 MiB / 1 GiB) tarafından desteklenen executable bir mapping kur.
- Mimari olarak opsiyonel TLB invalidation'ı gerçekleştirmeden o linear bölge için efektif page size'ı değiştir; çakışan iTLB entry'leri bırak.
- Etkilenen bölgeden execute et; savunmasız Intel hardware'inde iTLB multi-hit uncorrectable bir MCE yükseltir.
- Host core bir error state'ine girer ve hypervisor crash eder — o makinedeki tüm tenant'lar için denial of service.
Warning
Bug sınıfı için belgelenmiş tarihsel, patch'lenmiş bir hardware/software sorunu. Yalnızca conceptual — offset ya da exploit layout yok.
Detection¶
- Özellikle Nehalem dönemi Intel core'larında, tek bir guest'in aktivitesiyle
ilişkili beklenmedik host machine-check (
#MC) olayları / hypervisor crash log'ları. Disabling executable EPT superpages due to CVE-2018-12207hypervisor log satırı, savunmasız hardware'de mitigation'ın devreye girdiğini gösterir.- Telemetri: executable bölgeleri tekrar tekrar remap edip page-size değişimlerini zorlayan guest'ler; arızalı DIMM olmayan bir host'ta MCE oranındaki ani artışlar.
Mitigation¶
- XSA-304 patch'lerini uygula: Xen, savunmasız hardware'de executable EPT/HAP superpage'leri varsayılan olarak devre dışı bırakır (4K'ya böler) ve erratum'u etkisiz hâle getirir.
- Boot seçenekleri: HAP superpage'leri devre dışı bırakmak için
hap_2mb=0 hap_1gb=0; shadow paging'i zorlamak içinhap=0(ciddi performans maliyeti);ept=exec-spyalnızca tamamen trusted ortamlarda güvensiz davranışı yeniden etkinleştirir. - iTLB-multihit erratum'u için ilgili Intel microcode / OS güncellemelerini uygula. HVM/PVH'ye güvenilemiyorsa yalnızca PV guest'ler çalıştır.
References¶
- Xen Security Advisory 304, "Unlimited Xen heap consumption / x86: Machine check error on page size change", https://xenbits.xen.org/xsa/advisory-304.html
- NVD, CVE-2018-12207, https://nvd.nist.gov/vuln/detail/CVE-2018-12207