Hyper-V vSMB guest-to-host RCE (CVE-2018-0961)¶
Hyper-V'nin VM worker process içindeki vSMB server'ı, guest tarafından sağlanan vSMB packet verisini düzgün validate etmiyor; authenticated bir guest'in host state'ini bozmasına ve host üzerinde kod çalıştırmasına izin veriyor.
Mechanism¶
Note
vSMB, Hyper-V'nin host file share'lerini bir guest'e expose etme mekanizmasıdır (shared/guest VHD ve container dosya erişimi için arkadaki transport). vSMB server, root partition'ın userspace'inde VM worker process (VMWP) içinde çalışır — Plan9FS server, integration component'ler ve synthetic virtual device'ların yanında — bu da VMWP'yi birincil bir guest-to-host attack surface haline getirir (Microsoft'un MSRC araştırması bu yerleşimi açıkça anlatır).
CVE-2018-0961 bir input-validation RCE (CWE-20)'dir: Hyper-V "vSMB packet verisini düzgün validate etmiyor." Bir guest, vSMB request'inin byte'larını kontrol eder — message type'lar, gömülü length'ler, offset'ler ve count'lar. İhlal edilen invariant şudur: bir vSMB packet içindeki guest tarafından sağlanan her size/offset, host onu parse etmeden, kopyalamadan ya da onunla index'lemeden önce gerçek packet bound'larına karşı validate edilmelidir. Host, attacker'ın seçtiği bir field'a güvendiğinde, amaçlanan bound'ların dışına read/write yapar ve VMWP context'inde host state'ini bozar — guest-to-host kod yürütmenin dayanak noktası.
Corruption host'un VMWP'sinde gerçekleştiği için, bir guest VM isolation
boundary'sini aşıp host'a geçer. Microsoft scope-changed CVSS atadı
(AV:A/AC:M/Au:S/C:C/I:C/A:C), Mayıs 2018'de patch'lendi.
Warning
Kavramsal bir kayıt. Microsoft tam olarak hangi parsing routine'inin zafiyetli olduğunu yayımlamadı ve doğrulanmış public bir PoC yok. Component (VMWP içindeki vSMB server), CWE-20 vSMB-packet-validation kök nedeni ve guest-to-host RCE etkisi yük taşıyan public gerçeklerdir. Joe Bialek'in Black Hat USA 2018 Hyper-V araştırması ile Microsoft'un "Attacking the VM Worker Process" yazısı bu VMWP/vSMB attack surface'ini genel hatlarıyla anlatır.
Walkthrough¶
Üst seviye kavramsal yol (vSMB packet validation)
Guest (authenticated) ── crafted vSMB packet ──> VMBus ──>
Hyper-V vSMB server inside VMWP (root partition, userspace)
vSMB request parsing trusts a guest-controlled length/offset/count
without full validation against the received packet bounds (CWE-20)
-> out-of-bounds read/write or malformed-object handling in VMWP
Controlled host-side memory corruption -> guest-to-host code execution
in the VM worker process context
Bu, VMWP'de host edilen component'lerdeki 2018 dönemi Hyper-V guest-to-host bug ailesinden biridir (örneğin IDE/storage emulator CVE-2018-0959); hepsine de host worker process'e geçen guest-controlled input üzerinden ulaşılabilir.
Detection¶
- Belirli bir guest'in vSMB / shared file aktivitesiyle korele olan host üzerindeki VMWP crash/fault'ları; vSMB parsing'e referans veren host userspace crash dump'larını sakla.
- Bir guest'ten gelen anormal ya da malformed vSMB packet'ler: tutarsız gömülü length/offset'ler, aşırı büyük count'lar veya beklenmedik message type'lar.
- Tek bir tenant'a izole olmuş host file-sharing kararsızlığı; host EDR üzerinden beklenmedik VMWP child process'leri veya memory anomalileri.
Mitigation¶
- CVE-2018-0961 için Mayıs 2018 Microsoft security update'ini uygula; fix, parse etmeden önce vSMB packet verisinin düzgün validate edilmesini ekler.
- Etkilenen platformlar: Hyper-V role'üne sahip Windows 10 (1607/1703/1709/1803) ve Windows Server 2016; host'ları patch'li tut.
- Defense-in-depth: vSMB/shared file surface'lerini yalnızca güvenilen guest'lere expose et; tüm guest vSMB trafiğini untrusted host input olarak değerlendir.
- VMWP hardened çalışır (CFG, ACG, CIG, SeImpersonatePrivilege'ın kaldırılması dahil azaltılmış privilege'lar); bu, corruption sonrası exploitation'ı kısıtlar ama patch'in yerini tutmaz.