Skip to content

Xen PoD physmap order alignment (CVE-2021-28704)

Xen XSA-388 / CVE-2021-28704 (CVE-2021-28707/28708 ile birlikte): populate-on-demand hypercall handler'ları, istenen page order için base page-frame number'ın aligned olmasını zorunlu kılmıyor; bu da malicious bir HVM/PVH guest'in host'u crash etmesine olanak veriyor (DoS; privesc/info-leak dışlanmış değil).

Mechanism

Note

Populate-on-demand (PoD), bir guest'in gerçekte arkasında backing olandan (memory) daha fazla bellekle (maxmem) configure edilmesini sağlar; page'ler ilk erişimde populate edilir. XENMEM_decrease_reservation ve XENMEM_populate_physmap gibi hypercall'lar bir page order (superpage boyutu) kabul eder. Invariant şu: bir order ile geçirilen base GFN, o order'a aligned olmalıdır. XSA-388 bir missing alignment check: bu hypercall'ların PoD implementation'ları belirtilen order için base-GFN alignment'ını zorlamaz, dolayısıyla bir guest misaligned superpage operasyonlarını sürerek p2m state'ini tutarsız hale getirip host'u crash edebilir.

Aşılan sınır, guest belleğinin arkasında duran p2m / PoD accounting'inin tutarlılığıdır.

Walkthrough

Public reference: Xen Security Advisory 388 ve NVD CVE-2021-28704. Kavramsal yol (advisory sınıfı belirtir):

  1. PoD aktif (maxmem > memory) bir HVM/PVH guest configure et (ya da onun içinde çalış).
  2. XENMEM_populate_physmap / XENMEM_decrease_reservation'ı bir page order ve o order'a aligned olmayan bir base GFN ile çağır.
  3. Xen misaligned superpage isteğini işler, p2m/PoD state'ini bozar ve host'u crash eder.

Warning

Bug sınıfı için belgelenmiş, tarihsel ve patch'lenmiş bir issue. Yalnızca kavramsal.

Detection

  • physmap/reservation hypercall'ları gönderen HVM/PVH guest'lerle ilişkili host crash'leri; hypervisor log'larında PoD ile ilgili assertion failure'ları.
  • Hangi guest'lerin memory'den büyük maxmem ile çalıştığını (PoD aktif) envantere al.

Mitigation

  • Tüm Xen 4.7+ için XSA-388 patch'lerini (xsa388-1.patch, xsa388-2.patch ve branch'e özel varyantlar) uygula.
  • Workaround: guest config'inin maxmem'i memory'den büyük ayarlamadığından emin olarak PoD'u devre dışı bırak.
  • Etkilenen: tüm Xen 4.7+, x86 HVM/PVH guest'ler (4.6 ve öncesi etkilenmez).

References