Skip to content

VirtualBox Core privilege escalation (CVE-2023-22098)

VirtualBox'ın virtio-net VLAN handling'inde ters çevrilmiş bir bounds check, guest tarafından verilen bir VLAN ID'sini out-of-bounds bir array write'a dönüştürerek guest-to-host escape'e olanak tanır.

Mechanism

Bug sınıfı / invariant

VirtualBox, host VMM içinde virtio-net network adapter'ını emüle eder. Buradaki invariant, array index olarak kullanılan guest-supplied bir VLAN ID'sinin range-check'ten geçirilmesi gerektiğidir. CVE-2023-22098, ters çevrilmiş bir comparison'dan kaynaklanan bir out-of-bounds write'tır: virtioNetR3CtrlVlan() içindeki guard, AssertMsgReturn(uVlanId > VIRTIONET_MAX_VLAN_ID, …) biçiminde yazılmıştır — oysa < olmalıydı (advisory'nin verbatim ifadesi). Ters operatör nedeniyle guard, in-range (normal) ID'leri error ile reddederken aralık dışındaki (çok büyük) ID'lerin geçmesine izin verir; bu out-of-range değer ardından aVlanFilter'ı index'lemek için kullanılır.

Sonuç, VLAN filter array'ine bitişik host VMM belleğine yapılan bir out-of-bounds write'tır (public analiz ayrıca buna eklenen bir off-by-one sizing'den de bahseder) ve guest→host sınırını aşar.

Kavramsal kök neden, bir bounds check içindeki tek bir ters çevrilmiş relational operatördür — bir inverted comparison'ın validate edilmiş input'u nasıl keyfi bir index'e dönüştürdüğünün ders kitabı örneği.

Walkthrough

Yalnızca kavramsal

Public Google security-research advisory'sinden (GHSA-q7p4-pxjx-6h42) alınmış üst düzey bir model. Silahlandırılmış bir exploit, offset veya gadget chain yeniden üretilmemiştir.

  1. virtio-net control queue'sunu sür: privileged bir guest'ten, range dışında bir VLAN ID'siyle bir VIRTIONET_CTRL_VLAN komutu gönder.
  2. Ters çevrilmiş kontrolü geç. Comparison ters olduğu için, aşırı büyük ID kabul edilir.
  3. Out-of-bounds index'le. ID, VLAN-filter array'ine index olarak kullanılır ve array'in dışına, bitişik host VMM belleğine yazar.
  4. Escape'e dönüştür. OOB write, guest-to-host code execution (CVSS C:H/I:H/A:H, scope changed) ya da DoS elde etmek için host control structure'larına yönlendirilir.

Detection

Host / telemetri sinyalleri

  • VMM crash'leri: tek bir guest'in network aktivitesine bağlı tekrarlayan VirtualBox process fault'ları; crash dump'ları / VBox.log topla.
  • Anormal virtio-net control trafiği: hatalı biçimlendirilmiş VLAN control komutları gönderen bir guest.
  • Host üzerinde EDR: VMM process'inde memory-corruption veya beklenmedik control-flow göstergeleri.

Mitigation

Patch & sıkılaştırma

  • Oracle patch'ini uygula. VirtualBox 7.0.12'de düzeltildi (Oracle Critical Patch Update, Ekim 2023).
  • VirtualBox'ı güncel tut Oracle Critical Patch Update'leri üzerinden.
  • Minimal/ihtiyaç duyulan network feature'larını tercih et; yalnızca güvenilir guest'leri çalıştır.
  • VMM'i least-privilege ile çalıştır ki başarılı bir escape host üzerinde sınırlansın.

References