Skip to content

VirtualBox E1000 out-of-bounds read info disclosure (CVE-2021-2321)

VirtualBox'ın E1000 TX yolundaki bir integer underflow, bir out-of-bounds (BSS) read verir ve host hypervisor belleğini guest'e sızdırır.

Mechanism

Bug sınıfı / invariant

VirtualBox, E1000 NIC'ini emüle eder. İlgili write bug'ında olduğu gibi, TX length matematiği bir maksimumdan guest-etkili biriken bir length'i çıkarır: u16MaxPktLen - u16TxPktLen. Buradaki invariant, u16TxPktLen'in reset/bounded edilmesi ve çıkarmanın asla underflow etmemesidir.

CVE-2021-2321, read varyantıdır: özel hazırlanmış bir TX-descriptor dizilimi, kodun sıfır varsaydığı yerde u16TxPktLen'i sıfırdan farklı bırakır, böylece çıkarma büyük bir length'e underflow eder. Device sonra packet buffer'ın ötesini okur — host hypervisor belleğinin bir "BSS out-of-bounds read"'i, bir information-leak / memory-disclosure primitive'i.

Kavramsal kök neden, write bug'ıyla aynı integer-underflow-from-guest-state pattern'idir, ama tüketilen length bir read'i sürer, dolayısıyla etki yalnızca confidentiality'dir.

Walkthrough

Yalnızca kavramsal

STAR Labs advisory'si ve NVD'den alınmış üst düzey bir model. Exploit, offset veya gadget sağlanmamıştır.

  1. Descriptor state'i hazırla (privileged bir guest olarak) öyle ki length çıkarması çalışırken u16TxPktLen sıfırdan farklı olsun.
  2. Length'i underflow et. u16MaxPktLen - u16TxPktLen büyük bir değere wrap olur.
  3. Out-of-bounds oku. Device, packet buffer'ın ötesinden host BSS/hypervisor belleğini okur.
  4. Guest'e sızdır (CVSS C:H, scope changed — yalnızca confidentiality).

Detection

Host / telemetri sinyalleri

  • Bir guest'ten hatalı biçimlendirilmiş E1000 TX descriptor chain'leri.
  • Envanter: 6.1.20'den eski VirtualBox üzerindeki host'ları işaretle.
  • EDR: VMM'de anormal read pattern'leri (salt read'leri doğrudan gözlemlemek zordur).

Mitigation

Patch & sıkılaştırma

  • Oracle patch'ini uygula. VirtualBox 6.1.20'de düzeltildi (Oracle Critical Patch Update, Nisan 2021).
  • VirtualBox'ı güncel tut Oracle Critical Patch Update'leri üzerinden.
  • Emüle E1000 yerine paravirtualized NIC'leri tercih et; yalnızca güvenilir guest'leri çalıştır.

References