A signed-math bug in the Windows NT kernel that hands SYSTEM to anyone who already has a shell
CVE-2026-42980 is an *integer underflow* (CWE-122 heap corruption downstream) in the Windows NT OS Kernel — specifically in a size-calculation path where a caller-controlled length wraps around zero and results in an undersized allocation followed by an oversized copy. The end state is a controllable heap overflow inside ntoskrnl, which competent exploit developers routinely convert to arbitrary kernel read/write and then to a SYSTEM token swap. Affected builds span currently-supported Windows 10 (22H2), Windows 11 (22H2/23H2/24H2), and Windows Server 2019/2022/2025 rollups prior to the June 2026 Patch Tuesday cumulative.
Microsoft's HIGH / 7.8 rating is honest. The CVSS vector AV:L/AC:L/PR:L/UI:N correctly captures a *local, low-privilege, no-user-interaction* LPE — you must already be code-executing on the box as a normal user. That is exactly the profile ransomware affiliates, commodity infostealers, and post-phish operators need. It is not a wormable RCE, and it does not deserve CRITICAL, but downgrading it below HIGH ignores that kernel LPEs are the standard second-stage tool in every real intrusion of the last five years.
5 steps from start to impact.
Attacker obtains low-privileged code execution on the host
- Local code execution as any non-SYSTEM user
- Ability to call NT syscalls (default for all user processes)
- Requires the attacker to already be inside — this is a stage-2 capability, not initial access
- Modern EDRs (CrowdStrike, Defender for Endpoint, SentinelOne) heavily instrument the initial-access delivery vectors
Trigger the vulnerable syscall / IOCTL path with a crafted length
Nt* syscall or a device-IO path reachable from user mode) with a length field that, after signed arithmetic, wraps below zero. The kernel then allocates a pool buffer smaller than intended. Public research on prior NT kernel underflows (CVE-2023-28218, CVE-2024-38080 class) uses the PoolMon+WinDbg loop to identify the exact allocator tag.- Knowledge of the vulnerable syscall number and argument layout
- Ability to pass an attacker-controlled length
- Exploit primitive requires reverse-engineering the June 2026 patch diff — non-trivial for commodity actors in the first 30 days
- Windows 11 24H2 KASLR + kCET + HVCI complicate the shape of the heap groom
Heap groom the paged/non-paged pool and land the overflow
NtCreateEvent, NtCreateSection, or pipe-attribute sprays (the PipeAttribute / I/O Ring techniques popularized by Yarden Shafir and worrisome.cat) is used to place a controllable adjacent object. The undersized allocation overflows into that object, giving an arbitrary-write primitive against a pointer field.- Reliable pool grooming primitive on the target build
- No kCET/HVCI blocking the specific data-only write path chosen
- HVCI (default on Secured-core PCs and Windows 11 24H2) blocks classic code-hook techniques and forces data-only exploitation
- kASLR randomizes ntoskrnl base — must be leaked, typically via
NtQuerySystemInformationwhich is blocked for medium-IL from 24H2 onward
NtQuerySystemInformation info-leak calls from unusual processes — inconsistently.Pivot to SYSTEM via token swap
PsInitialSystemProcess → EPROCESS.Token and replace the current process's token pointer with SYSTEM's. Weaponized with KDU, PPLKiller-derived code, or a private loader. Optional follow-on: disable ProtectedProcessLight on lsass, then dump credentials with Mimikatz or nanodump.- Arbitrary kernel write achieved in step 3
- Process not already terminated by EDR
- Well-tuned EDR flags subsequent behaviors (LSASS access, service creation as SYSTEM) even if the kernel primitive is missed
Ransomware / persistence / lateral movement
wdksetup-style tricks, credential harvest, and lateral movement to file servers and DCs. On a Terminal Server / VDI host or a jump box, one exploited user session becomes root on a machine serving hundreds.- SYSTEM token acquired
- Application allow-listing (WDAC) with strict policy can still block subsequent stages
- Tiered admin model limits lateral value of a workstation SYSTEM
The supporting signals.
| In-the-wild status | Not observed in the wild as of 2026-07-22. No named campaign or ransomware crew attribution. Historical base rate: Windows kernel LPEs of this class (CVE-2023-36802, CVE-2024-38080, CVE-2025-24983) reach KEV within 60–120 days of disclosure roughly 40% of the time. |
|---|---|
| PoC availability | No public weaponized PoC on GitHub as of writing. Expect a Project Zero or Sergey Kornienko / @b33f style writeup within 30–60 days of patch; commodity exploit kits (e.g. included in *GootLoader*, *Emmenhtal*) typically integrate within 90 days. |
| EPSS | 0.05659 (~5.7%) — 92nd percentile approximately. Elevated for a kernel LPE not yet exploited, reflecting FIRST's model weighting on CWE class and vendor. |
| CISA KEV | Not listed as of 2026-07-22. |
| CVSS vector interpretation | CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H → local, low-complexity, requires low privilege, no user interaction, full CIA impact within scope. Textbook LPE. |
| Affected versions | Windows 10 22H2, Windows 11 22H2 / 23H2 / 24H2, Windows Server 2019 / 2022 / 2025 — all builds prior to the June 2026 Patch Tuesday cumulative (KB506xxxx family). |
| Fixed versions | June 2026 cumulative update (installed via WSUS/WUfB/SCCM). No LTSC-specific out-of-band. Server Core receives the same rollup. |
| Exposure telemetry | Not remotely reachable → Shodan/Censys/GreyNoise irrelevant. Internal exposure = 100% of unpatched Windows endpoints, which on a typical 10k-host fleet 6 weeks after Patch Tuesday is still 15–30% per BigFix/Tanium industry medians. |
| Disclosure | 2026-06-09 (Microsoft June 2026 Patch Tuesday). |
| Credited researcher | Reported to MSRC via coordinated disclosure; no public credit line at time of writing beyond MSRC acknowledgements page. |
noisgate verdict.
Verdict held at HIGH because this is a *kernel-mode privilege escalation* — the affected component is ntoskrnl itself, meaning every unpatched Windows host in the fleet is in the vulnerable population and successful exploitation ends at SYSTEM. The single decisive factor is role-multiplier + universality: the bug lives in the OS kernel, so the high-value-role floor (jump boxes, Terminal Servers, VDI hosts, DCs running the same kernel) locks the verdict at HIGH regardless of the local-only attack vector.
Why this verdict
- Local-only vector caps the ceiling.
AV:Lmeans no unauthenticated remote path, no worm, no perimeter play. That is the reason this is not CRITICAL. - Low-priv precondition is trivial in reality.
PR:Lin an enterprise means "any phished user, any RMM foothold, any Citrix sessionn." This is not real friction against an attacker who has already landed — it is the *default* second-stage condition. - Role multiplier: workstation — chain succeeds, blast radius is single-host SYSTEM plus stored creds/tokens. Typical.
- Role multiplier: Terminal Server / Citrix VDA / jump box — chain succeeds, blast radius is *every concurrent user session on that host*. 100–1000 users per box in real deployments. Common in finance and healthcare.
- Role multiplier: domain controller — DCs run the same NT kernel. If any low-priv service account can execute code on a DC (BloodHound routinely finds one in 80%+ of AD environments), this chain ends in domain compromise. Floor is HIGH on this basis alone.
- EPSS 0.057 at 92nd percentile signals FIRST expects near-term exploitation attempts. Consistent with the historical LPE-to-KEV base rate.
Why not higher?
Not CRITICAL because the attack requires local code execution as an authenticated user — there is no unauthenticated remote reach, no wormability, and no path from the internet without a prior initial-access foothold. That single friction point (AV:L) is what keeps every Windows kernel LPE out of the CRITICAL bucket in this engine.
Why not lower?
Not MEDIUM because kernel LPEs on Windows are a mandatory ingredient in real intrusions — every current-generation ransomware operator (LockBit-successor crews, Play, Akira, RansomHub) rotates in fresh SYSTEM-primitives quarterly. The universality of the affected component (100% of unpatched Windows hosts) plus the role-multiplier on shared hosts and DCs prevents a downgrade.
What to do — in priority order.
- Deploy the June 2026 cumulative to Tier-0 and shared-session hosts first — DCs, ADCS servers, PAM/Vault hosts, Terminal Servers, Citrix VDAs, and jump boxes are where the role multiplier bites. Prioritize these within the noisgate mitigation SLA of 30 days for HIGH; the residual fleet fits inside the 180-day remediation window.
- Enforce HVCI + Memory Integrity fleet-wide — HVCI (
DeviceGuard\HypervisorEnforcedCodeIntegrity=1) does not stop the primitive but materially raises the exploitation cost by forbidding classic kernel code injection, forcing data-only exploitation. Push via Intune/GPO within the same 30-day window. - Tighten application allow-listing (WDAC / AppLocker) on Tier-0 and shared hosts — Blocks the arbitrary user-mode binary that delivers the exploit. Configure with signer + path rules in audit mode first, enforcement within 30 days.
- Instrument EDR for post-SYSTEM behaviors, not the exploit itself — The kernel primitive is silent. Tune Defender for Endpoint / CrowdStrike detections for LSASS handle acquisition from newly-elevated processes,
sc createrunning as SYSTEM from unusual parents, and Defender-tamper events (Event ID 5001, 5007). This is the reliable catch. - Segment jump-box and Terminal Server traffic — Even if SYSTEM is achieved on a jump box, network-layer segmentation (Tier-0 admin-workstation model, RDP restricted to PAWs) limits lateral movement to Tier-0 assets.
- Perimeter firewall / WAF rules — the vulnerability is not network-reachable; nothing to block at the edge.
- Disabling SMBv1 / disabling RDP — unrelated attack surface; does not touch the vulnerable syscall path.
- MFA on user accounts — MFA gates authentication, not post-auth kernel calls. Once the user is logged in, MFA is irrelevant to this exploit.
- LAPS — protects local-admin credentials but does nothing against a bug that hands you SYSTEM without needing local admin.
- Standard AV signatures — the exploit is data-driven syscall abuse; there is no persistent binary signature to match.
Crowdsourced verification payload.
Run on each Windows target host as a local admin (or via your endpoint management tool's script channel — Intune Proactive Remediation, SCCM Run Script, Tanium Deploy). Invoke with: powershell -ExecutionPolicy Bypass -File .\Check-CVE-2026-42980.ps1. The script inspects the installed cumulative update revision against the June 2026 Patch Tuesday floor for each build family.
#requires -Version 5.1
# Check-CVE-2026-42980.ps1
# Determines whether the local host has the June 2026 (or later) Windows cumulative
# addressing CVE-2026-42980 (NT kernel integer underflow -> LPE).
# Exit codes: 0 = PATCHED, 1 = VULNERABLE, 2 = UNKNOWN
$ErrorActionPreference = 'Stop'
# Minimum fixed OS build numbers per family (June 2026 Patch Tuesday, KB506xxxx).
# Adjust these to the exact KB build numbers Microsoft ships for your fleet.
$minBuilds = @{
# Windows 11 24H2
'26100' = 4351
# Windows 11 23H2 / 22H2
'22631' = 4602
'22621' = 4602
# Windows 10 22H2
'19045' = 5854
# Server 2025
'26100.SRV' = 4351
# Server 2022
'20348' = 2701
# Server 2019
'17763' = 6414
}
try {
$cv = Get-ItemProperty 'HKLM:\SOFTWARE\Microsoft\Windows NT\CurrentVersion'
$build = [int]$cv.CurrentBuildNumber
$ubr = [int]$cv.UBR
$productName = $cv.ProductName
$key = if ($productName -match 'Server' -and $build -eq 26100) { '26100.SRV' } else { $build.ToString() }
if (-not $minBuilds.ContainsKey($key)) {
Write-Output "UNKNOWN: unrecognized build $build ($productName) - manual review required"
exit 2
}
$required = $minBuilds[$key]
Write-Output "Host build: $build.$ubr ($productName)"
Write-Output "Required UBR floor for CVE-2026-42980: $required"
if ($ubr -ge $required) {
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
- MSRC advisory (June 2026 Patch Tuesday overview)
- NVD entry for CVE-2026-42980
- CISA KEV catalog (verify listing status)
- FIRST EPSS lookup
- Microsoft — Enable virtualization-based protection of code integrity (HVCI)
- Microsoft — Windows Defender Application Control (WDAC)
- Yarden Shafir — I/O Ring / PipeAttribute pool grooming primitives
- Microsoft — Securing privileged access / Tier model
What defenders are saying.
Crowdsourced verification outputs.
Results submitted by users who ran the verification payload against their environment.