← Back to Feed CACHED · 2026-07-17 09:03:00 · CACHE_KEY CVE-2025-59287
CVE-2025-59287 · CWE-502 · Disclosed 2025-10-14

Deserialization of untrusted data in Windows Server Update Service

ASSESSED — NOISGATE V0.5
Vendor
Reassessed
Verdict:
Do you agree?
01 · The Real Story

Your patch server just became the adversary's patch server

CVE-2025-59287 is an unauthenticated deserialization flaw in the WSUS GetCookie() endpoint. The service deserializes an attacker-supplied AuthorizationCookie blob with a legacy BinaryFormatter under the WSUS web service running as SYSTEM (or NETWORK SERVICE with SeImpersonate → SYSTEM), so a single HTTP(S) POST to /ClientWebService/Client.asmx on port 8530/TCP (HTTP) or 8531/TCP (HTTPS) yields remote code execution. Affects Windows Server 2012, 2012 R2, 2016, 2019, 2022, 2022 23H2, and 2025 with the WSUS Server Role enabled — every currently-supported Windows Server SKU shipping WSUS is in scope.

Vendor severity is correct and, if anything, understated in operational terms. Microsoft's original October 14 patch was incomplete; the working out-of-band fix landed October 23. Public PoCs from HawkEye, Huntress, and MDSec dropped within 48 hours, EPSS is pinned at 0.9996, and CISA added it to KEV on October 24 with mass exploitation observed by Eye Security, Huntress, and Sophos. WSUS is by definition a fleet-scale trust anchor — this is not a bug you triage, it is a bug you stop what you are doing for.

"Unauthenticated RCE as SYSTEM on a box that pushes signed code to every Windows host in your fleet. KEV-listed and mass-exploited."
02 · The Attack Path

5 steps from start to impact.

STEP 01

Locate an exposed WSUS server

Attacker fingerprints WSUS via the default TCP ports 8530 (HTTP) and 8531 (HTTPS), or IIS-hosted /ClientWebService/Client.asmx and /ApiRemoting30/WebService.asmx. Shodan and Censys tag WSUS by its distinctive WSDL. nuclei templates and Huntress's public scanner enumerate exposure in seconds.
Conditions required:
  • Network reachability to WSUS ports 8530/8531 or 80/443 hosting the WSUS vroot
  • WSUS Server Role installed and running
Where this breaks in practice:
  • WSUS is *supposed* to be internal-only, but Censys counted ~2,500 internet-exposed instances at disclosure
  • Segmented environments confine reach to an internal pivot
Detection/coverage: Shodan/Censys queries product:"Microsoft WSUS"; Huntress and Rapid7 released unauthenticated remote checks the week of Oct 23
STEP 02

Craft the malicious AuthorizationCookie

Attacker generates a .NET BinaryFormatter gadget chain — typically ysoserial.net --formatter BinaryFormatter --gadget TypeConfuseDelegate or ObjectDataProvider — wrapping an OS command. The blob is base64-encoded and stuffed into the EncryptedData field of a SOAP GetCookie request. No credentials, no CSRF token, no client cert required.
Conditions required:
  • ysoserial.net or the public MDSec PoC
  • Ability to send a SOAP POST
Where this breaks in practice:
  • None — this is single-shot, no session state required
Detection/coverage: SOAP body <GetCookie> with oversized EncryptedData payload; IIS log entries to /ClientWebService/Client.asmx from unexpected source IPs
STEP 03

Achieve SYSTEM RCE on the WSUS host

The WSUS worker process (w3wp.exe under the WsusPool app-pool identity) deserializes the blob and instantiates attacker-controlled types, calling the gadget's Finalize or ProcessStartInfo sink. Because WsusPool runs with SeImpersonatePrivilege, standard PrintSpoofer / GodPotato token-kidnap gets the attacker to NT AUTHORITY\SYSTEM immediately.
Conditions required:
  • Successful step 2
Where this breaks in practice:
  • Application-layer WAF blocking oversized SOAP bodies (rare in front of WSUS)
  • AMSI hooks on w3wp.exe catch some PowerShell-based gadgets but not native-command chains
Detection/coverage: Sysmon EID 1: w3wp.exe spawning cmd.exe/powershell.exe/conhost.exe; MDE and CrowdStrike shipped detections within 72h
STEP 04

Weaponize the update channel

With SYSTEM on WSUS, the attacker can approve arbitrary signed or self-signed update metadata (WSUS accepts admin-approved third-party updates via SCUP or direct DB write to SUSDB) and target it at OU-scoped computer groups. Every downstream domain member polling WSUS then installs the payload during its next detection cycle — this is the fleet-scale amplifier.
Conditions required:
  • SYSTEM on WSUS
  • Downstream clients configured to auto-approve or auto-install
Where this breaks in practice:
  • Environments requiring signed third-party updates via SCUP with an enterprise code-signing cert add a step; most do not enforce this
Detection/coverage: Anomalous new update packages in SUSDB.dbo.tbUpdate; unexpected wuauclt.exe install activity across the fleet
STEP 05

Persist and pivot

WSUS is commonly domain-joined and, in many shops, runs on a member server with a service account that has local admin on client fleets or SQL sysadmin on SUSDB. Attacker dumps LSASS, extracts computer account creds, and coerces authentication to relay against ADCS or LDAPS. Full domain compromise from a single unauthenticated request.
Conditions required:
  • Domain-joined WSUS host
  • No LSASS protection / no Credential Guard
Where this breaks in practice:
  • Credential Guard + LSA protection break in-memory dumps
  • Tier-0 isolation of WSUS (rare in practice) contains blast radius
Detection/coverage: EDR LSASS access alerts; NTLM relay signatures from WSUS host to ADCS /certsrv/certfnsh.asp
03 · Intelligence Metadata

The supporting signals.

In-the-wild statusMass exploitation confirmed from 2025-10-24 onward — Eye Security, Huntress, and Sophos X-Ops reporting opportunistic scanning + payload drops within hours of PoC release
Proof-of-conceptPublic PoCs by HawkEye (@HawkEyeSec), MDSec, and Huntress; weaponized in Metasploit exploit/windows/http/wsus_getcookie_deserialize module (PR merged Oct 27, 2025)
EPSS0.99962 (99.99th percentile) — top-tier probability of exploitation
CISA KEVListed 2025-10-24, federal remediation due 2025-11-14
CVSS vectorAV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H — unauthenticated, network-reachable, no user interaction, full CIA impact
Affected versionsWindows Server 2012 / 2012 R2 / 2016 / 2019 / 2022 / 2022 23H2 / 2025 with the WSUS Server Role installed and enabled
Fixed buildsOut-of-band update KB5070881 / KB5070882 / KB5070883 / KB5070884 / KB5070885 shipped 2025-10-23 (the initial 2025-10-14 patch was incomplete)
Exposure telemetryCensys: ~2,500 internet-exposed WSUS instances on 8530/8531 as of 2025-10-25; Shodan: ~2,100; GreyNoise tagged >140 unique exploitation source IPs by 2025-10-30
Disclosed2025-10-14 (Patch Tuesday); OOB re-patch 2025-10-23
CreditReported by MEOW (@_MEOW_) via ZDI; independent discovery by MDSec
04 · The Call

noisgate verdict.

Final Verdict
= UNCHANGED to CRITICAL (9.8/10)

The single most decisive factor is the role multiplier: WSUS is by design a fleet-wide code-distribution trust anchor, and this bug delivers unauthenticated SYSTEM RCE on that anchor. Active KEV-listed mass exploitation with an EPSS of 0.9996 eliminates any argument for downgrade.

HIGH exploitability — public PoCs, Metasploit module, mass-exploitation telemetry
HIGH patch efficacy — the Oct 23 OOB update is the confirmed working fix
MEDIUM internet-exposed population count (~2,500 hosts is a floor; internal-only WSUS is the norm)

Why this verdict

  • Unauthenticated network RCE as SYSTEM — no credentials, no user interaction, single SOAP POST. Friction audit: zero prerequisites beyond port reachability.
  • Role multiplier — WSUS is a canonical high-value-role component. 100% of installs occupy the update-distribution role by definition. Successful chain ends in arbitrary code push to every domain-joined Windows client polling that WSUS. Floor is CRITICAL; friction cannot pull below.
  • KEV-listed with confirmed in-the-wild exploitation starting 2025-10-24 (Eye Security, Huntress, Sophos telemetry). EPSS 0.9996.
  • Microsoft's initial Oct 14 patch was incomplete — any org that patched only on Patch Tuesday and stopped there is still vulnerable. This creates a false-sense-of-security population.
  • Internal-only deployment does NOT save you — any assumed-breach or phishing beachhead in the corporate LAN reaches WSUS and converts a foothold into fleet takeover.

Why not higher?

9.8 is already the ceiling for network-reachable unauthenticated RCE under CVSS 3.1. There is no CRITICAL+ bucket in this schema.

Why not lower?

Every plausible downgrade lever fails: exploit is trivial, patch adoption is incomplete, exposure is not just external (internal WSUS is the whole point of WSUS), and the blast radius is the entire managed Windows fleet. Downgrading a KEV-listed unauthenticated RCE in a fleet trust anchor would be malpractice.

05 · Compensating Control

What to do — in priority order.

  1. Apply the OOB update KB5070881–KB5070885 immediately — The October 23 out-of-band update is the confirmed fix. The original October 14 update did NOT fully remediate. Deploy within 3 days per the noisgate mitigation SLA — and given active KEV exploitation, treat this as hours, not days.
  2. Block inbound TCP 8530/8531 at the perimeter and inter-VLAN — Confirm WSUS is not reachable from the internet with masscan -p8530,8531 <public ranges>. Internally, restrict WSUS ingress to the client subnets that actually poll it via host firewall or NSG rules — no jump-boxes, no DMZ, no admin VLAN if they are not polling clients.
  3. Disable the WSUS Server Role on hosts that don't need it — Any Windows Server with Install-WindowsFeature UpdateServices enabled but not actively serving clients is pure attack surface. Uninstall-WindowsFeature UpdateServices -Remove immediately on unused instances.
  4. Hunt for post-exploitation indicators back to Oct 14 — Query EDR for w3wp.exe (WsusPool app-pool) spawning cmd.exe, powershell.exe, certutil.exe, bitsadmin.exe, or curl.exe since 2025-10-14. Review SUSDB for unexpected update approvals in tbUpdateApproval and unfamiliar package hashes in tbFile.
  5. Rotate WSUS service-account and computer-account credentials post-patch — Assume-breach mindset: if the host was reachable and unpatched between Oct 14–23, credential material may be compromised. Rotate the WSUS service account, the computer account (netdom resetpwd), and any SQL sysadmin creds tied to SUSDB.
What doesn't work
  • Requiring authentication on the WSUS vroot in IIS — the vulnerable code path is reached before app-level auth in the WSUS handler pipeline in most tested configurations.
  • WAF signatures for BinaryFormatter blobs — the payload is base64 inside a legitimate SOAP field; signatures produce heavy false positives against normal client polling.
  • Disabling anonymous authentication — WSUS clients themselves authenticate via computer account, but the vulnerable endpoint accepts the request before that check completes in unpatched builds.
  • Relying on the October 14 Patch Tuesday update alone — it was incomplete. Only the October 23 OOB update fully closes the deserialization path.
06 · Verification

Crowdsourced verification payload.

Run on each Windows Server with the WSUS role as a local administrator. Invoke: powershell.exe -ExecutionPolicy Bypass -File .\Check-CVE-2025-59287.ps1. It inspects the installed KB list and file version of Microsoft.UpdateServices.WebServices.Client.dll and reports VULNERABLE / PATCHED / UNKNOWN.

noisgate-verify.ps1
POWERSHELLREAD-ONLYSAFE
#requires -RunAsAdministrator
# Check-CVE-2025-59287.ps1 — WSUS deserialization RCE check
# Exit codes: 0 PATCHED, 1 VULNERABLE, 2 UNKNOWN

$ErrorActionPreference = 'Stop'

# Fixed KBs shipped 2025-10-23 (OOB)
$fixedKBs = @('KB5070881','KB5070882','KB5070883','KB5070884','KB5070885')

# Is the WSUS role installed?
try {
    $wsus = Get-WindowsFeature -Name UpdateServices -ErrorAction Stop
    if (-not $wsus.Installed) {
        Write-Host 'NOT_APPLICABLE: WSUS Server Role not installed'
        exit 0
    }
} catch {
    Write-Host 'UNKNOWN: Get-WindowsFeature failed —' $_.Exception.Message
    exit 2
}

# Check installed hotfixes
$installed = Get-HotFix -ErrorAction SilentlyContinue | Select-Object -ExpandProperty HotFixID
$hit = $fixedKBs | Where-Object { $installed -contains $_ }

if ($hit) {
    Write-Host "PATCHED: OOB fix present ($hit)"
    exit 0
}

# Fallback — inspect assembly version of the WSUS client web service DLL
$dll = Join-Path $env:ProgramFiles 'Update Services\WebServices\ClientWebService\bin\Microsoft.UpdateServices.WebServices.Client.dll'
if (Test-Path $dll) {
    $ver = (Get-Item $dll).VersionInfo.FileVersion
    Write-Host "DLL version: $ver"
    # OOB build strings are 10.0.x with revision >= post-Oct-23 build; treat any missing KB as vulnerable
    Write-Host 'VULNERABLE: no fixed KB detected; apply KB5070881–KB5070885 immediately'
    exit 1
} else {
    Write-Host 'UNKNOWN: WSUS DLL path not found'
    exit 2
}
07 · Bottom Line

If you remember one thing.

TL;DR
Stop reading and go patch. This is a KEV-listed, mass-exploited, unauthenticated SYSTEM RCE on the box that pushes code to your entire Windows fleet — the noisgate mitigation SLA for CRITICAL is ≤3 days but active exploitation overrides that to within hours: apply KB5070881–KB5070885 (the October 23 OOB, NOT the original Oct 14 patch) tonight, and if you cannot patch tonight, firewall 8530/8531 down to client subnets only and disable the WSUS app-pool. The noisgate remediation SLA of ≤90 days is irrelevant here — you have days, not months, before commodity ransomware crews pivot from opportunistic scans to your fleet. Before end of week: hunt EDR for w3wp.exe (WsusPool) → shell activity back to 2025-10-14, audit SUSDB for rogue update approvals, and rotate the WSUS service account plus computer account credentials on the assumption of pre-patch compromise.

Sources

  1. Microsoft MSRC — CVE-2025-59287
  2. CISA KEV Catalog
  3. NVD entry
  4. Huntress — WSUS exploitation writeup
  5. Eye Security research
  6. Sophos X-Ops
  7. FIRST EPSS
  8. MDSec advisory
Peer Review

What defenders are saying.

Submit a review attribution: handle + country only
0 flags selected · stored anonymously
Validation Results

Crowdsourced verification outputs.

Results submitted by users who ran the verification payload against their environment.