VMware XHCI USB out-of-bounds write (CVE-2020-3968)¶
VMware'in xHCI (USB 3.0) controller'ındaki bir out-of-bounds write, local bir guest'in host
vmware-vmxmemory'sini bozmasına ve böylece DoS veya potansiyel hypervisor seviyesinde code execution'a yol açmasına izin verir.
Mechanism¶
Sınır neden aşılıyor
Emüle edilen xHCI (USB 3.0) controller host'taki vmware-vmx process'i
içinde çalışır. Guest, transfer descriptor'larını (TRB), context yapılarını
ve host'un kendi heap buffer'larına veri kopyalarken kullandığı length/offset
alanlarını sağlar. Açık (CWE-787, out-of-bounds write): guest-kontrollü bir
length/offset yeterince doğrulanmaz, dolayısıyla host guest-etkili veriyle bir
buffer'ın ötesine yazar. İhlal edilen invariant, eşlik eden read bug'ı ile
aynı emulated-device kuralıdır: guest tarafından verilen length/offset
değerleri host buffer'larını indeklemeden önce range-check'ten geçirilmelidir.
Bozulma host process'inde gerçekleştiği için bu en hafifinden bir crash, en
kötüsünden bir control-flow hijack demektir. VMware'e göre ürünler "USB 3.0
controller (xHCI) içinde bir out-of-bounds write vulnerability barındırıyor";
bir VM içindeki kötü niyetli local admin "VM'in vmx process'ini crash edebilir
ya da hypervisor'ın memory heap'ini bozabilir."
Walkthrough¶
VMSA-2020-0015 / NVD'den kavramsal yeniden kurulum. Sadece mantık; silah haline getirilmemiştir.
Patch'lenmiş / tarihsel
2020'de açıklandı ve düzeltildi (VMSA-2020-0015). Desteklenen build'lerde reprodüksiyon için değil, detection ve anlamak amacıyla sunulmuştur.
-
Guest'teki bir local administrator, emüle edilen xHCI controller'ın transfer ring'lerini, length/offset değeri hedef host heap buffer'ını aşan ve device model tarafından doğrulanmayan bir request ile programlar.
-
Host'un xHCI write path'i guest-etkili byte'ları allocation'ın ötesine kopyalar ve komşu host heap object'lerini/metadata'sını bozar.
-
Sonuç:
vmware-vmxcrash'i (DoS) veya, heap grooming ve eşlik eden bir infoleak (örn. CVE-2020-3965) ile potansiyel hypervisor seviyesinde code execution.
Detection¶
- Host tarafı: guest USB aktivitesi sırasında
vmware-vmxcrash'i; heap-guard page'leri veya allocator integrity check'leri xHCI/USB path'indeki OOB write'ı yakalar.vmware.logiçinde guest xHCI/USB 3.0 programlamasıyla korele crash'ler en önemli sinyaldir. - Davranışsal: Aşırı büyük veya bozuk length/offset alanlarına sahip xHCI TRB'leri/context'leri gönderen bir guest anormaldir.
- Chaining sinyali: Bir infoleak patlamasının ardından gelen bir OOB write, iyi huylu bir fault yerine leak-then-corrupt escape girişimine işaret eder.
Mitigation¶
- Patch: VMSA-2020-0015'i uygula. Düzeltildi: Workstation 15.5.5, Fusion 11.5.5, ESXi 6.5 = ESXi650-202005401-SG, ESXi 6.7 = ESXi670-202004101-SG, ESXi 7.0 = ESXi_7.0.0-1.20.16321839.
- Config sertleştirme: USB 3.0'a ihtiyacı olmayan guest'lerden sanal USB 3.0 / xHCI controller'ı kaldır; bu, vulnerable write path'ini ortadan kaldırır.
- Defense in depth: Host'ları patch'li tut ve guest'leri untrusted olarak ele al ki bir heap-corruption primitive'i host escape'e zincirlenemesin.