Hyper-V vmswitch RNDIS-over-VMBus guest-to-host RCE (CVE-2022-23257)¶
Bir guest'in synthetic NIC'i, VMBus üzerinden NVSP packet'leri içine encapsulate edilmiş crafted RNDIS mesajları gönderir; vmswitch.sys onları host kernel'de yanlış ele alır ve guest-to-host remote code execution verir.
Mechanism¶
Note
vmswitch.sys, host kernel'de çalışan Hyper-V'nin virtual-switch driver'ıdır. Bir guest'in
synthetic NIC'i (netvsc VSC), host networking VSP'siyle VMBus üzerinden NVSP (Net VSP)
packet'lerini kullanarak konuşur. Bazı NVSP packet tipleri — özellikle RNDIS taşıyan tip —
RNDIS (Remote NDIS) mesajlarını encapsulate eder: virtual adapter'ı yapılandıran ya da süren
SET/QUERY OID request'leri, packet mesajları ve control mesajları.
Host bu guest-supplied RNDIS/NVSP structure'larını defensive şekilde parse etmelidir: guest buffer'ına index'lemeden ya da ondan kopyalamadan önce length'leri, offset'leri ve message-type field'larını doğrulamalıdır. CVE-2022-23257, bu RNDIS-over-VMBus parsing/dispatch path'inde bir memory-corruption RCE'dir. Kavramsal invariant, guest'in bir RNDIS mesajı içinde sağladığı her length/offset'in kullanımdan önce gerçekten alınan buffer'a karşı bounds-check edilmesidir; host guest-controlled bir size/offset'e güvendiğinde, host kernel context'inde amaçlanan bounds dışında okur ya da yazar.
Corrupt edilen state host'un vmswitch.sys'inde olduğu için, tek bir guest VM isolation
boundary'sini aşıp shared host'a geçer — bir guest-to-host escape. CVE'ye scope-changed bir
CVSS 3.1 base score 8.8 atanmıştır (AV:L/AC:L/PR:L/UI:N/S:C/C:H/I:H/A:H). Not: bu sayı
CVSS skalasında "High" bandına düşer (Critical bandı 9.0–10.0'dır), ve NVD/GitHub Advisory bunu
"High" olarak etiketler. Microsoft'un kendi MSRC severity rating'i ise ayrı bir ölçektir: bir
guest-to-host Hyper-V RCE'yi Microsoft, CVSS sayısı 9.0'ın altında kalsa bile rutin olarak
Critical sınıfında değerlendirir. İki etiket (NVD "High" vs MSRC "Critical") farklı
framework'lerden gelir — bu bir çelişki değil, iki ayrı ölçeğin sonucudur.
Warning
Kavramsal girdi. Microsoft tam vulnerable function ya da field'ı yayınlamadı ve
CVE-2022-23257 için doğrulanmış public bir PoC yoktur. Bileşen (vmswitch.sys),
RNDIS-over-VMBus/NVSP attack surface'i ve guest-to-host RCE impact'i load-bearing public
gerçeklerdir. Bu, daha önceki vmswitch OID-request bug'ı (CVE-2021-28476) ile bir attack
surface paylaşır ama farklı bir CVE'dir.
Walkthrough¶
High-level conceptual path (RNDIS-over-VMBus surface)
Guest (modified netvsc): emit an NVSP packet carrying an RNDIS message
e.g. NVSP_MSG1_TYPE_SEND_RNDIS_PKT (RNDIS encapsulated in NVSP)
VMBus delivers the packet to host vmswitch.sys (host kernel)
-> NVSP dispatch parses the encapsulated RNDIS message
(SET/QUERY OID / packet / control)
-> a guest-controlled length/offset inside the RNDIS message is
trusted without full bounds validation
-> out-of-bounds read or write in host-kernel context
Controlled host-kernel corruption -> guest-to-host code execution
Aynı NVSP/RNDIS yüzeyi tarihsel olarak hem DoS (host bugcheck) hem de RCE sınıfı bug'lar üretti. Microsoft CVE-2022-23257'nin fix'ini Nisan 2022 Patch Tuesday'de gönderdi; NVD/GitHub Advisory CVSS 3.1 base score'unu 8.8 ("High") olarak yayınlar (yukarıdaki note'a bakın — MSRC'nin ayrı severity ölçeği bu CVSS sayısından bağımsızdır). Aynı ay aynı "Windows Hyper-V Remote Code Execution" rolü içinde başka Hyper-V RCE CVE'leri de patch'lendi. CVE-2022-23257'nin MSRC/NVD açıklaması bu kaydı açıkça CVE-2022-22008, CVE-2022-22009, CVE-2022-24537'den "unique" (ayrı) olarak işaretler; yani bunlar ayrı bug'lardır, paylaşılan bir root cause iddiası değildir. (Bu sibling listesi tahmin değil, CVE-2022-23257'nin kendi advisory metnindeki "unique from" ibaresinden gelir.)
Detection¶
- Tek bir guest'in network aktivitesiyle ilişkilendirilmiş
vmswitch.sys'ten kaynaklanan host bugcheck'leri; NVSP/RNDIS dispatch'e atıf yapan host kernel crash dump'larını toplayın ve triyaj edin. - Anormal synthetic-NIC trafiği: Malformed RNDIS mesajları, tutarsız length/offset field'ları ya da bir guest'in yaymaması gereken RNDIS control/OID mesajları.
- Shared bir Hyper-V host'unda tek bir tenant'a izole edilmiş tekrarlanan host network-stack instability.
Mitigation¶
- CVE-2022-23257 için Nisan 2022 Microsoft güvenlik update'ini uygulayın; fix, RNDIS/NVSP parsing'i sertleştirir, böylece guest-supplied length'ler/offset'ler kullanımdan önce doğrulanır.
- Hyper-V host'larını patch'lenmiş bir servicing baseline'da tutun; etkilenen platformlar Hyper-V role'üne sahip Windows 10/11 ve Windows Server sürümlerini kapsar.
- Defense-in-depth: Guest synthetic-NIC trafiğini untrusted host-kernel input olarak ele alın; shared host'larda untrusted tenant'ları ayırın.
- Kernel hardening (pool integrity, CFG/kCFG, NX) exploitation maliyetini yükseltir ama patch'in yerini tutmaz.