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):
- 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.
- İkinci bir vCPU'dan, o entry'nin map'lediği linear bölgeye tekrar tekrar eriş ve partial-write penceresini race et.
- İ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=0ile shadow paging'e geçir. - Etkilenen: yalnızca Intel (AMD/Arm etkilenmez); nested paging'li HVM/PVH guest'ler.
References¶
- Xen Security Advisory 328, "Non-atomic modification of live EPT PTE", https://xenbits.xen.org/xsa/advisory-328.html
- NVD, CVE-2020-15567, https://nvd.nist.gov/vuln/detail/CVE-2020-15567