This is a skeleton key left inside the building, not a door left open to the street
CVE-2025-59199 is an SPP local privilege escalation in Windows' Software Protection Platform: a user who already has local code execution with low privileges can abuse improper access control to jump to a more privileged context, plausibly SYSTEM. Public Microsoft/NVD text is thin, but the affected range is broad: Windows 10 1809/21H2/22H2, Windows 11 22H2/23H2/24H2/25H2, Windows Server 2019/2022/2025, and Server 23H2 Core builds prior to the October 14, 2025 fixes.
Microsoft's HIGH 7.8 is technically fair in a CVSS vacuum because successful exploitation gives full host impact, but it overstates enterprise patch urgency. The decisive downgrade is the attack position: AV:L and PR:L mean the attacker must already be on the box with a valid low-privileged context, so this is a *post-initial-access amplifier*, not an exposure path. No KEV listing, no active exploitation evidence, no public PoC in straightforward searches, and a very low EPSS all push it down to MEDIUM for fleet prioritization.
4 steps from start to impact.
Gain a low-privileged Windows foothold
- Local code execution on the Windows host
- A valid low-privileged user context
- Requires prior compromise or legitimate local access
- Modern EDR, email security, application control, or MFA may stop the chain before this CVE is ever relevant
Confirm the host is on a vulnerable SPP build
- Host is running one of the listed affected Windows client or server families
- October 14, 2025 security update not installed
- Windows cumulative updates age out vulnerable builds steadily in managed fleets
- Server Core and desktop SKUs need matching build-family logic; this complicates mass weaponization
Run a custom SPP privilege-escalation primitive
- A local process can interact with the vulnerable SPP code path
- Exploit logic compatible with the target build
- No public PoC found in basic open-source searches
- Local exploit reliability often varies by build, hardening state, and token/session context
Monetize SYSTEM: dump creds, disable controls, pivot
- Privilege escalation succeeds
- Useful credentials, services, or management pathways exist on the host
- Credential Guard, LSASS protections, EDR self-protection, and application control can still limit payoff
- Blast radius is host-local until the attacker finds adjacent privilege or credentials
- Perimeter firewalls and WAFs do nothing meaningful here because the vulnerable path is local, not a network-facing service entry point.
- External attack-surface scans are not a control for this CVE; they cannot tell you whether an already-compromised host can exploit a local SPP boundary failure.
- MFA helps with initial access and remote admin abuse, but it does not stop a local exploit once the attacker already has code running under a user context.
The supporting signals.
| In-the-wild status | No public active exploitation evidence found. CISA ADP vulnrich data marks exploitation as none, and the user-supplied intel says KEV listed: No. |
|---|---|
| Public PoC availability | No public PoC found in straightforward GitHub/web searches for CVE-2025-59199 or SPP exploit references. That does not mean unexploitable; it does mean lower operational convenience for attackers. |
| EPSS | 0.00087 from the user-supplied intel. Public aggregator views place it roughly in the low quartile (~25th percentile), which is directionally consistent with a low-likelihood local LPE. |
| KEV status | Not listed in the CISA KEV catalog. No KEV add date or federal due date applies. |
| CVSS vector reality check | CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H means local + low privileges + no user interaction. Translation: excellent for chaining *after* foothold, poor as a prioritization driver for perimeter risk. |
| Affected versions | Broad Windows coverage: Win10 1809/21H2/22H2, Win11 22H2/23H2/24H2/25H2, Server 2019/2022/2025, plus Server 23H2 Core, per the Microsoft CNA record mirrored in NVD/OpenCVE. |
| Fixed versions | Patched at or above 17763.7919, 19044.6456, 19045.6456, 20348.4294, 22621.6060, 22631.6060, 25398.1913, 26100.6899, and 26200.6899. |
| Exposure and scanning data | No meaningful internet exposure metric exists here. This is AV:L, so Shodan/Censys/GreyNoise-style external telemetry is largely irrelevant; the reachable population is your already-compromised or locally accessible Windows estate. |
| Disclosure and reporting | Publicly disclosed 2025-10-14. The CNA/assigner is Microsoft; no independent researcher is named in the public record I reviewed. |
| Detection coverage | Patch-state detection should be strong via standard Windows vuln management and build/KB checks. Exploit-path detection is weaker unless EDR catches generic LPE behavior or suspicious post-escalation actions. |
Sources.
- Microsoft Security Update Guide - CVE-2025-59199
- NVD - CVE-2025-59199
- OpenCVE mirror of Microsoft CNA record
- CISA Known Exploited Vulnerabilities Catalog
- FIRST EPSS project
- Microsoft Support KB5066586 - OS Build 17763.7919
- Microsoft Support KB5066791 - OS Builds 19044.6456 and 19045.6456
- Microsoft Support KB5066793 / KB5066835 - OS Builds 22621.6060, 22631.6060, 26100.6899, 26200.6899
Why this verdict
- Vendor baseline starts at 7.8 because impact is real: if exploitation succeeds, the attacker can reach full host compromise.
- AV:L + PR:L is the decisive downgrade: the attacker already needs local execution and a valid low-privileged context, which implies a prior compromise stage or legitimate access.
- Reachable population is broad in software terms but narrow in attack terms: many Windows builds are affected, yet only systems where the attacker is already on-box can be attacked.
- Modern controls should break the chain earlier: EDR, app control, email protections, MFA, and hardening target the prerequisite foothold stage, not the SPP bug itself.
- Threat intel is quiet: no KEV, no public exploitation evidence found, no public PoC found, and EPSS is very low.
Why not higher?
This is not remotely reachable, not pre-auth, not internet-exposed, and not wormable. There is also no public exploitation signal that would justify treating it like a live-fire Windows emergency despite the high technical impact on a single host.
Why not lower?
Dropping this to LOW would ignore how often Windows LPEs are used to turn commodity user-level access into durable control. The affected population is large, the impact after success is severe, and this class of bug is operationally useful for ransomware operators and post-exploitation teams even without public KEV evidence.
Crowdsourced verification payload.
Run this on the target Windows host or through your remote management tooling in the same OS context you use for inventory. Example: powershell -ExecutionPolicy Bypass -File .\Test-CVE-2025-59199.ps1; standard user rights are usually enough because it only reads OS version/build data.
# Test-CVE-2025-59199.ps1
# Checks whether the current Windows build is below the fixed threshold for CVE-2025-59199.
# Output: VULNERABLE / PATCHED / UNKNOWN
# Exit codes: 0=PATCHED, 1=VULNERABLE, 2=UNKNOWN, 3=ERROR
$ErrorActionPreference = 'Stop'
function Write-Result {
param(
[string]$State,
[string]$Message,
[int]$Code
)
Write-Output "$State - $Message"
exit $Code
}
try {
$cv = Get-ItemProperty 'HKLM:\SOFTWARE\Microsoft\Windows NT\CurrentVersion'
$currentBuild = [int]$cv.CurrentBuildNumber
$ubr = [int]$cv.UBR
$buildString = "$currentBuild.$ubr"
$productName = $cv.ProductName
$displayVersion = $cv.DisplayVersion
# Fixed thresholds from Microsoft/NVD/CNA data for CVE-2025-59199
$fixed = @{
17763 = 7919
19044 = 6456
19045 = 6456
20348 = 4294
22621 = 6060
22631 = 6060
25398 = 1913
26100 = 6899
26200 = 6899
}
if (-not $fixed.ContainsKey($currentBuild)) {
Write-Result -State 'UNKNOWN' -Message "Unsupported or unaffected build family detected: $productName $displayVersion ($buildString)" -Code 2
}
$requiredUbr = [int]$fixed[$currentBuild]
if ($ubr -lt $requiredUbr) {
Write-Result -State 'VULNERABLE' -Message "$productName $displayVersion build $buildString is below fixed threshold $currentBuild.$requiredUbr for CVE-2025-59199" -Code 1
}
else {
Write-Result -State 'PATCHED' -Message "$productName $displayVersion build $buildString meets or exceeds fixed threshold $currentBuild.$requiredUbr for CVE-2025-59199" -Code 0
}
}
catch {
Write-Result -State 'UNKNOWN' -Message "Version check failed: $($_.Exception.Message)" -Code 3
}