VMware shader out-of-bounds read (CVE-2020-3970)¶
3D-graphics shader path'indeki bir out-of-bounds read, non-admin bir guest'in VMX process'ini crash etmesine izin verir (partial DoS).
Mechanism¶
The invariant that is crossed
3D acceleration etkinken, hypervisor guest-sağlanan shader program'larını
compile/translate eder. Korunan boundary guest → host VMX stability /
confidentiality'dir. CVE-2020-3970 shader handling'de bir out-of-bounds
read'tir: hazırlanmış bir shader, translator'ın bir input buffer'ın sınırlarını
aşarak index'lemesini sağlar. Parsing code'u guest-kontrollü bir length/offset'e
güvendiği için okumaması gereken belleği okur, ki bu durumda invalid belleği
dereference eder ve vmx process'ini crash eder — bir partial denial of service.
İhlal edilen invariant, attacker-kontrollü input üzerindeki spatial memory
safety'dir.
Moderate (CVSS 4.0) olarak değerlendirildi: non-administrative guest erişimi, DoS etkisi (VMX crash), 3D graphics etkin olmalı.
Walkthrough¶
High-level, VMSA-2020-0015'ten (Wei Lei ve anhdaden, STAR Labs — Trend Micro Zero Day Initiative ile çalışarak raporladı):
- 3D graphics etkin bir guest'ten, SVGA 3D interface'i üzerinden malformed bir shader submit edin.
- Shader translator guest-kontrollü descriptor'ları parse eder ve amaçlanan buffer'ın dışını okur.
- Invalid access fault verir ve
vmxworker'ını terminate eder — VM'in host tarafı process'i ölür (partial DoS).
Detection¶
- 3D/shader aktivitesiyle korele
vmxcrash'leri/backtrace'leri gösterenvmware.log; tekrarlayan VM reset'leri. - Belirli bir guest'e bağlı
vmware-vmxabort'ları için host process izlemesi. - Guest GPU log'larında malformed shader submission'larında ya da 3D-pipeline error'larında ani artışlar.
Mitigation¶
- VMSA-2020-0015'i uygulayın: ESXi 6.5/6.7/7.0, Workstation 15.5.5, Fusion 11.5.5.
- Workaround: 3D acceleration'ı devre dışı bırakın (VM > Settings > Display, "Accelerate 3D graphics"'i uncheck edin); ESXi'de varsayılan olarak kapalıdır.
- 3D acceleration'ı güvenilmeyen guest'lere açmayın.