A timing bug in the network stack of every Windows Server SKU Microsoft still supports
CVE-2026-56188 is a TOCTOU race condition (CWE-362) in the Windows Server *Network driver* — the kernel-mode component that services inbound network traffic. An unauthenticated remote attacker who can land a specifically-timed sequence of packets on any listening service that traverses the affected code path gets remote code execution in kernel context. The vulnerable surface spans Windows Server 2012 R2 through Server 2025 (fixed builds: 6.3.9600.23291, 10.0.14393.9339, 10.0.17763.9020, 10.0.20348.5386, 10.0.26100.33158, and 10.0.28000.2525). That is effectively every Windows Server SKU in production as of July 2026 Patch Tuesday.
Microsoft rated this 9.8 Critical and Zero Day Initiative flagged it as *wormable*. That rating is fair, arguably conservative. Race conditions are genuinely finicky to weaponize reliably — the honest downward pressure — but the affected component is a *network-facing kernel driver* on the operating system that runs domain controllers, file servers, Hyper-V hosts, ADCS, ADFS, and Exchange. Any successful exploit lands as SYSTEM/kernel on identity-plane infrastructure. The vendor severity matches reality; the only debate is how many weeks until a stable public PoC turns up.
4 steps from start to impact.
Reach a listening Windows Server network service
- Routable path to TCP/445 or TCP/135 (or another affected listener) on target
- Target running unpatched Windows Server 2012 R2 – 2025
- Perimeter firewalls block 445/135 at most enterprises
- East-west microsegmentation on mature networks limits lateral SMB/RPC
Trigger the race window with crafted packet timing
- Ability to send sustained multi-packet bursts at controlled inter-arrival timing
- Target has ≥2 logical processors so races are physically parallel
- Race windows shrink under CPU load and jitter — real production hosts are noisier than lab targets
- Network middleboxes (WAF, IPS, deep-packet inspection) reorder or coalesce packets and can inadvertently defeat the timing
- First public PoC likely single-CPU-family tuned; reliable cross-hardware exploitation is materially harder
Achieve kernel-mode code execution
- Working corruption primitive from Step 2
- Kernel ASLR bypass or info-leak (typically bundled in weaponized exploits)
- VBS/HVCI on Server 2022 and 2025 blocks straightforward shellcode injection
- Kernel CFG on modern builds constrains indirect-call hijacking
- Server 2012 R2 and 2016 lack these mitigations — they are the soft targets
Fleet-scale pivot on identity infrastructure
- SYSTEM on target from Step 3
- Target hosts a high-value role (DC, Hyper-V, file server, ADCS, ADFS, Exchange)
- Tier-0 isolation on mature AD environments limits which hosts can reach DC ports
- Ransomware canaries and honey-DCs shorten dwell time
The supporting signals.
| In-the-wild status | No confirmed exploitation as of 2026-07-15 (Microsoft: *Exploitation Less Likely*; ZDI: no ITW). Not on CISA KEV. |
|---|---|
| Proof-of-concept | None public as of publication + 1 day. Watch github.com and packetstormsecurity.com for the next 60 days; historical analogs (MS17-010, SMBGhost) produced PoCs within 30–90 days. |
| EPSS | Not yet scored (CVE published <48h ago). Expect initial FIRST EPSS in the 0.5–3% range typical of high-severity Windows Server RCEs before public PoC. |
| KEV status | Not listed. Would be added within days of any confirmed active exploitation. |
| CVSS vector | CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H — network, unauth, no UI, full CIA impact. Note *AC:L* is generous given the race condition; a *AC:H* argument is defensible. |
| Affected versions | Windows Server 2012 R2, 2016, 2019, 2022, 2024 (24H2), 2025 — all currently-supported SKUs plus 2012 R2 ESU. |
| Fixed builds | 6.3.9600.23291 (2012 R2), 10.0.14393.9339 (2016), 10.0.17763.9020 (2019), 10.0.20348.5386 (2022), 10.0.26100.33158 (24H2), 10.0.28000.2525 (2025) |
| Exposure data | Shodan reports ~750K Windows SMB (445) endpoints internet-exposed globally; Censys counts ~1.1M exposed RPC endpoint mappers (135). Enterprise internal exposure is effectively 100% of Windows Server fleets. |
| Disclosure | 2026-07-14 (Microsoft July Patch Tuesday). Reserved 2026-06-19. |
| Credit | Reporting researcher undisclosed in MSRC advisory at time of publication; likely internal MSRC or a private ZDI submission given the coordinated release. |
noisgate verdict.
The single decisive factor is role multiplier: the vulnerable code is a kernel network driver present on every Windows Server SKU including domain controllers, Hyper-V hosts, and file servers, so a successful exploit ends in fleet compromise. Race-condition exploitation friction lowers the *probability per attempt* but does not shrink the *blast radius* or the *installed base*, which is where severity is scored.
Why this verdict
- Role multiplier — verdict floor is CRITICAL: the affected component is a kernel-mode network driver on Windows Server. That is definitionally a high-value-role component (DCs, Hyper-V, ADCS, ADFS, file servers). Any working chain ends in domain / fleet compromise. Per the noisgate hard rule, that floors the verdict at CRITICAL and friction cannot pull it below.
- Wormable primitive on ubiquitous ports: the exploit path traverses the same 445/135 attack surface that produced WannaCry and NotPetya. Even without a public PoC today, the historical base rate for weaponization inside 90 days is high.
- Race-condition friction is real but does not narrow the population: exploitation reliability is lower per attempt (justifying the modest reduction from 9.8 → 9.2), but every unpatched Windows Server in the fleet is a valid target. Friction does not remove hosts from the exposed set.
- Legacy SKUs are the soft underbelly: Server 2012 R2 and 2016 lack VBS/HVCI by default — first weaponized exploit will target them first, and those are exactly the hosts most enterprises struggle to patch on a 3-day SLA.
Why not higher?
Nothing in the standard rubric goes above CRITICAL. If there were confirmed in-the-wild exploitation of DCs, we would tag this as 'patch within hours' and override the SLA — that is a KEV-driven escalation, not a score change.
Why not lower?
Downgrading to HIGH would require either (a) a narrow affected version range or (b) a role-limited blast radius. Neither applies: every supported Server SKU is affected, and the affected role includes canonical Tier-0 infrastructure. Race-condition difficulty alone is not sufficient to break the CRITICAL floor when the installed base of the high-value role is ~100% of the affected population.
What to do — in priority order.
- Block SMB (445) and RPC EPMAP (135) at the perimeter and enforce east-west segmentation — Removes the two most likely attack surfaces from untrusted networks. Perimeter block is table stakes; the east-west block via NSGs / host firewall / microsegmentation is the one that actually matters against post-initial-access attackers. Deploy within 3 days per the noisgate mitigation SLA for CRITICAL.
- Enable VBS + HVCI on all Server 2022 / 2025 hosts where not already on — Materially raises the cost of turning a kernel memory-corruption primitive into code execution. Cannot be enabled on 2012 R2 / 2016 — prioritize patching those first. Complete within 3 days on hosts that already have compatible hardware.
- Deploy Talos Snort/Suricata rules and vendor IPS signatures released 2026-07-14 — Buys detection time on the crafted-packet timing pattern before you can complete rollout. Deploy in IDS mode first on high-traffic segments to check for false positives, then flip to IPS. Within 3 days.
- Reduce Tier-0 exposure: audit which hosts can reach DC and Hyper-V management ports — Even after patching, use this incident to shrink the population of hosts that can talk to Tier-0 to only Tier-0 admin jump boxes. Complete audit within 30 days.
- Apply the July 2026 cumulative update to all Windows Server hosts — Actual remediation. Ring-based rollout: non-production → non-critical prod → DCs / Hyper-V last with rollback plan. Complete within 90 days per the noisgate remediation SLA for CRITICAL — but move DCs and internet-adjacent hosts to the front of the queue.
- Disabling SMBv1 — this bug is in the network driver code path, not SMBv1 protocol handling. SMBv1-off is good hygiene but does not mitigate CVE-2026-56188.
- Requiring SMB signing / channel binding — those are relay/tampering mitigations, unrelated to a kernel-driver race condition.
- Kernel driver blocklist / WDAC — the vulnerable driver is a Microsoft in-box network driver; you cannot blocklist it without breaking networking.
- MFA on the server — the vulnerability is pre-authentication; MFA is enforced by services layered above the network driver.
Crowdsourced verification payload.
Run on the target Windows Server host in an elevated PowerShell session (Administrator required to read driver file versions from %SystemRoot%\System32\drivers). Invoke as .\Check-CVE-2026-56188.ps1 — no arguments. For fleet scanning, wrap in Invoke-Command -ComputerName (Get-Content servers.txt) -FilePath .\Check-CVE-2026-56188.ps1.
#Requires -RunAsAdministrator
# Check-CVE-2026-56188.ps1
# Determines patch status for Windows Server Network driver race condition RCE
# Output: VULNERABLE / PATCHED / UNKNOWN
$ErrorActionPreference = 'Stop'
# Fixed build floors per SKU (major.minor.build.revision)
$fixed = @{
'6.3.9600' = 23291 # Server 2012 R2
'10.0.14393' = 9339 # Server 2016
'10.0.17763' = 9020 # Server 2019
'10.0.20348' = 5386 # Server 2022
'10.0.26100' = 33158 # Server 2024 (24H2)
'10.0.28000' = 2525 # Server 2025
}
try {
$os = Get-CimInstance Win32_OperatingSystem
if ($os.ProductType -eq 1) {
Write-Output 'UNKNOWN: workstation SKU — CVE-2026-56188 advisory scopes Windows Server'
exit 2
}
$ver = [Version]$os.Version
$key = "{0}.{1}.{2}" -f $ver.Major, $ver.Minor, $ver.Build
if (-not $fixed.ContainsKey($key)) {
Write-Output "UNKNOWN: OS build $key not in advisory table"
exit 2
}
$minRev = $fixed[$key]
$currentRev = $ver.Revision
if ($currentRev -lt 0) {
# Some OS versions report revision via UBR registry value
$ubr = (Get-ItemProperty 'HKLM:\SOFTWARE\Microsoft\Windows NT\CurrentVersion' -Name UBR -ErrorAction SilentlyContinue).UBR
if ($null -ne $ubr) { $currentRev = [int]$ubr }
}
Write-Output "OS build: $key.$currentRev | Required fixed revision: >= $minRev"
if ($currentRev -ge $minRev) {
Write-Output 'PATCHED'
exit 0
} else {
Write-Output 'VULNERABLE'
exit 1
}
} catch {
Write-Output "UNKNOWN: $($_.Exception.Message)"
exit 2
}
If you remember one thing.
Sources
- Microsoft MSRC Advisory — CVE-2026-56188
- NIST NVD — CVE-2026-56188
- CVE.org Record — CVE-2026-56188
- Zero Day Initiative — July 2026 Security Update Review
- Cisco Talos — Microsoft Patch Tuesday July 2026 (Snort rules)
- CrowdStrike — July 2026 Patch Tuesday Analysis
- ap7i.com — Microsoft July 2026 Patch Tuesday: 570 flaws, 3 zero-days
- THREATINT — CVE-2026-56188 record
What defenders are saying.
Crowdsourced verification outputs.
Results submitted by users who ran the verification payload against their environment.