Skip to content

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.

References