VMware shader translator out-of-bounds read (CVE-2019-5516)¶
Vertex-shader fonksiyonalitesindeki bir out-of-bounds koşulu, hazırlanmış bir shader'ın denial of service (ve potansiyel info disclosure) tetiklemesine izin verir.
Mechanism¶
İhlal edilen invariant
3D translator'daki vertex-shader yolu, guest'in sağladığı vertex shader programlarını parse eder. Korunan sınır guest → host availability / confidentiality'dir. CVE-2019-5516, vertex shader işlenmesine bağlı bir out-of-bounds erişimdir: guest'ten gelen hatalı biçimli bir vertex shader, translator'ı input'unun sınırları dışındaki belleğe erişmeye sürükler ve bir denial-of-service (ve advisory sınıfına göre potansiyel information disclosure) üretir. Kök neden, guest'in kontrol ettiği shader yapısının parse edilmeden önce validate edilmemesidir. Kavramsal olarak: vertex-shader descriptor'ındaki guest-controlled bir size / index / token-count alanı (örneğin shader'ın bildirdiği bir eleman sayısı veya register index'i) bir loop bound ya da array index olarak doğrudan güvenilir kabul edilir; bu alan için bir upper-bound / sınır kontrolü yapılmadığından translator, input buffer'ının sonunu aşan offset'leri indexler ve out-of-bounds read'i bu noktada gerçekleşir. Bu, kardeş shader-translator zafiyetlerinden, over-read'i tetikleyen spesifik unvalidated primitive'le ayrışır.
Guest'te 3D graphics enabled olmasını gerektirir; etki, saldırganın kendi VM'i için DoS / olası info disclosure'dır (Cisco Talos'tan Piotr Bania tarafından raporlanmıştır, TALOS-2019-0762).
Walkthrough¶
VMSA-2019-0006 ve public Talos advisory'sinden, yüksek seviyeden:
- 3D acceleration enabled iken, guest özel olarak hazırlanmış bir vertex shader gönderir.
- Translator, descriptor'daki guest-controlled count/index alanını sınır kontrolü olmadan bir loop bound / array index olarak kullanır ve input buffer'ının ötesindeki belleğe erişir.
- Hatalı biçimli input bir fault (DoS) üretir veya, daha geniş zafiyet sınıfında, komşu veriyi açığa çıkarır.
Detection¶
- Belirli bir guest için
vmware.logvertex-shader / 3D translation hataları vevmxcrash'leri. - Guest log'larında tekrarlayan 3D pipeline fault'ları veya shader-compile hataları.
- 3D aktivitesinin ardından
vmware-vmxinstability'si için host monitoring.
Mitigation¶
- VMSA-2019-0006'yı uygula: ESXi 6.5/6.7, Workstation 14.1.6/15.0.3, Fusion 10.1.6/11.0.3.
- Workaround: 3D-acceleration'ı disable et (ESXi'de default-off, Workstation/ Fusion'da default-on).
- Untrusted guest'ler için 3D acceleration'ı kapalı tut.