Hyper-V IDE/storage emulator guest-to-host RCE (CVE-2018-0959)¶
Hyper-V worker-process emulation path'inde bir guest-to-host RCE; burada bir device/instruction emulator'üne giden validate edilmemiş guest-supplied input, host (parent partition) state'ini bozar.
Mechanism¶
Bug class / invariant
Hyper-V, bir guest'i bir child partition'a böler ve çoğu synthetic-device ve
legacy-device emulation'ını parent partition içindeki per-VM user-mode worker
process'inde (vmwp.exe) çalıştırır; bunlar kernel bileşenleriyle (VID, VMBus,
hypervisor) desteklenir. Security invariant'ı şudur: worker process, guest'ten
gelen her byte'ı üzerinde işlem yapmadan önce tamamen untrusted kabul etmelidir.
CVE-2018-0959, o path'te bir improper-input-validation (CWE-20) açığıdır. Bir guest bir legacy/emulated device'ı sürdüğünde veya hypervisor'ın software emulation'a devrettiği bir instruction'ı tetiklediğinde, emulator guest-controlled register/descriptor/buffer değerlerini tüketir. O değerlerden türetilen bir length, index veya pointer bir bounds ya da consistency check olmadan kullanılırsa, guest child→parent isolation boundary'sini geçer ve host memory'sini ya da control flow'unu etkiler. Sonuç, VM'e hizmet eden context'te code execution'dır, yani bir VM escape.
Konsept root cause klasik emulator trust gap'idir: hardware davranışını yeniden implemente eden software, gerçek hardware'in enforce ettiği tüm safety check'leri yeniden türetmelidir. Guest'in sağladığı bir size veya offset üzerinde kaçırılan bir check, masum görünen bir I/O'yu host'ta bir out-of-bounds write veya heap corruption primitive'ine dönüştürür.
Walkthrough¶
Yalnızca konsept
Aşağıdaki adımlar, public advisory'den ve Black Hat USA 2018 konuşması "A Dive in to Hyper-V Architecture and Vulnerabilities"'den (Bialek, Joly) çıkarılan yüksek seviyeli bir modeldir. Offset, gadget chain veya çalışan bir exploit sunulmaz.
Public attack-surface modelinde tarif edilen yüksek seviyeli mantıksal akış:
- Emulator'e ulaş. Guest içindeki privileged bir kullanıcı, hypervisor'ın hardware'de tamamlayamayacağı ve host tarafı emulation'a yönlendirdiği bir I/O (veya bir instruction) verir — legacy storage için bu, storage stack'i ve worker process'i tarafından servis edilen IDE/ATAPI path'idir. İlgili register, port, descriptor ve buffer değerlerinin hepsi saldırgan tarafından seçilir.
- Trust boundary'sini geç. Host emulator'ü guest request'ini parse eder. Range-check edilmesi gereken bir field'a (bir transfer length, bir buffer index, bir command parametresi) güvenilir, dolayısıyla malformed bir request emulator'ü amaçlanan object bounds'ının dışına sürer.
- Host state'ini boz. Yanlış boyutlandırılmış/yanlış index'lenmiş operasyon, yapmaması gereken host memory'sine yazar ya da okur ve worker process'teki / destekleyen kernel bileşenindeki komşu bir allocation'ı veya control structure'ı bozar.
- Execution'a yüksel. Host memory etki altındayken, saldırgan corruption'ı bir control-flow hijack'ine şekillendirir ve VM'e sahip olan partition'da RCE elde eder — ders kitabı guest-to-host escape.
Boundary neden kırılıyor (illustrative pseudo-logic)
The defect is the absence of the validation comment line, not any single instruction.Detection¶
Host / telemetry sinyalleri
- Worker-process crash'leri: tek bir VM'e bağlı tekrarlı
vmwp.exefault'ları veya beklenmeyen restart'lar güçlü bir anomalidir; host'tan WER/crash dump'larını toplayıp triyaj edin. - Hyper-V operational log'ları: guest I/O patlamalarıyla korele emulation error'ları,
partition reset'leri veya save/restore başarısızlıkları gösteren
Microsoft-Windows-Hyper-V-Worker,-Vmmsve-Hypervisorchannel'ları. - Host'ta EDR: per-VM worker process'in beklenmeyen eylemler yapmasına (child process oluşturma, yeni handle'lar, memory anomalileri) alert üretin — emulator'ler asla process spawn etmemelidir.
- Guest behavior: legacy IDE/ATAPI'yi veya diğer emulated device'ları malformed command'larla zorlayan bir guest şüphelidir; olağandışı storage/PIO pattern'lerini açığa çıkarın.
Mitigation¶
Patch & hardening
- Vendor patch'ini uygulayın. Microsoft CVE-2018-0959'u Nisan 2018 update'lerinde düzeltti; host'ları güncel tutmak birincil control'dür.
- Emulated legacy device'lar yerine synthetic/PV device'ları tercih edin. Mümkün olduğunda Generation 2 VM'leri kullanarak legacy-emulation (IDE/ATAPI) attack surface'ini küçültün.
- Worker process'te defense-in-depth. Hyper-V, per-VM emulation'ı low-privilege,
sandbox'lı bir
vmwp.exe'de çalıştırır; bir memory bug'ını güvenilir execution'a çevirmeyi zorlaştırmak için host mitigation'larını (CFG, ACG, vb.) etkin tutun. - Host'u izole edin / least-privilege uygulayın. Hyper-V host'unu yüksek değerli bir boundary olarak ele alın; kimin untrusted guest çalıştırabileceğini kısıtlayın ve host management maruziyetini sınırlayın.
- Hyper-V bounty surface'ini devreye sokun ki aynı emulation path'lerinin proaktif hardening'i yapılsın.