VMware SVGA out-of-bounds read guest-to-host RCE (CVE-2018-6974)¶
SVGA video device emulation'ındaki bir out-of-bounds read, guest yazılımının host üzerinde kod çalıştırmasına izin verebilir.
Mechanism¶
İhlal edilen invariant
SVGA video-device emulation, graphics operation'larını tanımlayan guest'in sağladığı veriyi işler. Korunan sınır guest → host code execution'dır. CVE-2018-6974, SVGA device'ında guest'in sağladığı verinin validate edilmemesine dayanan bir out-of-bounds read'dir (CWE-125). Bir OOB read öncelikle komşu host belleğini leak eder; primary impact host-memory bilgi sızıntısıdır. NVD/VMware advisory'sinin ifadesiyle bu sorun guest'in host üzerinde kod çalıştırmasına ("may allow a guest to execute code on the host") izin verebilir — yani host code execution, kontrolsüz SVGA input'unun bu OOB read'i üzerinden açığa çıkan layout/leak'in exploit edilmesine atfedilir; cited source'lar ayrı bir heap-overflow primitive'ini dokümante etmez. İhlal edilen invariant, guest'in kontrol ettiği SVGA input'u üzerindeki spatial memory safety'dir.
Kritik guest-to-host escape; Haziran 2018'de raporlandı, Ekim 2018'de VMSA-2018-0026'da (0021 değil) düzeltildi.
Walkthrough¶
VMSA-2018-0026 ve public disclosure'dan, yüksek seviyeden:
- Guest, boyut/offset alanları düzgün validate edilmeyen hazırlanmış SVGA device input'u gönderir.
- Emulator out of bounds okur ve komşu host belleğini açığa çıkarır (ASLR'yi yenerek / object'leri konumlandırarak).
- O bilgiyi corruption surface'iyle birlikte kullanarak saldırgan, host process'inde bir write/control primitive'i sürer ve code execution'a ulaşır (guest escape).
Detection¶
- Bir guest için
vmware.logSVGA hataları vevmware-vmxcrash'leri/ backtrace'leri. - Host memory-safety telemetry (instrumented build'lerde OOB-read detection, SVGA code path'lerinde crash signature'ları).
- 3D/SVGA operation'larının ardından anormal VMX-process aktivitesini işaretleyen EDR.
Mitigation¶
- VMSA-2018-0026'yı uygula (ESXi 6.0/6.5/6.7 patch'leri, Workstation 14.1.3, Fusion 10.1.3).
- Untrusted guest'ler için 3D acceleration'ı disable et / SVGA surface'i minimize et.
- leak→corrupt zincirini körleştirmek için host ASLR/DEP ve allocator hardening'i enabled tut.