Skip to content

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):

  1. Bir HVM/PVH guest'ten, bir HAP superpage (2 MiB / 1 GiB) tarafından desteklenen executable bir mapping kur.
  2. 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.
  3. Etkilenen bölgeden execute et; savunmasız Intel hardware'inde iTLB multi-hit uncorrectable bir MCE yükseltir.
  4. 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-12207 hypervisor 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çin hap=0 (ciddi performans maliyeti); ept=exec-sp yalnı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