Skip to content

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

  1. Guest'ten, e1000 NIC'i yükleyin/sürün ve descriptor ring'lerini ve control register'larını programlayın.
  2. Guest-controlled descriptor/length state'ini, host e1000 emulation'ı backing buffer'ı aşan bir destination ya da copy length hesaplayacak şekilde ayarlayın.
  3. Host, vmware-vmx içinde o buffer'a komşu memory'ye bir out-of-bounds write gerçekleştirir.
  4. 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-vmx crash'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