Skip to content

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-vmx memory'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.

  1. 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.

  2. 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.

  3. Sonuç: vmware-vmx crash'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-vmx crash'i; heap-guard page'leri veya allocator integrity check'leri xHCI/USB path'indeki OOB write'ı yakalar. vmware.log iç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.

References