Xen superpage coalesce race write-to-freed (CVE-2020-27672)¶
Xen XSA-345 / CVE-2020-27672: 2MiB/1GiB superpage'leri lock'ları sürekli tutmadan coalesce etmek için Xen'in mapping kodu, zaten free edilmiş (ve muhtemelen reuse edilmiş) bir page'e yazabilir — malicious bir guest host'u crash eder (DoS; data corruption / privesc dışlanmış değil).
Mechanism¶
Note
TLB verimliliği için Xen, map_pages_to_xen() / modify_xen_mappings()
içinde küçük mapping'leri 2MiB/1GiB superpage'lere coalesce eder. Coalescing
check'leri sırasında lock contention'dan kaçınmak için kod, lock'ları tüm
operasyon boyunca tutmak yerine serbest bırakır. Invariant şu: güncellenen bir
page hâlâ canlı ve operasyona ait olmalıdır. XSA-345 bir drop-lock race
(write-to-freed): serbest bırakma ile yeniden kontrol etme arasında, kod hâlâ
ona yazarken page table page'i free edilebilir (ve potansiyel olarak reuse
edilebilir). Free/reuse edilmiş belleğe yazmak hypervisor state'ini bozar.
Aşılan sınır, bir lock-dropping optimizasyonu altında hypervisor pagetable update'lerinin memory-safety'sidir.
Walkthrough¶
Public reference: Xen Security Advisory 345 ve NVD CVE-2020-27672. Kavramsal yol (advisory sınıfı belirtir):
- Device passthrough configure edilmişken (HVM/PVH için VT-x üzerinde shadow mode), superpage coalescing'i tetikleyen mapping operasyonlarını sür.
- Lock-dropping window'unu race ederek page-table page'in deferred write'tan önce free/reuse edilmesini sağla.
- Stale write free/reuse edilmiş belleğe iner, hypervisor 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¶
- Device passthrough'lu host'larda, superpage coalescing'i çalıştıran mapping churn'ü ile ilişkili host crash'leri / memory-corruption panic'leri.
- Doğrudan gözlemlemesi zor (timing race); öncelikle patch'lemeyle ele alınır.
Mitigation¶
map_pages_to_xen()/modify_xen_mappings()içindeki locking'i düzelten XSA-345 patch'lerini (sürüm başına üç,xsa345/…xsa345-4.14/) uygula.- Workaround: tüm guest'leri HAP etkin şekilde HVM/PVH'de çalıştır.
- Etkilenen: Xen 3.2+, yalnızca x86; device passthrough gerektirir; HVM/PVH yalnızca VT-x destekli CPU'larda (Intel/Centaur/Shanghai) shadow mode'da savunmasız.
References¶
- Xen Security Advisory 345, "x86: undue deferral of IOMMU TLB flushes / write to freed page during superpage coalescing", https://xenbits.xen.org/xsa/advisory-345.html
- NVD, CVE-2020-27672, https://nvd.nist.gov/vuln/detail/CVE-2020-27672