Skip to content

Cloudburst (VMware SVGA II framebuffer guest-to-host escape)

"Cloudburst" olarak sunulan bir guest-to-host escape (CVE-2009-1244): VMware'in emule ettiği SVGA II display adapter'ını suistimal ederek bir guest'in host (vmware-vmx) process memory'sine yazmasını ve host'ta code execution elde etmesini sağlar.

Mechanism

Note

VMware Workstation/ESX gibi bir type-2 hypervisor, legacy ve paravirtual device'ları bir host user-space process'i (vmware-vmx) içinde emule eder. Isolation invariant'ı şudur: bir guest'in virtual device ile etkileşimleri — port I/O, MMIO ve paylaşılan framebuffer/FIFO memory — host kodu onlara göre iş yapmadan önce tam olarak bounds-check edilmelidir. SVGA II virtual video adapter'ı, guest'in register ve memory write'larıyla sürdüğü bir command FIFO ve bir framebuffer expose eder. Cloudburst bug sınıfı bir device-emulation memory-safety hatasıdır: guest-controlled SVGA state'i (framebuffer'ın bir bölgesini veya bir FIFO command'ını tanımlayan offset/koordinat/length'ler) host display-emulation kodu tarafından yeterli validation olmadan kullanılır; bu da guest'in bir write'ı amaçlanan framebuffer bölgesinin dışına, komşu host memory'sine yönlendirmesine olanak tanır — guest→host sınırını aşan bir out-of-VM write.

Bu, sonraki VMware SVGA 3D bug'larında (bkz. VMware SVGA 3D guest-to-host) ve QEMU virtio-gpu'da (bkz. 3D Red Pill virtio-gpu) tekrar eden kanonik "virtual GPU / display device" escape pattern'idir.

Walkthrough

Public reference: CVE-2009-1244 ve K. Kortchinsky'nin Black Hat USA 2009 "Cloudburst" sunumu. Konsept düzeyinde reproduction path (silahlandırılmış detay yok):

  1. Guest'ten, SVGA II adapter'ı I/O register'ları / MMIO üzerinden programlayarak framebuffer geometry'sini kur ve FIFO command'ları submit et.
  2. Host SVGA emulation'ının, framebuffer'ı backing'leyen host memory içinde bir destination hesaplamak için kullandığı geometry/offset değerlerini ver.
  3. Host bu guest-supplied bound'lara güvendiği için, crafted bir bölge bir write'ı framebuffer allocation'ının ötesine, komşu host process memory'sine sürer.
  4. Attacker host memory'sini (vmware-vmx içindeki heap/function-pointer state'i) öyle şekillendirir ki out-of-bounds write host process'te control-flow hijack'e dönüşür.

Beklenen gözlem: guest'ten gelen anormal SVGA FIFO/framebuffer programlamasının ardından vmware-vmx memory'sinde corruption; exploit olmayan bir denemede ise host tarafında bir crash.

Warning

Bu, bug sınıfı için belgelenmiş, tarihsel ve patch'lenmiş bir issue'dur. Bu kayıt konsept düzeyindedir; exploit geometry'si veya bir host memory layout'u vermez.

Detection

  • Host tarafı: bir guest'ten gelen olağandışı SVGA register / FIFO aktivitesiyle korele olan vmware-vmx crash'leri veya abort'ları; guest framebuffer geometry'sinin tahsis edilen framebuffer boyutuna karşı izlenmesi.
  • Guest-integrity tarafı: out-of-range SVGA geometry programlayan bir guest, normal display driver'lar için anormaldir.

Mitigation

  • CVE-2009-1244'ü fix'leyen VMware security advisory'sini uygula (patch'lenmiş VMware ürün sürümleri).
  • 3D/gelişmiş SVGA acceleration gerekmediği yerlerde, display-device attack surface'ini küçültmek için bunu disable et.
  • Defense-in-depth: device-emulation process'ini azaltılmış privilege'lar ve sandboxing ile çalıştır; böylece bir host-process compromise'i tam host kontrolüne eşit olmaz.

References

  • CVE-2009-1244 (NVD/MITRE). (not fetched in this environment)
  • K. Kortchinsky, "Cloudburst: Hacking 3D (and Breaking Out of VMware)", Black Hat USA 2009. (not fetched in this environment)
  • VMware Security Advisory covering CVE-2009-1244. (not fetched in this environment)