Skip to content

VMware ESXi CD-ROM heap overflow guest-to-host (CVE-2021-22045)

VMware'in emule edilmiş CD-ROM device'ındaki bir heap overflow, guest'in diğer sorunlarla birlikte hypervisor üzerinde kod çalıştırmasına izin verir.

Mechanism

Bug class: device emulation'da heap buffer overflow (CWE-787)

VMX process'i guest için bir CD-ROM/ATAPI device emule eder. O device için command ve data handling, guest'in sağladığı parametrelere (ör. bir transfer length ya da sector count) dayanarak host tarafındaki bir heap allocation'ı boyutlandırır. Allocate etmek için kullanılan size, copy etmek için kullanılan size ile uyuşmadığında — ya da bir length yeniden clamp'lenmeden olduğu gibi alındığında — emulator heap buffer'ın sonunu guest-kontrollü byte'larla aşarak yazar.

Geçilen boundary guest -> host (VMX)'tir. İhlal edilen invariant şudur: "bir host buffer'a kopyalanan byte sayısı asla buffer'ın allocate edilmiş size'ını aşmamalı ve her guest-sağlanan length gerçek allocation'a karşı doğrulanmalıdır." NVD, overflow'un tek başına "diğer sorunlarla birlikte" hypervisor üzerinde kod çalıştırmaya yeterli olduğunu not eder — yani bir info-leak/grooming adımıyla birleştiğinde guest-to-host RCE veren bir corruption primitive'idir.

Walkthrough

High-level conceptual reproduction (from VMSA-2022-0001 / NVD)

Yalnızca kavramsal — precondition CD-ROM device emulation'lı bir VM'e erişim:

  1. Emule CD-ROM'u attach edin / etkinleştirin. ATAPI/CD-ROM device'ın mevcut olduğundan emin olun, böylece emulation path'i guest'ten erişilebilir olsun.
  2. Vulnerable command path'i sürün. length/size field'larını emulator'ün bir heap buffer'ı boyutlandırmak ya da doldurmak için kullandığı device command'ları yapın.
  3. Overflow. Host tarafındaki copy'nin allocation'ı aşmasına yol açan bir length sağlayın, komşu heap object'lerini guest-kontrollü veriyle üzerine yazın.
  4. Code execution'a zincirleyin. Bir function pointer / object vtable'ı corrupt etmek ve host control flow'unu yönlendirmek için heap grooming ve bir information leak ("diğer sorunlar", NVD'ye göre) ile birleştirin, VMX/hypervisor context'inde execution elde edin.

Catalogue altitude

Tam ATAPI opcode'ları, overflow olan structure, struct offset'leri, grooming layout'u ve ASLR'ı yenmek için kullanılan leak primitive'i kasten atlanmıştır. Katalog primitive sınıfını (CD-ROM emulation'da guest-sürücülü heap overflow) ve weaponization'ın ek bug'lar gerektirdiğini kaydeder.

Detection

  • vmware.log (per-VM): ATAPI/CD-ROM emulation'dan geçen backtrace'li VMX panic'leri ve üretilen vmx-zdump.* core dump'ları. CD-ROM aktivitesine bağlı bir VMX crash patlaması high-signal'dır.
  • ESXi vmkernel.log / hostd.log: Tek bir VM'e korele vmx world (process) termination'ları ve restart'ları, özellikle CD-ROM device'ını tekrar tekrar döngüleyen bir VM.
  • Core-dump triage: Beklenen CD-ROM transfer buffer'ı dışındaki bir faulting/written address ya da corrupt olmuş komşu heap-chunk metadata'sı, benign bir device error yerine bir OOB write'a işaret eder.
  • Config drift: Operasyonel ihtiyacı olmayan VM'lere beklenmedik CD-ROM device eklenmesi ya da tekrar tekrar yeniden attach edilmesi.

Mitigation

Patch

VMSA-2022-0001'e göre düzeltmeleri uygulayın: ESXi 6.5 (ESXi650-202110101-SG), 6.7 (ESXi670-202111101-SG) ve 7.0; Workstation 16.2.1; Fusion 12.2.1. Patch kesin remediation'dır.

  • Device'ı kaldırın: İhtiyaç duymayan VM'lerden emule CD-ROM sürücülerini detach edin — bu erişilebilir code path'i tamamen ortadan kaldırır (VMware'in belgelenmiş hardening rehberi).
  • Least privilege / yüzey azaltma: Guest'ten erişilebilir VMX attack surface'ini küçültmek için diğer kullanılmayan emule device'ları devre dışı bırakın.
  • Multi-tenant host'ları izleyin: CD-ROM path'lerinde tekrarlayan VMX core dump'larını bir güvenlik event'i olarak ele alın ve sorunlu VM'i izole edin.

References