Xen PV unbounded pagetable iteration DoS (CVE-2018-12891)¶
Xen XSA-264 / CVE-2018-12891: nadiren çalıştırılan birkaç x86 PV MMU code path'i preemption check'lerini atlar, böylece multi-vCPU bir PV guest sınırsız uzun süren pagetable operasyonlarını zorlayıp bir physical CPU'yu süresiz olarak işgal edebilir (DoS).
Mechanism¶
Note
Uzun süren PV MMU operasyonları normalde preemptible'dır: Xen, bir guest'in bir physical CPU'yu tekeline alamaması için yield etmesi gerekip gerekmediğini periyodik olarak kontrol eder. Invariant şu: her uzun süren pagetable path'i böyle bir preemption check içerir. XSA-264 bir missing-preemption bug: x86 PV MM handling içinde nadiren ulaşılan birkaç code path bu check'ten yoksundur. Malicious multi-vCPU bir guest bu path'leri tekrar tekrar sürerek operasyonun yield etmeden iterate etmesini sağlayabilir ve bir physical CPU'yu süresiz olarak meşgul tutar.
Aşılan sınır, adil scheduling / host availability'dir — guest tarafından kontrol edilen iş, hypervisor içinde sınırsız çalışır.
Walkthrough¶
Public reference: Xen Security Advisory 264 ve NVD CVE-2018-12891. Kavramsal yol (advisory sınıfı belirtir):
- Multi-vCPU bir PV guest'ten, non-preemptible MM path'lerinden birine yönlenen pagetable state'i oluştur.
- O path'i tekrar tekrar tetikleyerek Xen'in bir preemption point olmadan uzun süre iterate etmesini sağla.
- Operasyonu işleyen physical CPU belirsiz bir süre kullanılamaz hale gelir — denial of service.
Warning
Bug sınıfı için belgelenmiş, tarihsel ve patch'lenmiş bir issue. Yalnızca kavramsal.
Detection¶
- Tek bir guest'in MM operasyonlarını işleyen hypervisor içinde ~%100'de takılı kalan bir physical CPU; scheduler starvation / watchdog uyarıları.
- Yoğun pagetable manipulation yapan multi-vCPU PV guest'lerle ilişkilendir.
Mitigation¶
- Eksik preemption check'lerini ekleyen
xsa264.patch'i (unstable) /xsa264-4.10.patch'i (4.10.x–4.6.x) uygula. - Workaround: yalnızca HVM/PVH guest'ler ya da single-vCPU PV guest'ler çalıştır.
- Etkilenen: Xen 3.4+, yalnızca x86 multi-vCPU PV guest'ler (HVM/PVH, single-vCPU PV ve Arm etkilenmez).
References¶
- Xen Security Advisory 264, "preemption checks bypassed in x86 PV MM handling", https://xenbits.xen.org/xsa/advisory-264.html
- NVD, CVE-2018-12891, https://nvd.nist.gov/vuln/detail/CVE-2018-12891