Skip to content

VMware SVGA heap overflow Pwn2Own escape (CVE-2017-4902)

SVGA virtual graphics device'ındaki bir heap buffer overflow, bir guest'in host üzerinde kod çalıştırmasına izin verir (Pwn2Own 2017 escape).

Mechanism

İhlal edilen invariant

SVGA device emulation, guest'in sağladığı parametrelerden boyutlandırılmış host taraflı heap buffer'ları yönetir. Korunan sınır guest → host code execution'dır. CVE-2017-4902 bir heap buffer overflow'dur: emulator bir heap allocation'ına tutabileceğinden daha fazla veri yazar çünkü guest'in kontrol ettiği bir length buffer boyutuna karşı validate edilmemiştir. Overflow, host process'indeki komşu heap metadata'sını ya da komşu object'leri bozar; o komşuluğu kontrol etmek bir write/control-flow primitive'i verir ve host üzerinde code execution'a escalate edilir. İhlal edilen invariant, guest input'uyla sürülen bir host heap buffer'ının spatial memory safety'sidir.

Pwn2Own 2017'de (CanSecWest) Team Sniper ve Qihoo 360 tarafından gösterildi; VMSA-2017-0006'da düzeltildi (Mar 2017).

Walkthrough

VMSA-2017-0006 ve Pwn2Own 2017 raporlamasından, yüksek seviyeden:

  1. Guest, SVGA command'larını öyle sürer ki bir host heap buffer bir boyutla allocate edilir ama daha büyük, guest'in kontrol ettiği bir miktarla yazılır.
  2. Overflow, VMX/host process'indeki komşu heap state'ini bozar.
  3. Heap grooming ile corruption bir control primitive'ine yönlendirilir ve host code execution'a escalate edilir (guest escape).

Generic primitive için ../primitive/heap-overflow-to-arbitrary-read-write.md'e bak; exploit ayrıntıları atlanmıştır.

Detection

  • SVGA aktivitesine bağlı vmware-vmx/vmware-vmware abort'larını gösteren vmware.log ve host crash dump'ları.
  • Host heap-corruption telemetry (page-heap, guard page'ler, allocator assert'leri).
  • VMX process'inden anormal code execution ya da child process'leri işaretleyen EDR.

Mitigation

  • VMSA-2017-0006'yı uygula (ESXi 6.5/5.5 patch'leri, Workstation 12.5.5, Fusion 8.5.6).
  • Gerekmeyen device feature'larını disable et; host allocator hardening'i enabled tut.
  • Host mitigation'larıyla eşleştir (../mitigation/data-execution-prevention.md, ../mitigation/address-space-layout-randomization.md).

References