Skip to content

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

  1. 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.
  2. Free edilmiş allocation'ın başka hypervisor state'i için yeniden kullanılmasına yol açın (heap grooming / timing — "ek koşullar").
  3. 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.log kayı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.

References