VMware XHCI USB info leak (CVE-2020-3965)¶
VMware'in xHCI USB controller'ındaki bir information leak, local bir guest'in host
vmware-vmxprocess'inden privileged hypervisor memory'sini bir out-of-bounds read üzerinden okumasına olanak tanır.
Mechanism¶
Boundary neden kırılıyor
VMware, xHCI (USB 3.0) host controller'ını vmware-vmx process'i içinde
emüle eder. Guest, transfer descriptor'larını (TRB'ler) ve context yapılarını
shared/guest physical memory'ye yerleştirerek ve host'un kendi buffer'larını
index'lemek için kullandığı length ve offset field'larını sağlayarak onu sürer.
Kusur (CWE-125, out-of-bounds read): guest-controlled bir length/offset tam
olarak range-check'ten geçmez, böylece host amaçlanan buffer'ı aşarak okur ve
o byte'ları guest'e döndürebilir. Aşılan invariant evrensel emüle-device
kuralıdır: guest tarafından sağlanan length'ler ve offset'ler, host memory'sini
index'lemeden önce validate edilmelidir. Açığa çıkan byte'lar privileged host
memory'sidir, dolayısıyla bu bir crash değil bir ASLR/secret-sızdıran
primitive'dir. VMware: ürünler "XHCI USB controller'da bir information leak
içerir" ve local bir aktörün "privileged bilgiyi okumasına" izin verir.
Walkthrough¶
VMSA-2020-0015 / NVD'den kavramsal yeniden kurgu. Yalnızca mantık; weaponize edilmemiş.
Patch'lenmiş / tarihsel
2020'de açıklandı ve düzeltildi (VMSA-2020-0015). Detection ve anlayış için gösterilmiştir, desteklenen build'lerde yeniden üretim için değil.
-
Guest'teki local bir aktör, emüle xHCI controller'ın transfer ring'lerini / context yapılarını, length veya offset field'ı index'lediği host buffer'ı aşan bir request ile programlar.
-
Host'un xHCI read path'i o field'ı tam bir bounds check olmadan kullanır ve komşu host memory'sini okur.
-
O out-of-bounds byte'lar — privileged
vmware-vmxmemory'si — guest-visible memory'ye döndürülür ve host secret'larını/pointer'larını açığa çıkarır.
Detection¶
- Host-side: Bir infoleak sessizdir (crash yok). ASan/valgrind tarzı tooling
xHCI path'indeki OOB read'i flag'ler; production host'larda
vmware.logxHCI/USB aktivitesini anormal guest request paternleriyle korele edin. - Behavioral: xHCI TRB'leri/context'lerini oversized veya malformed length/offset field'larıyla yayan bir guest, normal USB kullanımı için anormaldir.
- Chaining sinyali: Bir leak genellikle bir write girişiminden önce gelir —
sonraki bir
vmware-vmxcrash'ini izleyin (krş. eşlenmiş CVE-2020-3968 OOB write).
Mitigation¶
- Patch: VMSA-2020-0015'i uygulayın. Düzeltilmiş: Workstation 15.5.2, Fusion 11.5.2, ESXi 6.5 = ESXi650-202005401-SG, ESXi 6.7 = ESXi670-202006401-SG, ESXi 7.0 = ESXi_7.0.0-1.20.16321839.
- Config hardening: USB 3.0'a ihtiyaç duymayan guest'lerden virtual USB 3.0 / xHCI controller'ı kaldırın; vulnerable read path'ini kaldırır.
- Defense in depth: Host'ları patch'li tutun; böylece bu leak bir host-memory-corruption bug'ını weaponize etmek için gereken adres disclosure'ını sağlayamaz.