VMware Workstation VBluetooth/USB uninitialized-memory + SDP stack-overflow guest-to-host escape¶
Pwn2Own Vancouver 2023 VMware Workstation guest-to-host chain'i (CVE-2023-20870 uninitialized-heap info leak + CVE-2023-20869 stack buffer overflow); emüle USB/Bluetooth (
VBluetooth) device path'inde —VUsbBluetooth_OpNewUrb/RBuf_Newuninitialized heap ve SDP (SDPData_ReadElement/ReadRawInt) stack overflow. Not: backdoor/RPCI burada yalnızca komşu virtual-device transport bağlamıdır, bug sınıfı değildir.
Mechanism¶
Note
VMware Workstation, virtual device'ları host user-space process'i
vmware-vmx içinde emüle eder. Isolation invariant'ı, guest tarafından
sağlanan her device state byte'ının — USB Request Block'ları (URB'ler),
L2CAP/SDP paketleri, register ve FIFO içerikleri — host onun üzerinde işlem
yapmadan önce initialize edilmiş ve bounds-check'ten geçmiş olması
gerektiğidir. Pwn2Own 2023 chain'i, "Share Bluetooth devices with the virtual
machine" etkinken ulaşılabilen virtual Bluetooth bileşeninde (VBluetooth) bu
invariant'ın iki yönünü kırar: (1) uninitialized host heap guest'e geri
döner (CVE-2023-20870, OOB read / info leak) ve (2) guest-controlled bir
length sabit bir stack buffer'ı overflow eder (CVE-2023-20869, stack-based
overflow). Bu parsing privileged vmware-vmx host process'inde çalıştığı için,
onun memory'sini sızdırmak host ASLR'yi yener ve onun stack'ini bozmak host
code execution sağlar — bir out-of-VM escape.
Bu, SVGA display escape'leriyle (bkz. Cloudburst) ve QEMU device-emulation corruption'ıyla (bkz. QEMU device-emulation MMIO/PIO callback memory corruption) aynı "guest tarafından sağlanan device descriptor'lara güven" kusur sınıfıdır.
Walkthrough¶
Public referans: ZDI'nin writeup'ı ve VMSA-2023-0008. Kavramsal yeniden üretim yolu (örnekleme amaçlı, public materyalden — weaponize edilmiş chain yok):
- Guest'ten, URB göndermek için emüle USB controller'ı sürün. ZDI'ye göre,
VUsbBluetooth_OpNewUrb()bir buffer'ıRBuf_New()→mallocile allocate eder ve uninitialized bırakır;urb_actualsizefield'ı guest-controllabletotal_urb_len'den validation olmadan alınır. urb_actualsizehiç üzerine yazılmasın diye geçersiz bir opcode'lu bir URB gönderin;UHCI_UrbResponse()ardından uninitialized host heap byte'larını guest'e geri döndürür,vmware-vmxpointer'larını sızdırır (CVE-2023-20870) ve host ASLR'yi yener.- Bir Bluetooth L2CAP bağlantısı kurun (signalling CID'ye
L2CAP_CMD_CONN_REQ, PSM 0x1) ve Service Discovery Protocol'ü çalıştırın. ZDI'ye göre,SDPData_ReadElement()bir size descriptor okur ve guest-controlled birsize'ıSDPData_ReadRawInt()'e geçirir; sabit boyutlu bir stack buffer'ı overflow eder (CVE-2023-20869). - Leak ile overflow'u birleştirerek
vmware-vmx'te host control flow'u yeniden yönlendirin.
Beklenen gözlemlenebilir: non-exploit bir denemede, bir guest'ten gelen anormal
Bluetooth URB/SDP trafiğinin ardından vmware-vmx bir stack canary'de abort eder /
crash olur.
Warning
Bug sınıfı için belgelenmiş, tarihsel, patch'lenmiş issue. Not kavramsaldır ve exploit offset'i ya da host memory layout'u sağlamaz.
Detection¶
- Bluetooth sharing etkin VM'leri inventory edin — device yüzeyine yalnızca o konfigürasyonda ulaşılabilir (VMware KB91760).
- Host-side: guest Bluetooth (URB, L2CAP, SDP) aktivitesiyle korele
vmware-vmxcrash'leri / stack-protector abort'ları. - Guest-integrity: hiçbir Bluetooth workload'u beklenmezken bir guest'in Bluetooth SDP trafiği / malformed URB'ler göndermesi anormaldir.
Mitigation¶
- VMSA-2023-0008'i uygulayın: VMware Workstation 17.0.2 ve Fusion 13.0.2'de düzeltildi (vulnerable örnek build 17.0.1).
- VMware'e göre workaround:
VBluetoothattack surface'ini kaldırmak için "Share Bluetooth devices with the virtual machine"'i devre dışı bırakın. - Defense in depth: device emulation'ı azaltılmış yetkiler/sandbox'lama ile
çalıştırın; böylece bir
vmware-vmxcompromise'i tam host kontrolü olmaz.
References¶
- ZDI, "CVE-2023-20869/20870: Exploiting VMware Workstation at Pwn2Own Vancouver", https://www.thezdi.com/blog/2023/5/17/cve-2023-2086920870-exploiting-vmware-workstation-at-pwn2own-vancouver
- VMSA-2023-0008 (Broadcom/VMware Security Advisory), https://support.broadcom.com/web/ecx/support-content-notification/-/external/content/SecurityAdvisories/0/23670