Skip to content

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):

  1. Device passthrough configure edilmişken (HVM/PVH için VT-x üzerinde shadow mode), superpage coalescing'i tetikleyen mapping operasyonlarını sür.
  2. Lock-dropping window'unu race ederek page-table page'in deferred write'tan önce free/reuse edilmesini sağla.
  3. 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