VMware SVGA 3D shader heap buffer overflow¶
VMware'in SVGA3D shader-processing yolundaki bir guest-to-host heap buffer overflow: declare edilen boyutları/indeksleri host allocation'ını aşan hatalı biçimli shader bytecode'u
vmware-vmxheap'ini bozar. Aynı shader-processing attack surface'inde tekrar eden bug sınıfı (örn. CVE-2017-4924 ve CVE-2024-22268), ki bu CVE'lerin aynı root cause'u paylaşıp paylaşmadığı kaynaklardan doğrulanmamıştır.
Mechanism¶
Note
Bir guest SVGA3D command'ları üzerinden shader bytecode gönderdiğinde, host
shader translator'ı guest bytecode'unun içindeki alanlardan
boyutlandırılmış heap buffer'ları allocate eder (constant-buffer length'leri,
instruction/token sayıları, register indeksleri). Invariant, parser'ın yazma
öncesinde her boyutu/indeksi gerçek allocation'a karşı validate etmesi
gerektiğidir. Shader-heap-overflow sınıfı bunu kırar: dcl_immediateConstantBuffer /
VGPU10_OPCODE_CUSTOMDATA gibi bir declaration, host'un rezerve ettiği
buffer'dan daha büyük bir length taşır, dolayısıyla copy kontrollü byte'ları
komşu host heap chunk'larına yazar — bir guest → host out-of-bounds
write. SVGA II modern shader exploitation
içindeki stack-array durumundan farklı olarak, bu kayıt özellikle
heap-overflow primitive'ine odaklanır.
Walkthrough¶
Public, patch'lenmiş materyal (Comsecuris SVGA shader write-up'ı; CVE-2017-4924 için VMSA-2017-0015; yeniden ortaya çıkış VMSA-2024-0010 / CVE-2024-22268). Konsept yolu:
- Bir guest 3D app'inden, SVGA3D FIFO üzerinden shader bytecode emit et.
- Bir immediate-constant-buffer / custom-data length'ini host translator'ın bunun için allocate ettiğinden daha büyük ayarla.
- Host, guest'in sağladığı shader verisini heap chunk'ının ötesine kopyalar.
- Heap grooming bir hedef object'i chunk'tan sonra konumlandırır ki overflow host code execution'a doğru kullanışlı bir corruption (pointer/length alanı) versin.
Gözlemlenebilir: hatalı biçimli shader submission'ında vmware-vmx crash'i.
Warning
Patch'lenmiş/tarihsel. Konseptseldir; çalışan bytecode ya da host heap layout'u sağlanmamıştır. CVE-2024-22268, VM'de 3D graphics enabled olmasını gerektirir.
Detection¶
- Host: shader/FIFO trafiğine bağlı
vmware-vmxheap-corruption crash'leri. - Config: 3D acceleration enabled olan VM'ler attack surface'tir.
Mitigation¶
- Düzeltilmiş VMware build'lerine patch'le (CVE-2017-4924 için VMSA-2017-0015; CVE-2024-22268 için VMSA-2024-0010) ve güncel kal.
- Kullanılmayan yerlerde 3D acceleration'ı disable et.
- Defense-in-depth olarak device emulation'ı sandbox'la.