VirtualBox OHCI USB uninitialized variable LPE (CVE-2020-2575)¶
VirtualBox'ın OHCI USB controller emülasyonu, belleği düzgün initialize etmeden kullanır ve privileged bir guest'e host VMM context'ine bir privilege-escalation primitive'i verir (tipik olarak tam bir escape için chain'lenir).
Mechanism¶
Bug sınıfı / invariant
VirtualBox, VMM içinde bir OHCI USB host controller'ı emüle eder. Buradaki invariant, belleğin okunup üzerinde işlem yapılmadan önce tamamen initialize edilmesidir. CVE-2020-2575 bir use of uninitialized resource'tur (CWE-908): OHCI endpoint data işleme sırasında kod, hiçbir zaman düzgün initialize etmediği belleğe erişir.
Uninitialized içerik etkilenebilir ya da sızdırılabilir olduğu için, bug bir attacker'ın kaldıraç olarak kullanabileceği bir primitive sağlar — kavramsal olarak bir access of uninitialized pointer / data. ZDI, tam host code execution'a ulaşmak için bunun diğer bug'larla chain'lenmesi gerektiğini not eder; tek başına hypervisor context'ine bir privilege-escalation adımıdır.
Kavramsal kök neden, bir emülasyon yolundaki eksik initialization'dır; ince ama klasik bir leak ve bozulabilir state kaynağı.
Walkthrough¶
Yalnızca kavramsal
ZDI advisory'sinden (ZDI-20-582) ve NVD'den alınmış üst düzey bir model. Exploit, offset veya gadget sağlanmamıştır.
- OHCI endpoint işlemesini sür privileged bir guest'ten özel hazırlanmış USB aktivitesiyle.
- Uninitialized read'e ulaş. Emülasyon yolu, hiç initialize edilmemiş belleği kullanır.
- Bayatlamış/etkilenmiş içeriği kaldıraç olarak kullan bir exploitation primitive olarak (info leak / bozulabilir state).
- Escape'e chain'le. Başka bir bug'la birleşince, bu host code execution'a doğru yükselir (CVSS scope changed, C:H/I:H/A:H, yüksek attack complexity).
Detection¶
Host / telemetri sinyalleri
- VMM instabilitesi guest USB/OHCI aktivitesiyle korele; dump'ları ve VBox.log'u topla.
- Bir guest'ten anormal USB device emülasyon trafiği.
- EDR: VirtualBox VMM'inde memory anomalileri.
Mitigation¶
Patch & sıkılaştırma
- Oracle patch'ini uygula. VirtualBox 5.2.40 / 6.0.20 / 6.1.6'da düzeltildi (Oracle CPU, Nisan 2020).
- VirtualBox'ı güncel tut Oracle Critical Patch Update'leri üzerinden.
- Bir VM'in ihtiyaç duymadığı USB controller'ları devre dışı bırak; minimal USB controller modelini tercih et.
- Yalnızca güvenilir guest'leri çalıştır; chain'lenen bir escape'i sınırlamak için VMM'i least-privilege ile çalıştır.