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.
- virtio-net control queue'sunu sür: privileged bir guest'ten, range dışında bir VLAN ID'siyle
bir
VIRTIONET_CTRL_VLANkomutu gönder. - Ters çevrilmiş kontrolü geç. Comparison ters olduğu için, aşırı büyük ID kabul edilir.
- 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.
- 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.