Skip to content

VMware shader translator multiple OOB reads (CVE-2019-5517)

3D shader translator'daki birden fazla out-of-bounds read, authenticated bir guest'in bilgi sızdırmasına ya da bir guest-VM DoS tetiklemesine izin verir.

Mechanism

The invariant that is crossed

Shader translator, guest tarafından sağlanan shader bytecode'unu host GPU stack'inin kullanabileceği bir forma dönüştürür. Korunan boundary guest → host confidentiality / availability'dir. CVE-2019-5517, o translator'da bir out-of-bounds read kümesidir: birçok parsing routine'i guest-kontrollü size'ları/index'leri yeterli bounds checking olmadan kullanır, böylece hazırlanmış shader'lar input buffer'ları aşarak okur. Path'e bağlı olarak bu veri sızdırır (information disclosure) ya da fault verir (denial of service). Ortak kök, attacker-kontrollü shader descriptor'ları üzerinde spatial bound'ları dayatmadaki tekrarlayan başarısızlıklardır.

3D graphics etkin bir VM gerektirir; etki, information disclosure ya da attacker'ın kendi VM'inin DoS'udur.

Walkthrough

High-level, VMSA-2019-0005 / VMSA-2019-0006'dan:

  1. 3D graphics etkinken, guest translator'daki ayrı OOB-read code path'lerine isabet etmek için hazırlanmış shader'lar submit eder.
  2. Her path amaçlanan buffer'ının dışını okur: bazıları komşu belleği guest'e geri döndürür (leak), diğerleri unmapped belleğe ulaşır (crash → DoS).
  3. Attacker leak primitive'ini information disclosure için kullanır ya da sadece bir DoS zorlar.

Detection

  • Belirli bir guest'le korele vmware.log shader/3D translation error'ları ve vmx crash'leri.
  • Guest GPU/driver log'larında alışılmadık hacimde shader-compilation failure'ları.
  • Tekrarlayan vmware-vmx fault'ları için host process-stability izlemesi.

Mitigation

  • ESXi, Workstation, Fusion için VMSA-2019-0005 / VMSA-2019-0006 güncellemelerini uygulayın.
  • Workaround: 3D-acceleration özelliğini devre dışı bırakın (ESXi'de default-off, Workstation/Fusion'da default-on).
  • Güvenilmeyen guest'ler için 3D acceleration etkinleştirmekten kaçının.

References