Skip to content

VMware XHCI USB use-after-free (CVE-2021-22040)

VMware'in emüle edilen XHCI (USB 3.x) controller'ında bir use-after-free; local admin'e sahip bir guest bunu host vmware-vmx process'i olarak code execute etmeye yönlendirebilir (VMSA-2022-0004, Tianfu Cup 2021).

Mechanism

Note

VMware, XHCI (USB 3.x) host controller'ı VM-başına host vmware-vmx process'i içinde emüle eder. Guest, controller'ı MMIO register'lar üzerinden programlar ve guest memory'sinde USB transfer/command/event ring yapıları ile device/slot context object'leri kurar; host backend ise guest-yönlendirmeli bir device lifecycle'ına (attach, enable slot, configure endpoint, disable/reset) bağlı eşleşen host tarafı state'ini (slot ve endpoint object'leri, transfer buffer'ları) tutar.

İhlal edilen invariant host object'lerinin temporal güvenliğidir: host tarafındaki bir object guest-tetiklemeli bir path'te free edilirken ona ait bayat (stale) bir pointer başka bir path'te kullanılabilir kalır ve sonra dereference edilir. Guest bu lifecycle olaylarının sırasını ve zamanını seçtiği için dangling bir reference tasarlayabilir ve host'u free edilmiş memory'yi dereference etmeye zorlayabilir — bir use-after-free. Free edilen slot daha sonra attacker-etkili bir object ile yeniden doldurulabilir.

CVE-2020-4004 (bir önceki XHCI UAF'ı) ve CVE-2024-22252 ile aynı emulated-USB device-backend ailesinden ve kavramsal olarak UHCI controller bug'ı ile komşu. Bu kayıt ayrı bir bug'ı belgeler: CVE-2021-22040, VMSA-2022-0004 ile düzeltilmiştir ve sibling'lerinden farklı bir advisory/yıl/patch build setine sahiptir — ortak bug sınıfı onları birleştirmez.

Walkthrough

Public advisory'den (VMSA-2022-0004) kavramsal reprodüksiyon. Offset, struct field, gadget zinciri veya exploit verilmemiştir.

  1. Guest'te, sanal XHCI controller'ı normal device-attach ve slot/endpoint kurulumundan geçir ki host backend takip object'lerini allocate etsin.
  2. Başka bir code path hâlâ bir reference tutarken bu host object'lerinden birini free eden bir teardown/disable/reset path'ini çağır.
  3. Guest operasyonlarını sırala ki dangling reference free'den sonra kullanılsın.
  4. Free edilen allocation'ı (heap grooming) attacker-etkili veriyle yeniden doldur, ardından bayat dereference'ı vmware-vmx olarak host code execution'a yönlendir.

Warning

Patch'lenmiş / tarihsel. ESXi'de etki VMX sandbox'ı ile sınırlıdır; Workstation/Fusion'da host code execution'a ulaşabilir. Burada yalnızca bug sınıfı için belgelenmiştir — silah haline getirilmiş primitive veya layout yok.

Detection

  • Host: tek bir guest'in USB 3.x / XHCI aktivitesiyle korele vmware-vmx crash'leri (segfault/abort); VM-başına tekrarlayan VMX restart'ları güçlü bir sinyaldir.
  • Telemetri: gerçek bir USB iş yükü olmayan bir VM'den gelen olağandışı XHCI slot enable/disable veya device reset dizisi patlamaları.
  • EDR/host logları: vmware-vmx core dump'larını topla ve triyaj et; free edilmiş bir object'in dereference'ıyla tutarlı faulting erişimleri işaretle.

Mitigation

  • VMSA-2022-0004 uyarınca patch'le: Workstation 16.2.1, Fusion 12.2.1 ve ESXi (örn. ESXi 7.0 U3c / ESXi70U3c-19193900 ve karşılık gelen 6.7 / 6.5 patch build'leri). Birkaç USB ile ilgili CVE birlikte düzeltildi; advisory'nin tamamını uygula.
  • Sertleştirme: USB'ye ihtiyacı olmayan VM'lerden sanal XHCI / USB controller'ı kaldırarak erişilebilir surface'i küçült.

References