Skip to content

Xen non-atomic EPT PTE modification race (CVE-2020-15567)

Xen XSA-328 / CVE-2020-15567: Xen, canlı Intel EPT page-table entry'lerini bir dizi non-atomic bitfield write ile değiştirir ve geçici olarak kısmen yazılmış bir PTE'yi hardware'e maruz bırakır; bir guest bunu exploit etmek için race edebilir — DoS, data corruption ya da privilege escalation.

Mechanism

Note

Bir EPT PTE tek bir mimari word'dür, ama C kodu onu birkaç non-atomic bitfield write olarak güncelliyordu. Bu write'ların tek bir store'a coalesce olup olmadığı compiler optimization'ına bağlıdır. Invariant şudur: hardware yalnızca tam oluşmuş, geçerli bir EPT entry'si gözlemlemelidir. XSA-328 bir non-atomic update / TOCTOU race'tir: kısmi write'lar arasında, başka bir vCPU (ya da page-walking hardware'i) yanlış frame'i ya da yanlış permission'ları map'leyen yarı-güncellenmiş bir PTE gözlemleyebilir. Bu pencereyi race eden bir guest, erişmemesi gereken belleği read/write edebilir, veriyi bozabilir ya da host'u crash edebilir.

Aşılan sınır, geçici tutarsız bir page-table entry'siyle kırılan, EPT tarafından zorlanan guest/host bellek izolasyonudur.

Walkthrough

Public reference: Xen Security Advisory 328 ve NVD CVE-2020-15567. Conceptual path (advisory sınıfı belirtir):

  1. HAP/nested paging kullanan bir Intel host'ta, Xen'in canlı bir EPT entry'sini non-atomic bitfield path'i üzerinden yeniden yazmasına neden olan operasyonlar sürükle.
  2. İkinci bir vCPU'dan, o entry'nin map'lediği linear bölgeye tekrar tekrar eriş ve partial-write penceresini race et.
  3. İstenmeyen erişim veren, kısmen yazılmış bir PTE yakala; bunu data corruption / disclosure / DoS için kullan.

Warning

Bug sınıfı için belgelenmiş tarihsel, patch'lenmiş bir sorun. Yalnızca conceptual. Exploitability compiler'a ve timing'e bağlıdır.

Detection

  • Yoğun eşzamanlı vCPU bellek baskısı altındaki Intel HAP sistemlerinde EPT violation'ları / beklenmedik guest crash'leri ya da data corruption.
  • Runtime'da tespit etmek zordur; öncelikle patch'leyerek ele alınır. vCPU'lar arasında EPT remapping'i eşzamanlı olarak zorlayan guest'lere dikkat et.

Mitigation

  • xsa328-1.patch / xsa328-2.patch'i uygula (Xen 4.9.x–4.13.x ve unstable); bunlar EPT PTE update'ini atomic hâle getirir.
  • Workaround'lar: yalnızca PV guest'ler çalıştır ya da HVM/PVH guest'leri hap=0 ile shadow paging'e geçir.
  • Etkilenen: yalnızca Intel (AMD/Arm etkilenmez); nested paging'li HVM/PVH guest'ler.

References