Attack ChainAIDerived
Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain
-
AccessGain low-privilege code execution in Windows guest
-
DeliveryOpen Viosock device and craft IOCTL_SELECT
-
ExploitOverflow 32-bit fd_count sum past FD_SETSIZE check
-
ExecutionVIOSockSelectCopyFds writes beyond pPkt->Fds in NonPagedPool
-
PersistCorrupt kernel heap structures
-
ImpactEscalate to SYSTEM in guest
Vulnerability Assessment
| Weakness |
CWE
ASVS 5.0
V15 - Secure Coding and Architecture Heap buffer bounds checking
MITRE ATT&CK
1 technique across 1 tactic: Execution The technique list with ATT&CK links and the kill-chain view is part of the Basic plan and up. |
| Exploitation Conditions | Requires the attacker to already have local low-privilege code execution inside a Windows guest running the virtio-win Viosock (vsock) driver from an affected build (mm210 up to but not including mm320), and that driver/device must be loaded and reachable by the process. Exploitation is performed by submitting an IOCTL_SELECT request carrying attacker-controlled VIRTIO_VSOCK_SELECT.Fdss[*].fd_count values whose 32-bit sum wraps. Limiting factors: no remote/network vector (AV:L), authentication/local foothold needed (PR:L), and the guest must actually use the vsock driver - many KVM Windows guests deploy the core virtio-win drivers without Viosock, narrowing real exposure. No user interaction required (UI:N). |
| Impact | The vendor-assigned CVSS 3.1 vector (AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H = 7.8 High) is internally consistent and I concur with it. This is a local privilege-escalation flaw: an integer-overflow bug (32-bit sum of three attacker-controlled fd_count fields wraps past the FD_SETSIZE bounds check) drives a heap overflow (CWE-122) in the NonPagedPool kernel heap of the Viosock driver, corrupting kernel memory. Attack vector is genuinely local (AV:L) - the attacker must already run code as a low-privilege process inside the Windows guest (PR:L) to submit the IOCTL_SELECT request, so this is not a remote or network-facing issue. AC:L is justified because the overflow condition is deterministically triggerable via crafted fd_count values; however, reliably converting NonPagedPool corruption into stable code execution is a non-trivial exploitation step, so C:H/I:H/A:H represents realistic-but-not-turnkey potential rather than guaranteed SYSTEM. On the exploitation-signal side there is no EPSS score, no CISA KEV listing, and no public POC provided in the input - so the practical status is: no public exploit identified at time of analysis. The fix is confirmed (commit c6bef93d, PR#1568, release mm320) and the root cause is clearly documented in the diff, which raises confidence in the technical validity but does not indicate active exploitation. Net: a real, credible local EoP that matters most in multi-tenant KVM environments where untrusted users share a guest, but it is a patch-in-normal-cycle priority rather than an emergency, absent any exploitation evidence. |
| Exploit ScenarioDerived | A low-privilege user or sandboxed process inside a Windows KVM/QEMU guest that has the Viosock driver loaded opens the device and issues an IOCTL_SELECT request with VIRTIO_VSOCK_SELECT.Fdss[*].fd_count values crafted so their 32-bit sum wraps below FD_SETSIZE while an individual count is huge. VIOSockSelectCopyFds then iterates on the unchecked large count and writes past the pPkt->Fds allocation in NonPagedPool, corrupting kernel memory to escalate toward SYSTEM in the guest. No public POC is referenced in the provided data. |
Get an e-mail when this CVE is exploited, patched or re-scored. Free account.
Alert meAnalysisAIv1 – Sep 18, 2026
Local privilege escalation in the virtio-win Viosock (vsock) paravirtualized driver, builds mm210 through mm319, lets an attacker who already has low-privilege code execution inside a Windows guest corrupt kernel memory and escalate to SYSTEM. The driver's IOCTL_SELECT handler adds three attacker-controlled descriptor counts with 32-bit arithmetic, so an integer-wrapped total passes the FD_SETSIZE bounds check while an individual fd_count remains far above the expected limit; the subsequent copy routine then walks the unchecked count and writes past the NonPagedPool-allocated pPkt->Fds array. Exploitation is local only (AV:L) and requires a low-privileged foothold (PR:L) with no user interaction; no public exploit code was identified at time of analysis, and the vendor fixed the issue in build mm320 via commit c6bef93d7909584bbda4e5c87603ea175825f342.
RemediationAI
Primary fix: upgrade the virtio-win guest driver package to build mm320 or later, which contains the corrected fd_count validation in viosock/sys/Device.c (upstream PR 1568, commit c6bef93d7909584bbda4e5c87603ea175825f342) - reference the advisory at https://github.com/virtio-win/kvm-guest-drivers-windows/security/advisories/GHSA-qrhp-4mhp-hjwh and the mm320 release at https://github.com/virtio-win/kvm-guest-drivers-windows/releases/tag/mm320. Updating the driver requires reinstalling the virtio-win package inside each affected guest and rebooting so the new kernel-mode driver loads; validate afterward that viosock.sys reports the mm320 (or later) version. Because this is a kernel driver, there is no patch-independent in-guest workaround that preserves the vsock feature: the only effective compensating control is to remove or disable the Viosock driver/device on guests that do not need host-guest vsock communication. Installing the virtio-win package without the viosock component (or uninstalling/disabling the device in Device Manager and blocking the driver via a policy) eliminates the vulnerable IOCTL surface, at the cost of breaking any AF_VSOCK-based host-guest integration. Restricting interactive logon and local process execution in guests reduces the PR:L foothold this exploit needs, but does not substitute for patching.
Affected VersionsENISA
Affects your stack
Find out whether the stacks and servers you run are on an affected version.
Checking this CVE against your own stacks and servers is part of the Basic plan and up.
Technical ContextAI · show details
The vulnerability is a heap-based buffer overflow (CWE-122) rooted in an unchecked 32-bit integer overflow inside the viosock kernel driver (viosock/sys/Device.c), part of the virtio-win kvm-guest-drivers-windows package (CPE cpe:2.3:a:virtio-win:kvm-guest-drivers-windows). Viosock implements the Windows AF_VSOCK provider that speaks the virtio-vsock protocol between a KVM guest and its host. Its IOCTL_SELECT handler receives a VIRTIO_VSOCK_SELECT structure whose Fdss[] array carries three descriptor counts (FDSET_READ, FDSET_WRITE, FDSET_EXCPT). The original code validated only the sum of those three values against FD_SETSIZE, so a caller supplying oversized counts whose 32-bit sum wraps to a small number evades the check. VIOSockSelectCopyFds then iterates using the individual, unvalidated count and writes beyond the pPkt->Fds buffer allocated in NonPagedPool, giving a local process a controlled kernel-heap overwrite. The upstream fix decomposes the sum: it reads each fd_count into a separate ULONG, rejects any individual value greater than FD_SETSIZE with STATUS_INVALID_PARAMETER, and only then computes a non-zero total that must also fit within FD_SETSIZE. The driver runs in kernel mode (WDFREQUEST-based IOCTL path), so primitive access to the device plus a crafted request is sufficient; the attack requires the Viosock driver to be installed, loaded, and reachable by the low-privilege process.
Know when Kvm Guest Drivers Windows gets its next vulnerability
- Watch products and get an email when something new is published
- Check this CVE against your own stack and servers
- Exploit and PoC references, threat intelligence from 22 sources
No credit card · 7-day full trial
Severity by source
AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H
Local IOCTL from a low-priv guest process (AV:L/PR:L), deterministically triggerable overflow (AC:L), kernel heap corruption yielding SYSTEM-level compromise in the guest (C:H/I:H/A:H, S:U).
Primary rating from Vendor (GitHub_M).
CVSS VectorVendor: GitHub_M
DescriptionCVE.org
virtio-win provides Windows paravirtualized drivers for QEMU and KVM. From mm210 until mm320, the Viosock driver permits a low-privilege local process to submit an IOCTL_SELECT request with attacker-controlled VIRTIO_VSOCK_SELECT.Fdss[*].fd_count values that overflow the 32-bit sum used by VIOSockSelect for bounds checking. The wrapped sum can pass the FD_SETSIZE check even though an individual descriptor count is much larger than the expected limit. VIOSockSelectCopyFds then iterates using the unchecked count and writes beyond the allocated pPkt->Fds array in the NonPagedPool kernel heap. Successful exploitation can corrupt kernel memory and enable privilege escalation in a Windows guest running the driver. This issue is fixed in mm320.
Technical POC Analysis
CWE-122 (heap-based buffer overflow), reached via CWE-190 (integer overflow/wraparound).
Full technical POC analysis - root cause, step-by-step exploitation and patch breakdown - is part of the Pro and Business plans.
Executive ViewAI
The virtio-win Viosock (vsock) driver, builds mm210 through mm319, contains a local privilege-escalation flaw that lets an attacker with an existing low-privileged foothold inside a Windows guest gain SYSTEM-level control of that guest. Organizations running Windows virtual machines on KVM-based platforms with the affected paravirtualized driver are exposed; no public exploit was identified at time of analysis, but the flaw is locally exploitable without user interaction and could be chained from commodity initial-access malware. Leadership should prioritize identifying affected guests and moving to build mm320 or later, because a guest escalated to SYSTEM can become a launch point for lateral movement and data theft across the virtual estate.
Apply vendor patch.
Threat Intelligence Overview
How this decision was reached
The engine reads each signal below and applies a fixed list of rules from top to bottom. The first rule that matches sets the recommended action – like a statement, every line is shown.
What every action level means
SSVC AssessmentENISA
Priority Score
Attack Technique
Privilege escalation occurs when an attacker leverages flaws in access control mechanisms to gain permissions beyond what they were originally granted.
A buffer overflow occurs when a program writes more data to a memory buffer than it was allocated to hold, causing the excess data to spill into adjacent memory regions.
A heap overflow occurs when a program writes data beyond the bounds of a buffer allocated in the heap memory region.
EUVD-2026-83179
NVD
CVE.org
EPSS
Vulnrichment
GitHub
Exploit-DB