Skip to content

VirtualBox VMSVGA3D integer overflow VM escape (CVE-2025-30712)

VirtualBox'ın VMSVGA 3D surface-size hesabındaki bir integer overflow, daha büyük bir size'ı izlerken bir buffer'ı yetersiz allocate eder ve out-of-bounds host read/write ile bir guest-to-host escape verir.

Mechanism

Bug sınıfı / invariant

VirtualBox, host VMM içinde VMSVGA 3D graphics device'ini emüle eder. Buradaki invariant, bir surface için allocate edilen buffer'ın device'in sonradan kullandığı size ile eşleşmesidir. CVE-2025-30712 bir integer overflow / wraparound'dur (CWE-190): vmsvga3dSurfaceMipBufferSize overflow eder, böylece bir 0-byte allocation yapılırken VirtualBox daha büyük bir izlenen size kaydeder.

Daha sonra vmsvga3dSurfaceMapInit, guest-supplied boyutlardan bir row stride (cbRow) hesaplar ama gerçek allocation size'a karşı validate etmez. Surface'i dolaşan operasyonlar sonra yetersiz boyutlu buffer'ın dışında okur ve yazar — host VMM belleğine yapılan lineer bir out-of-bounds write (ve OOB read).

Kavramsal kök neden, bir integer overflow'dan doğan bir size/allocation uyumsuzluğu'dur: allocator ile consumer, buffer'ın gerçek size'ı konusunda anlaşamaz ve consumer guest-controlled boyutlara güvenir. Public analiz, bunu keyfi host R/W'sine ve host graphics state'indeki function pointer'lar üzerinden control-flow'a yükseltmeyi tarif eder.

Walkthrough

Yalnızca kavramsal

Google security-research advisory'sinden (GHSA-qx2m-rcpc-v43v) ve NVD'den alınmış üst düzey bir model. Silahlandırılmış bir exploit, offset veya gadget chain yeniden üretilmemiştir.

  1. Bir 3D surface oluştur (privileged bir guest olarak) size hesabını overflow edecek şekilde seçilmiş boyutlarla, ufak/sıfır bir allocation ama büyük bir izlenen size'a zorlayarak.
  2. Surface'i map'le ve üzerinde işlem yap. cbRow, guest boyutlarından türetilir, gerçek allocation'a karşı kontrol edilmez.
  3. Out-of-bounds oku/yaz. Surface-dolaşan komutlar, buffer'ın ötesindeki host belleğine erişir.
  4. Escape'e yükselt. OOB R/W, host control structure'larının üzerine yazmaya yönlendirilir ve guest-to-host code execution'a ulaşır (CVSS scope changed, C:H/I:H).

Detection

Host / telemetri sinyalleri

  • VMM crash'leri guest 3D/VMSVGA aktivitesiyle korele; dump'ları ve VBox.log'u topla.
  • Anormal 3D surface komutları: aşırı boyutlarla surface oluşturan guest'ler.
  • EDR: VirtualBox VMM'inde heap-corruption veya control-flow anomalileri.

Mitigation

Patch & sıkılaştırma

  • Oracle patch'ini uygula. VirtualBox 7.1.8'de düzeltildi (Oracle Critical Patch Update, Nisan 2025).
  • İhtiyaç duymayan VM'ler için 3D acceleration'ı devre dışı bırak — bu VMSVGA3D surface'ini kaldırır.
  • VirtualBox'ı güncel tut Oracle Critical Patch Update'leri üzerinden; yalnızca güvenilir guest'leri çalıştır.
  • VMM'i least-privilege ile çalıştır ki başarılı bir escape sınırlansın.

References