Skip to content

Xen PV descriptor-table limit emulation privesc (CVE-2019-18425)

Xen XSA-298 / CVE-2019-18425: Xen'in 32-bit PV guest call-gate geçişlerine ait emulation'ı descriptor-table limit'lerini validate edemiyor; bu da 32-bit PV guest user mode'un keyfi descriptor'lar yüklemesine ve guest-kernel ayrıcalığına escalate olmasına olanak veriyor.

Mechanism

Note

32-bit PV guest'lerde Xen, user-mode call-gate geçişlerini LDT/GDT üzerinden emulate eder. Invariant şu: emulate edilen bir descriptor reference, descriptor-table limit'ine uymalıdır, böylece user mode sahibi olmadığı descriptor'lara ulaşamaz. XSA-298 bir emulation'da missing limit check: 32-bit guest user-mode çağrılarını call gate'ler üzerinden emulate ederken Xen descriptor-table limit'ini düzgün validate etmez, bu da unprivileged guest kodunun keyfi descriptor'lar yüklemesine izin verir. Bu özellikle guest kernel'in kendisi bir LDT yüklemediğinde — yaygın varsayılan durum — erişilebilir; böylece user mode guest-kernel ayrıcalığına yükselebilir.

Aşılan sınır, denetlenmemiş descriptor-table emulation'ı ile kırılan guest-içi user→kernel ayrıcalık sınırıdır.

Walkthrough

Public reference: Xen Security Advisory 298 ve NVD CVE-2019-18425 (Andrew Cooper, Citrix). Kavramsal yol (advisory sınıfı belirtir):

  1. Kernel'in hiçbir LDT yüklemediği 32-bit bir PV guest'te, Xen'in emulate ettiği bir user-mode call-gate geçişi çalıştır.
  2. Emulation descriptor-table limit kontrolünü atlar, böylece user mode keyfi bir descriptor yükleyebilir.
  3. Kontrol edilen descriptor'ı kullanarak guest-kernel ayrıcalığıyla çalış.

Warning

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

Detection

  • Olağandışı call-gate / LDT operasyonları yapan 32-bit PV guest'ler; guest-içi ayrıcalık anomalileri (bu guest-içi bir escalation, host telemetrisi sınırlı).
  • Hangi guest'lerin 32-bit PV olduğunu (tek etkilenen configuration) envantere al.

Mitigation

  • xsa298.patch'i (Xen 4.12+ ve daha eski sürümler için versiyona özgü varyantlar) uygula.
  • Etkilenen: Xen 3.2+, yalnızca 32-bit PV guest'ler (64-bit PV, HVM, PVH ve Arm etkilenmez). Untrusted tenant'lar için yalnızca HVM/PVH veya 64-bit PV guest çalıştır.

References