VMware EHCI USB heap OOB write Geekpwn escape (CVE-2022-31705)¶
VMware'in emüle edilmiş EHCI (USB 2.0) controller'ındaki bir heap out-of-bounds write, bir guest admin'in host VMX process'i olarak kod çalıştırmasına izin verir — GeekPwn 2022'de gösterilen guest-to-host escape.
Mechanism¶
Bug class: guest-controlled transfer descriptor bir host heap buffer'ı overflow eder
EHCI (Enhanced Host Controller Interface) emüle edilmiş USB 2.0 controller'dır. Gerçek bir host controller gibi, device model guest ile emüle edilmiş USB endpoint'leri arasında DMA transfer'leri gerçekleştirmek için guest physical memory'deki guest tarafından tanımlanan data structure'ları — queue head'leri (QH) ve queue element transfer descriptor'ları (qTD) — walk eder. Her descriptor, host'un kendi heap buffer'larına yapılan kopyaları boyutlandırmak için kullandığı length'ler ve buffer pointer'ları taşır.
Security invariant'ı şudur: device model, kopyalamadan önce toplam transfer length'ini ve per-buffer offset'lerini host buffer'a karşı doğrulamalıdır. CVE-2022-31705 bir heap out-of-bounds write'tır: EHCI transfer path'indeki guest-controlled bir length'e güvenilir, böylece controller VMX process'inde bir host heap allocation'ının sonunu aşarak yazar. Corruption ayrıcalıklı emulator'ın address space'inde olduğundan, guest->host sınırı write yönünde aşılır ve — heap grooming ve bir control-flow target'tan sonra — VMX olarak code execution sağlayan bir memory-corruption primitive'i verir.
Containment ürüne göre farklılık gösterir: ESXi'de VMX bir sandbox içinde çalışır, yani başarılı bir write VMX sandbox içinde çalışır (CVSS 5.9); Workstation/Fusion'da VMX normal bir host process'i olarak çalışır, yani aynı bug host makinenin kendisinde code execution demektir (CVSS 9.3). Bu, diğer emüle edilmiş USB OOB-write escape'leriyle (örn. hypervisor'lar genelinde xHCI/EHCI descriptor over-write'ları) aynı yapısal aileye aittir.
Walkthrough¶
Yuhao Jiang tarafından raporlandı ve GeekPwn 2022'de gösterildi. Exploitation guest'te local administrative privilege'lar ve attach edilmiş emüle bir USB 2.0 (EHCI) controller gerektirir. Kavramsal olarak:
- Guest kernel-mode kodu EHCI controller register'larını programlar ve guest memory'de host buffer'dan daha büyük bir transfer length'i ile bir QH/qTD chain inşa eder.
- Guest schedule'ı başlatır; host EHCI model'i descriptor'ları walk eder ve transfer'i gerçekleştirir.
- Trusted length, bir host heap allocation'ını aşan bir kopyayı sürer ve komşu VMX heap metadata'sını/object'lerini bozar.
- Overflow edilen buffer'dan sonra faydalı bir target yerleştirmek için heap grooming ile, overwrite bir control-flow hijack'e ve VMX olarak code execution'a çevrilir.
Conceptual qTD with an over-large length (illustrative only)
Shape of the unchecked transfer copy (conceptual)
Açıklanan materyal advisory irtifasında kalır; fix, EHCI transfer path'indeki eksik length validation'ı ekler.
Detection¶
Telemetri sinyalleri
- VMX crash'leri: USB aktivitesiyle ilişkili
vmware-vmxheap corruption fault'ları / core dump'lar; ESXi'de, USB/EHCI modülüne atıfta bulunanvmkernel.log'daki VMX sandbox crash'leri veya VM panic'leri. - vmware.log: USB/EHCI controller hataları, beklenmedik controller reset'leri, ya da tek bir VM'den VMX restart olayları.
- Host EDR:
vmware-vmx'teki heap-corruption imzaları, ya da USB aktivitesinden sonra beklenmedik child'lar spawn eden / anormal davranan VMX process'i (Workstation/Fusion, VMX'in unsandboxed olduğu). - Davranışsal: oversized transfer length'leriyle malformed EHCI descriptor chain'leri yayan bir guest — gerçek bir USB driver'a kıyasla anormal ve exploitation'ın güçlü bir göstergesi.
Mitigation¶
Patch ve sertleştirme
- Patch (VMSA-2022-0033'e göre): ESXi 8.0 için ESXi80a-20842819, ESXi 7.0 için ESXi70U3si-20841705; Workstation 16.x için 16.2.5; Fusion 12.x için 12.2.5 (ESXi async patch'leri aracılığıyla VMware Cloud Foundation'ı da kapsar).
- Config workaround (kullanılmayan hardware'i kaldır): VMware KB87617 (ESXi) / KB79712 (Workstation/Fusion)'a göre, ihtiyaç duymayan VM'lerden USB controller'ı kaldır — EHCI/USB 2.0 controller'ı kaldırmak vulnerable device model'i ortadan kaldırır. USB controller'larını untrusted VM'lere attach etme.
- Defense in depth: host'ları patch'li tut; guest admin'i emulator'a karşı düşman bir sınır olarak ele al.