VMware Workstation/Fusion vmnetdhcp DHCP use-after-free (CVE-2020-3947)¶
VMware Workstation/Fusion guest-to-host use-after-free (CVE-2020-3947, VMSA-2020-0004) in the host
vmnetdhcpvirtual DHCP server. NOT: bu kayıt eskiden "COM1 serial-port escape" olarak adlandırılmıştı (slug bu alias'ı korur), ama birincil kaynaklara (ZDI, VMSA-2020-0004) göre bu CVE bir serial/COM1 device'ında değil, hostvmnetdhcpvirtual DHCP server'ında bir use-after-free'dir — başlık ve özet gerçek vulnerability'ye göre düzeltilmiştir.
Mechanism¶
Warning
Bu kaydın slug'ı/alias'ları "COM1 serial port"a referans verir, ama atıf
verilen birincil kaynaklar (ZDI, VMSA-2020-0004) CVE-2020-3947'nin host
vmnetdhcp virtual DHCP server'ında bir use-after-free olduğunu ortaya
koyar. Aşağıdaki içerik gerçek vulnerability'yi belgeler.
Note
vmnetdhcp, VMware'in virtual network'lerinde guest VM'ler için DHCP yanıtlayan
host-side bir servistir. Isolation invariant'ı, guest kaynaklı DHCP
mesajlarının host-side handling'inin lease bookkeeping'ini tutarlı tutması
gerektiğidir — freed bir pointer'ı reachable bırakan hiçbir object aliasing
olmamalı. ZDI'ye göre, malicious bir DHCP mesaj dizisi supersede_lease'i, bir
source ile bir destination lease yapısı arasında aliased olan bir
client-identifier (uid) buffer'ını free etmeye sürer; bu da destination uid
pointer'ını dangling bırakır; sonraki bir write_lease access'i o freed
pointer'ı dereference eder. vmnetdhcp host'ta çalıştığı için, UAF host OS'ta
code execution'a yol açabilir — virtual network üzerinden guest→host boundary'sini
aşarak.
Bu, device/service-emulation memory-safety sınıfıdır; QEMU'daki network service / DMA-reentrancy UAF'leriyle karşılaştırın (bkz. QEMU e1000e DMA reentrancy use-after-free).
Walkthrough¶
Public referans: ZDI'nin "CVE-2020-3947: Use-After-Free in the VMware Workstation DHCP Component" yazısı ve VMSA-2020-0004. Kavramsal yeniden üretim yolu (örnekleme amaçlı, public writeup'tan — weaponize edilmiş chain yok):
- Guest'ten bir
DHCPDISCOVER, ardından aynı lease için birDHCPRELEASEgönderin. - ZDI'ye göre,
supersede_lease(vmnetdhcp+0x3160), source ve destination lease yapıları arasında aliased olan biruidbuffer'ını free eder; destination'ınuidpointer'ını dangling bırakır. write_lease'e (vmnetdhcp+0x16e0) ulaşan sonraki bir operasyon freeduid'a erişir ve use-after-free'yi tetikler.- Freed allocation'ı kontrollü içerikle yeniden ele geçirmek (reclaim), UAF'ten host code execution'a giden yoldur.
Beklenen gözlemlenebilir: bir guest'ten gelen anormal bir
DHCPDISCOVER→DHCPRELEASE dizisinin ardından vmnetdhcp crash/restart.
Warning
Bug sınıfı için belgelenmiş, patch'lenmiş issue. Yalnızca kavramsal — reclaim object seçimi veya host layout yok.
Detection¶
- Host-side:
vmnetdhcpcrash'leri/restart'ları ve heap-corruption telemetry'si. - Network-side: VMware virtual network'teki bir guest'ten aynı lease için anormal /
hızlı
DHCPDISCOVER→DHCPRELEASEdizileri.
Mitigation¶
- VMSA-2020-0004'ü uygulayın: VMware Workstation 15.5.2 ve Fusion 11.5.2'de
düzeltildi (CVSS 9.3). Patch'lenmiş
supersede_lease, bir pointer-aliasing check ekler ve source/destinationuidaynı buffer'a referans verdiğindefree'yi atlar. - Defense in depth: host networking servislerini sandbox / least-privilege yapın.
References¶
- ZDI, "CVE-2020-3947: Use-After-Free Vulnerability in the VMware Workstation DHCP Component", https://www.thezdi.com/blog/2020/4/1/cve-2020-3947-use-after-free-vulnerability-in-the-vmware-workstation-dhcp-component
- VMSA-2020-0004.1 (Broadcom/VMware Security Advisory), https://support.broadcom.com/web/ecx/support-content-notification/-/external/content/SecurityAdvisories/0/23571