Skip to content

VMware ESXi VMX privilege escalation (CVE-2020-4005)

ESXi VMX process'inin belirli system call'ları nasıl yönettiğindeki bir kusur, VMX içindeki bir foothold'un host'ta privilege yükseltmesine izin verir.

Mechanism

The invariant that is crossed

ESXi'de per-VM vmx worker'ı VMkernel altında kuşatılmış bir VMX sandbox'ı içinde çalışır; korunan boundary VMX-sandbox → host privilege'dır. CVE-2020-4005, belirli system call'ların sandbox'lanmış VMX process'i ile VMkernel arasında nasıl yönetildiğindeki bir kusurdur. Bir attacker VMX process'i içinde zaten code execution kontrol ettiğinde (örneğin bir guest-to-host memory-corruption bug'ı onları VMX'e indirdikten sonra), yanlış ele alınan syscall path'i, o process'in amaçlanan privilege'ının dışına adım atmalarına izin verir. Güvenlik boundary'si geçilir çünkü kernel, compromise olmuş VMX context'inin manipüle edebileceği bir syscall etkileşimine güvenir.

VMware bunun açıkça bir zincirli primitive olduğunu not eder: tek başına unprivileged bir guest'ten erişilebilir değildir. İlk bir code-execution-in-VMX bug'ından sonraki ikinci halkadır (advisory bunu XHCI USB use-after-free, CVE-2020-4004 ile eşleştirir).

Walkthrough

High-level, public VMSA-2020-0026 advisory'sinden ve Pwn2Own kapsamından:

  1. vmx process'i içinde code execution elde edin (burada kapsam dışı; public zincirde bu ayrı bir USB-controller use-after-free'den geldi).
  2. O kuşatılmış context'ten, etkilenen system-call path'ini çağırın. Privilege transition'ı amaçlandığı gibi doğrulanmadığı için, çağrı VMX sandbox'ının ötesinde capability'ler verir.
  3. Sonuç, "VMX'teki kod"dan ESXi host'unda daha ayrıcalıklı bir host context'ine elevation'dır.

Burada struct offset'i ya da syscall detayı yeniden üretilmez — yalnızca public olarak belgelenen mantıksal iki-aşamalı şekil (VMX'e escape, sonra escalate).

Detection

  • vmx worker crash'lerini, beklenmedik respawn'ları ya da core dump'ları (/var/core, vmware.log backtrace'leri) gösteren ESXi hostd/vmx log'ları ve VMkernel log'ları.
  • Kuşatılmış kalması gereken bir vmx worker'ından kaynaklanan anormal child process'ler ya da ayrıcalıklı eylemler.
  • Bu CVE yalnızca zincirlendiğinde işe yaradığı için birinci aşama sinyaliyle (USB-controller anomalileri) korele edin — bir privilege anomalisinin takip ettiği bir USB device-emulation crash'i ele veren dizidir.
  • Beklenmedik VMkernel module ya da privilege state değişikliklerini işaretleyen EDR/host integrity araçları.

Mitigation

  • VMSA-2020-0026 patch'lerini uygulayın: ESXi 6.5/6.7/7.0 (Kas 2020 build'leri) ve ilgili VMware Cloud Foundation güncellemeleri.
  • Defense-in-depth: guest attack surface'ini minimal tutun — bu bug'a zincirlemek için gereken birinci aşama bug'ı erişilemez olsun diye kullanılmayan virtual USB controller'ları ve device'ları kaldırın.
  • Paylaşımlı ESXi host'larında kimin güvenilmeyen workload çalıştırabileceğini kısıtlayın; multi-tenant cluster'ları izole edin.

References