VMware Workstation guest-to-host RCE¶
VMware Workstation/Fusion guest-to-host code execution; emüle e1000 network device'ında bir out-of-bounds write üzerinden (CVE-2018-6973, VMSA-2018-0022).
Mechanism¶
Note
e1000 virtual NIC, host vmware-vmx process'i içinde emüle edilir. Isolation
invariant'ı, guest tarafından sürülen NIC state'inin — descriptor ring'ler,
register programlaması ve device'ın bir araya getirdiği packet data — host onu
kopyalamadan veya işlemeden önce bounds-check'ten geçmesi gerektiğidir.
CVE-2018-6973, o e1000 emulation'ında bir out-of-bounds write'tır
(CWE-787): virtual NIC'i süren bir guest, guest-controlled state'in amaçlanan
buffer dışına, komşu host memory'ye bir write yönlendirdiği bir path'e ulaşır.
Write privileged host process'ine indiği için, guest→host boundary'sini aşar
ve "bir guest'in host'ta kod çalıştırmasına izin verebilir."
Bu, VMware SVGA escape'leri (bkz. Cloudburst) ve QEMU NIC emulation bug'ları (bkz. QEMU e1000 large-packet buffer overflow) tarafından paylaşılan device-emulation memory-safety sınıfıdır.
Walkthrough¶
Public referans: NVD CVE-2018-6973 ve VMSA-2018-0022 (Trend Micro ZDI ile raporlandı). Kavramsal yeniden üretim yolu (örnekleme amaçlı — public kaynaklar sınıfı belirtir, weaponize edilmiş bir chain değil):
- Guest'ten, e1000 NIC'i yükleyin/sürün ve descriptor ring'lerini ve control register'larını programlayın.
- Guest-controlled descriptor/length state'ini, host e1000 emulation'ı backing buffer'ı aşan bir destination ya da copy length hesaplayacak şekilde ayarlayın.
- Host,
vmware-vmxiçinde o buffer'a komşu memory'ye bir out-of-bounds write gerçekleştirir. - Bozulan bölge çevresinde host memory'sini (heap/pointer state) şekillendirmek, OOB write'tan host code execution'a giden yoldur.
Beklenen gözlemlenebilir: non-exploit bir denemede, bir guest'ten gelen anormal
e1000 descriptor-ring / register aktivitesinin ardından vmware-vmx crash olur.
Warning
Bug sınıfı için belgelenmiş, tarihsel, patch'lenmiş issue. Yalnızca kavramsal; NVD sınıfı (e1000 OOB write → host'ta guest code exec) yayımlar ama weaponization detayını değil.
Detection¶
- Host-side: guest e1000 aktivitesiyle korele
vmware-vmxcrash'leri. - Guest-integrity: normal bir driver ile tutarsız anormal NIC descriptor-ring / register manipülasyonu.
- Patch'lenmiş emulation'ı tercih edin; uygun olduğunda attack surface'i değiştirmek için legacy e1000 yerine vmxnet3 kullanın.
Mitigation¶
- VMSA-2018-0022'yi uygulayın: VMware Workstation 14.1.3 ve Fusion 10.1.3'te düzeltildi (bunlardan önceki Workstation 14.x / Fusion 10.x etkilenir; CVSS 8.8).
- Defense in depth: device-emulation process'ini sandbox / least-privilege yapın; böylece bir host-process compromise'i tam host kontrolü olmaz.
References¶
- NVD, CVE-2018-6973, https://nvd.nist.gov/vuln/detail/CVE-2018-6973
- VMSA-2018-0022 (Broadcom/VMware Security Advisory), https://support.broadcom.com/web/ecx/support-content-notification/-/external/content/SecurityAdvisories/0/23547