VMware PVNVRAM use-after-free (CVE-2020-3963)¶
Paravirtual NVRAM (PVNVRAM) backing'indeki bir use-after-free, bir guest'in ayrıcalıklı hypervisor belleğini okumasına izin verir.
Mechanism¶
The invariant that is crossed
PVNVRAM, hypervisor'ın guest'e açtığı paravirtualize edilmiş non-volatile RAM'dir. Korunan boundary guest → hypervisor memory confidentiality'dir. CVE-2020-3963 bir use-after-free'dir: PVNVRAM'i destekleyen bir object free edilir ama stale bir reference hâlâ sonraki bir operasyon tarafından kullanılır. Free edilmiş allocation başka hypervisor verisi tarafından reclaim edildiğinde, dangling access o reclaim edilen belleği okur ve onu guest'e geri yüzeye çıkarır — ayrıcalıklı host belleğinin bir information leak'i. Temporal-safety invariant'ı (free'den sonra erişim yok) ihlal edilir ve reclaim edilen bellek hypervisor secret'ları içerebileceği için confidentiality boundary'si kırılır.
VMware bunu Moderate (CVSS 5.9) olarak değerlendirdi — ayrıcalıklı belleğin read'i, doğrudan code execution değil; "attacker'ın kontrolü dışındaki ek koşullar" gereklidir.
Walkthrough¶
High-level, VMSA-2020-0015'ten (Cfir Cohen, Google Cloud security tarafından raporlandı):
- Local erişimli bir guest'ten, backing object'e bir reference canlı kalırken o object free edilecek şekilde PVNVRAM interface'ini sürün.
- Free edilmiş allocation'ın başka hypervisor state'i için yeniden kullanılmasına yol açın (heap grooming / timing — "ek koşullar").
- Stale-reference read'i tetikleyin; guest'e dönen veri artık reclaim edilmiş hypervisor allocation'ının içeriğini içerir ve ayrıcalıklı bilgiyi sızdırır.
Use-after-free primitive'i geneldir (bkz. ../primitive/use-after-free.md); tam
yaşam döngüsü detayları yeniden üretilmez.
Detection¶
- PVNVRAM ile ilgili assertion'ları ya da VMX instability'sini gösteren
vmware.log/vmkernel.logkayıtları. - Free edilmiş allocation'ların kullanımını işaretleyen host memory-integrity ya da heap-hardening telemetrisi (ör. etkinse quarantine/poison isabetleri).
- Bir guest'ten anormal NVRAM access pattern'leri ya da heap grooming ile tutarlı tekrarlayan NVRAM operasyonları.
Mitigation¶
- VMSA-2020-0015 düzeltmelerini uygulayın: ESXi 6.5/6.7/7.0, Workstation 15.5.2, Fusion 11.5.2 ya da sonrası.
- Genel temporal-safety savunmaları: gecikmeli reuse / poisoning'li sertleştirilmiş allocator'lar UAF leak'lerinin exploitability'sini azaltır.
- Yapılandırılabilir olan yerlerde NVRAM-backed state'in güvenilmeyen guest'lere maruziyetini sınırlayın.