VMware SVGA off-by-one heap overflow (CVE-2020-3969)¶
SVGA device'ındaki bir off-by-one heap overflow, 3D-enabled bir guest'in host üzerinde kod çalıştırmasına izin verebilir.
Mechanism¶
İhlal edilen invariant
SVGA emulation, host heap buffer'larının boyutunu guest input'undan hesaplar. Korunan sınır guest → host code execution'dır. CVE-2020-3969 bir off-by-one heap overflow'dur: bir length/loop-bound hesabı tek bir element kadar yanlıştır, dolayısıyla emulator bir host heap allocation'ının sonundan bir birim öteye yazar. O tek out-of-bounds byte/word komşu heap object'ini ya da metadata'sını bozar; dikkatli bir heap layout ile daha güçlü bir primitive'e terfi ettirilebilen bir length alanını, pointer'ı ya da chunk header'ını overwrite eder. İhlal edilen invariant spatial memory safety'dir — klasik bir boundary off-by-one.
Important olarak derecelendirildi (CVSS 8.1); "saldırganın kontrolü dışındaki ek koşullar" gereklidir. Corentin Bayet ve Bruno Pujos (Synacktiv) tarafından ZDI üzerinden raporlandı; VMSA-2020-0015'te düzeltildi.
Walkthrough¶
VMSA-2020-0015'ten, yüksek seviyeden:
- 3D graphics enabled iken, guest yanlış hesaplanan boyut yoluna isabet eden SVGA operation'ları gönderir.
- Emulator, host heap buffer'ının bir element ötesine yazar.
- Heap grooming ile tek birimlik overwrite hassas bir komşu alana iner ve host code execution'a doğru escalate edilir.
Off-by-one ayrıntıları ../primitive/off-by-one-error.md'dedir; kesin yol
atlanmıştır.
Detection¶
- SVGA aktivitesine bağlı
vmware-vmxabort'ları içinvmware.log/ host crash dump'ları. - Tek elementlik overrun'larda tetiklenen heap-corruption detection (guard page'ler, allocator integrity check'leri).
- Anormal VMX-process davranışını ya da grooming benzeri SVGA allocation churn'ünü işaretleyen EDR.
Mitigation¶
- VMSA-2020-0015'i uygula (ESXi 6.5/6.7/7.0, Workstation 15.5.5, Fusion 11.5.5).
- Workaround: VM için 3D acceleration'ı disable et.
- Host allocator hardening'i ve exploit mitigation'larını enabled tut.