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-vmxprocess'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.
- Guest'te, sanal XHCI controller'ı normal device-attach ve slot/endpoint kurulumundan geçir ki host backend takip object'lerini allocate etsin.
- 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.
- Guest operasyonlarını sırala ki dangling reference free'den sonra kullanılsın.
- Free edilen allocation'ı (heap grooming) attacker-etkili veriyle yeniden
doldur, ardından bayat dereference'ı
vmware-vmxolarak 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-vmxcrash'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-vmxcore 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.