VMware drag-and-drop out-of-bounds memory guest-to-host RCE (CVE-2016-7461)¶
VMware drag-and-drop backdoor channel'ındaki bir out-of-bounds memory access, bir guest'in host Workstation/Fusion process'inde kod çalıştırmasına izin verir — PwnFest 2016'da gösterilen tam bir VM escape.
Mechanism¶
Bug class: host tarafındaki bir backdoor RPC handler'ında guest-controlled offset/length
VMware Workstation ve Fusion, host integration özelliklerini — drag-and-drop (DnD),
copy-and-paste (C&P), shared folder'lar — guest'e bir backdoor channel üzerinden
expose eder (magic I/O port 0x5658/VMWARE_MAGIC aracılığıyla ulaşılan VMware "RPCI"
/ guest-RPC mekanizması). Guest, host VMX process'inin parse edip üzerine eylem aldığı
yapılandırılmış DnD protokol mesajları gönderir.
Security invariant'ı şudur: host, o mesajlardaki her field'ı untrusted olarak ele
almalıdır: guest'ten gelen length'ler, offset'ler ve count'lar, host memory'sini
index'lemek veya kopyalamak için kullanılmadan önce doğrulanmalıdır. CVE-2016-7461'de
DnD mesaj ele alımı guest tarafından sağlanan bir size/offset'e güvenir ve host
tarafındaki bir buffer üzerinde bir out-of-bounds memory access (read ve/veya write)
gerçekleştirir. Parsing, host'taki ayrıcalıklı vmware-vmx process'inin içinde
çalıştığından, kontrollü bir out-of-bounds write, guest'in asla ulaşmaması gereken
host memory'sini bozar ve bir guest mesajını host code execution'a çevirir.
Aşılan sınır guest->host'tur: backdoor RPC intended iletişim path'idir, ama eksik validation onu unintended bir memory corruption primitive'i yapar. Bu, DnD/C&P/shared-folder kodu boyunca tekrar eden klasik "host integration RPC'sine güven" başarısızlığıdır.
Walkthrough¶
Bu, Qinghao Tang, Xinlei Ying (360 Marvel Team) ve lokihardt tarafından PwnFest 2016'da çalışan bir guest-to-host escape olarak raporlandı. Kavramsal düzeyde:
- Guest backdoor/RPCI channel'ını açar ve DnD protokol versiyonunu müzakere eder.
- Guest, gömülü size/offset field'ı aslında sağlanan veriyle tutarsız olan crafted bir DnD mesaj dizisi gönderir.
- Host DnD handler'ı o field'ı uygun bounds checking olmadan kullanır ve VMX address space'inde intended buffer'ın dışına okur veya yazar.
- Çevredeki host heap'i şekillendirerek ve out-of-bounds target'ı seçerek, saldırgan corruption'ı host process'inin bir control-flow ele geçirilmesine yönlendirir.
Conceptual backdoor RPC submission (illustrative only)
// Guest issues a guest-RPC command through the VMware backdoor port.
// Real exploitation crafts the DnD message body; details omitted.
rpci_send("tools.capability.dnd_version 3")
rpci_send(<crafted DnD transfer message with mismatched length/offset>)
// host DnD parser performs an out-of-bounds access on a VMX heap buffer
Shape of the trusted-length pattern (conceptual)
Yayınlanan materyal kasıtlı olarak yüksek seviyededir (turnkey bir exploit yerine bir patch-diff analizi); çıkarım, fix'in DnD mesaj field'larındaki eksik validation'ı eklemesidir.
Detection¶
Telemetri sinyalleri
- VMX process crash'leri: host'ta
vmware-vmxaccess violation'ları / core dump'lar, özellikle DnD veya clipboard aktivitesiyle ilişkili, per-VMvmware.log'a kaydedilmiş. - vmware.log: anormal guest-RPC / DnD protokol kayıtları, tekrarlanan DnD versiyon müzakeresi, ya da tek bir VM'den backdoor channel hataları.
- Host EDR:
vmware-vmxtarafından spawn edilen beklenmedik child process'ler, ya da bir DnD trafiği patlamasından sonra normal profilinin dışında eylemler gerçekleştiren VMX process'i. - Davranışsal: DnD/C&P'yi bir insan kullanıcının yapacağından çok daha agresif süren bir guest — backdoor'a karşı fuzzing veya exploit girişimlerinin göstergesi.
Mitigation¶
Patch ve sertleştirme
- Patch (VMSA-2016-0019'a göre): VMware Workstation Pro/Player 12.5.2; VMware Fusion Pro/Fusion 8.5.2.
- Config workaround: Workstation Pro ve Fusion'da, drag-and-drop ve copy-and-paste'in her ikisi de devre dışıysa sorun exploit edilemez. (Bu workaround Workstation Player'da mevcut değildir.) Workload'ın ihtiyaç duymadığı host integration özelliklerini devre dışı bırak.
- Defense in depth: untrusted guest'leri izole et; shared clipboard / shared folder'ları etkin bir host'ta untrusted VM'ler çalıştırma.