Hyper-V input-validation guest-to-host RCE (CVE-2019-0620)¶
Host'un authenticated bir guest'ten gelen input'u doğrulayamamasından kaynaklanan, synthetic-device path'lerini süren bir Hyper-V guest-to-host RCE ailesi (CVE-2019-0620 ve kardeşleri).
Mechanism¶
Bug class / invariant
Hyper-V'nin synthetic device'ları guest'e VMBus üzerinden açılır; guest, parent
partition'daki Virtualization Service Provider (VSP)'lerle ring buffer'lar aracılığıyla
konuşur ve per-VM handling'in çoğu user-mode worker process (vmwp.exe) içinde yaşar.
Bu ailede boundary invariant aynıdır: bir guest'in bir VMBus channel'ına veya device
request'ine koyduğu herhangi bir value, length, offset ya da descriptor untrusted'dır ve
host bunun üzerine işlem yapmadan önce doğrulanmalıdır.
CVE-2019-0620 — ve kardeşleri CVE-2019-0709, CVE-2019-0719 ve CVE-2019-0722 — hepsi improper input validation (CWE-20) olarak sınıflandırılır: "a remote code execution vulnerability exists when Windows Hyper-V on a host server fails to properly validate input from an authenticated user on a guest operating system." Privileged bir guest kullanıcısı, host kodunun dayandığı bir varsayımı ihlal eden field'lara sahip bir request hazırlar, host'u out of bounds'a iter ve bir parsing bug'ını host code execution'a çevirir.
Bunlar adjacent (S:C, scope-changed) bug'lardır: saldırgan guest "üzerinde"dir ama etki host partition'a düşer, yani bunlar in-guest privilege bug'ları değil, guest-to-host escape'leridir.
Sibling'den farkı
Bu not özellikle 2019 CWE-20 set'ine (CVE-2019-0620 / -0709 / -0719 / -0722) odaklanır. Aynı sınıfı 2020–2024 döneminde ve farklı root cause'larla (heap overflow, path traversal, race) kapsayan daha geniş umbrella için bkz. Hyper-V guest-to-host RCE.
Walkthrough¶
Sadece kavramsal
Microsoft bu set için exploit seviyesinde internal yayınlamadı; aşağıdaki açıklama, public CVE metninin ve Hyper-V'nin belgelenmiş synthetic-device mimarisinin ima ettiği high-level modeldir. Hiçbir offset veya exploit kodu verilmemiştir.
- Bir synthetic-device channel aç. Guest içindeki privileged bir kullanıcı, VMBus üzerinden bir synthetic device ile etkileşime girer (aile synthetic-device input-validation yüzeyini hedefler) ve host VSP'ye gönderdiği ring-buffer mesajlarının içeriğini kontrol eder.
- Malformed input gönder. Guest, içine gömülü length/index/offset'i veya structure'ı host tarafındaki gerçek buffer ya da object ile tutarsız olan bir request gönderir.
- Host field'a güvenir. Host o field'ı doğrulayamadığı için, attacker verisinden bir address ya da size hesaplar ve parent partition'ın worker process'inde veya destekleyici kernel bileşeninde bir out-of-bounds bellek operasyonu gerçekleştirir.
- RCE'ye escalate et. Saldırgan ortaya çıkan corruption'ı host execution üzerinde kontrole şekillendirir ve guest-to-host escape'i tamamlar.
The missing check (illustrative pseudo-logic)
Güvenlik açığı, herhangi tek bir emulated instruction değil, eksik olan range check'tir.Detection¶
Host / telemetry sinyalleri
- Worker-process instability: Tek bir guest'e bağlı
vmwp.execrash/restart'ları veyavmmshataları birincil anomalidir; host crash dump'larını yakalayın. - Hyper-V event channel'ları: Guest aktivitesiyle ilişkilendirilmiş malformed-message
veya channel-reset olayları için
Microsoft-Windows-Hyper-V-Worker,-VMMSve VMBus/VSP ile ilgili operational log'ları izleyin. - Host üzerinde EDR: Per-VM worker process'in device servicing dışında herhangi bir şey yapmasını (process creation, anormal bellek, yeni network/file handle'ları) işaretleyin.
- Guest tarafı heuristic'ler: Yüksek hacimde malformed synthetic-device request'i veren ya da VMBus channel'larını tekrar tekrar resetleyen bir guest şüphelidir.
Mitigation¶
Patch & hardening
- Host'u patch'le. Microsoft CVE-2019-0620'yi (ve ilgili CVE-2019-0709 / -0719 / -0722'yi) 2019 cumulative update'lerinde giderdi; patch'lemek ana kontroldür.
- Attack surface'i azalt: Workload'ın ihtiyaç duymadığı synthetic device'ları devre dışı bırakın ya da expose etmekten kaçının; untrusted guest'lere yalnızca gerekli integration/device'ları attach edin.
- Host exploit-mitigation'larını açık tut: Worker process sandboxed olarak ve CFG/ACG gibi benzer korumalarla çalışır — bir memory bug'ının weaponize edilmesi zorlaşsın diye bunları etkin tutun.
- Host'u bir trust boundary olarak ele al: Untrusted guest'leri kimin çalıştırabileceğini kısıtlayın ve management-plane maruziyetini sınırlandırın; multi-tenant host'ları segmentleyin.