Skip to content

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.

  1. 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.
  2. 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.
  3. 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.
  4. 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)

# HOST VSP message handler (conceptual)
msg = recv_from_vmbus_ring()        # guest-controlled
idx = msg.slot_index                # untrusted
# MISSING: if idx >= ARRAY_LEN: reject
table[idx] = msg.value              # OOB write when idx is out of range
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.exe crash/restart'ları veya vmms hataları 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, -VMMS ve 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.

References