Skip to content

VMware Workstation/Fusion OOB read (CVE-2024-22251)

VMware Workstation ve Fusion'ın emüle ettiği USB CCID'sinde (chip card interface device) guest tarafından tetiklenebilir bir out-of-bounds read (CWE-125): bir guest admin virtual smart-card reader'ı öyle sürer ki host backend bir buffer'ı aşarak okur ve host vmware-vmx process memory'sini guest'e açığa çıkarır. VMSA-2024-0005'te düzeltildi (Workstation 17.5.1 / Fusion 13.5.1).

Mechanism

Note

USB CCID, USB Chip/Smart Card Interface Device sınıfıdır; VMware bir guest'in host smart card'larını kullanabilmesi için bir CCID reader emüle eder. Emulation, host vmware-vmx (VMX) process'inde yaşar ve length/offset field'ları guest driver tarafından sağlanan CCID protocol mesajlarını parse eder. Isolation invariant'ı, host'un guest tarafından sağlanan her length/index'i, ondan okumadan önce backing buffer'ın gerçek boyutuna karşı validate etmesi gerektiğidir.

CVE-2024-22251 bir out-of-bounds read'dir (CWE-125). Bir CCID request'indeki guest-controlled bir length veya offset, yeterli bounds checking olmadan bir host buffer'dan index'lemek/kopyalamak için kullanılır; böylece backend amaçlanan bölgenin ötesini okur ve o fazla byte'ları guest'e doğru döndürür. Aşılan boundary host → guest information disclosure'dır (integrity/availability etkisi yok): VMware bunu Moderate, CVSSv3 5.9 olarak derecelendirdi; yalnızca VM içinde local administrative yetkilere sahip bir aktör tarafından tetiklenebilir. Sızan host memory (potansiyel pointer'lar), ayrı bir corruption bug'ını besleyen ASLR'yi yenen bir primitive olarak hizmet edebilir.

Bu, VMware UHCI USB controller bug'da görülen descriptor-length güven kusurlarının read-tarafı benzeridir — aynı "guest tarafından sağlanan length'e güven" device-backend sınıfı, ama bir write değil bir disclosure.

Walkthrough

Public, patch'lenmiş issue (VMSA-2024-0005). Yalnızca kavramsal yol:

  1. Bir virtual USB controller'a ve ulaşılabilir CCID/smart-card device'ına sahip bir guest içinde local administrator elde edin (device'ın driver-seviyesinde kontrolü).
  2. Declare edilen length/offset'i, o request için host buffer'ı gerçekte destekleyen byte'ları aşan bir CCID protocol mesajı oluşturun.
  3. Host CCID emulation'ı oversized length'i kullanarak okur ve buffer'ın ötesindeki byte'ları response'un parçası olarak guest'e doğru kopyalar.
  4. Guest response'u okur ve artakalan host vmware-vmx memory'sini geri kazanır; sızan data'yı (ör. host pointer'ları) biriktirmek için tekrarlayın.

Warning

Tarihsel/patch'lenmiş, yalnızca kavramsal. Bu bir OOB read'dir (disclosure), bir write/escape değil. Offset veya struct layout verilmemiştir.

Detection

  • Host: bu sessiz bir read'tir; detection behavioral'dır — bir guest'in anormal/oversized length field'larıyla CCID request'leri göndermesi ya da smart-card reader'ı tekrar tekrar sürmesi. Sağlam bir backend abort da edebilir: o VM'in USB/CCID aktivitesine bağlı vmware-vmx hatalarını izleyin.
  • VM için vmware.log: CCID/USB device-error veya reset girdileri.
  • Inventory: exposure'ı kapsamlandırmak için bir virtual USB controller'a ve smart-card / CCID passthrough'u etkin VM'leri enumerate edin.

Mitigation

  • VMSA-2024-0005 düzeltmelerini uygulayın: VMware Workstation 17.5.1 ve Fusion 13.5.1. Patch'lemekten başka workaround yok.
  • Hardening: ihtiyaç duymayan VM'lerde virtual USB controller'ı kaldırın / smart-card (CCID) passthrough'u devre dışı bırakın; ulaşılabilir device'ı ortadan kaldırır.
  • Compiler/OS defense-in-depth: tüm guest tarafından sağlanan length'ler üzerinde titiz bounds validation; device parser'larının ASan/fuzzing'i; device emulation'ı sandbox'layın ve least-privilege yapın; böylece bir leak minimal değer üretir.

References