Skip to content

VMware XHCI USB UAF guest-to-host RCE (CVE-2024-22252)

VMware'in emüle edilen XHCI (USB 3.x) controller'ında guest'ten erişilebilen bir use-after-free; kötü niyetli bir VM'in host vmware-vmx process'i olarak code execute etmesine izin verebilir (VMSA-2024-0006, Tianfu Cup 2023).

Mechanism

Note

XHCI (eXtensible Host Controller Interface, USB 3.x) controller tamamen VM-başına host vmware-vmx process'i içinde emüle edilir. Guest driver, controller'ı register/MMIO state'i yazarak ve guest memory'sinde ring veri yapıları (command, transfer ve event ring'leri, ayrıca device/slot context object'leri) kurarak programlar. Host backend, lifetime'ı guest'in device-attach / slot-enable / slot-disable yaşam döngüsünü takip etmesi gereken karşılık gelen host tarafı object'leri (slot/endpoint state, transfer buffer'ları) allocate eder ve takip eder.

İhlal edilen invariant object lifetime'a karşı reference geçerliliğidir: host tarafındaki bir object (örn. bir teardown / disable / reset path'inde) free edilirken ona ait bir pointer hâlâ erişilebilir kalır ve sonra dereference edilir. Guest bu yaşam döngüsü geçişlerinin sırasını ve zamanını yönlendirdiği için host'u dangling bir pointer'ı dereference etmeye zorlayabilir — klasik bir use-after-free. Free edilen allocation'ı şimdi neyin doldurduğunu kim kontrol ederse sonraki dereference'ı da o kontrol eder; bu da bir memory error'unu attacker-etkili host davranışına dönüştürür.

Bu, daha önceki XHCI UAF'larıyla — CVE-2021-22040 ve CVE-2020-4004 — ve ilgili UHCI controller bug'ı ile aynı emulated-USB device-backend sınıfıdır: host, guest-yönlendirmeli bir object lifecycle'ına güvenir. Yine de bu üçü ayrı bug'lardır: her biri kendi yılında ayrı bir VMSA ile (2020 / 2022 / 2024) düzeltilmiş farklı bir XHCI lifecycle path'ini ihlal eder; bu kayıt yalnızca CVE-2024-22252'yi (VMSA-2024-0006) kapsar — aynı sınıfı paylaşmak onları tek bir CVE yapmaz.

Walkthrough

Public advisory'den (VMSA-2024-0006) üst düzey, kavramsal path. Burada host offset'leri, struct field'ları, gadget zincirleri veya exploit verilmemiştir.

  1. Guest içinden (VM'de local admin ile), sanal XHCI controller'ı normal device-attach ve slot/endpoint kurulumundan geçir ki host backend karşılık gelen controller object'lerini allocate etsin.
  2. Başka bir path hâlâ ona bir reference tutarken host tarafındaki bir object'i free eden bir lifecycle geçişi (teardown / disable / reset) tetikle.
  3. Guest operasyonlarını race et veya sırala ki dangling reference free'den sonra dereference edilsin — use-after-free koşulu.
  4. Free edilen allocation'ı neyin yeniden doldurduğunu etkile (heap grooming) ki dangling dereference attacker-etkili veri okusun veya yazsın, ardından vmware-vmx olarak host code execution'a doğru pivot et.

Warning

Patch'lenmiş / tarihsel. ESXi'de etki VMX sandbox'ı içinde sınırlı kalır; Workstation/Fusion'da host OS üzerinde code execution'a ulaşabilir. Bu kayıt, defender'lar için bug sınıfını belgeler — silah haline getirilmiş bir primitive, layout veya shellcode sunulmamıştır.

Detection

  • Host: belirli bir guest'in USB 3.x / XHCI aktivitesiyle zaman olarak korele beklenmedik vmware-vmx crash'leri (segfault / abort) — tek bir VM'den gelen tekrarlayan crash'ler exploitation girişiminin güçlü bir sinyalidir.
  • Telemetri: gerçek bir USB iş yükü olmayan bir guest'ten gelen anormal, yüksek-frekanslı XHCI slot enable/disable veya device reset dizileri.
  • EDR/host logları: faulting erişim deseni free edilmiş bir object'in dereference'ına benzeyen vmware-vmx crash dump'ları veya core dosyaları; VM-başına tekrarlayan VMX restart'larında alarm ver.

Mitigation

  • VMSA-2024-0006 uyarınca patch'le: Workstation 17.5.1, Fusion 13.5.1, ESXi 8.0 (ESXi80U2sb-23305545) ve ESXi 7.0 (ESXi70U3p-23307199).
  • Sertleştirme: USB'ye ihtiyacı olmayan VM'lerden sanal XHCI / USB controller'ı kaldırarak erişilebilir attack surface'i azalt.
  • Çok-kiracılı ESXi'de host'ları güncel tut, çünkü bu advisory kümesinde birkaç USB CVE'si birlikte düzeltildi.

References