← Back to Feed CACHED · 2026-07-22 09:22:25 · CACHE_KEY CVE-2026-50522
CVE-2026-50522 · CWE-502 · Disclosed 2026-07-14

Deserialization of untrusted data in Microsoft Office SharePoint

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

It's ToolShell 2.0 — a mailroom that opens every package and runs whatever's inside as SYSTEM

CVE-2026-50522 is a CWE-502 unsafe deserialization flaw in on-premises Microsoft SharePoint Server. An unauthenticated attacker POSTs a crafted __VIEWSTATE (or similar serialized) payload to an exposed SharePoint endpoint; the server rehydrates the object graph and executes an attacker-controlled gadget chain in the w3wp.exe worker process — typically running as the SharePoint farm service account. Affected products: SharePoint Server Subscription Edition, SharePoint Server 2019, and SharePoint Server 2016 Enterprise. SharePoint Online (Microsoft 365) is not affected.

Microsoft's CRITICAL / 9.8 rating is accurate and, if anything, understated by the CVSS math given the operational reality. This is the same class of bug family as the 2025 ToolShell chain (CVE-2025-53770 / -49704 / -49706): unauthenticated, network-reachable, and the compromise persists via stolen ASP.NET machine keys which let attackers forge valid __VIEWSTATE blobs even after the vendor patch is applied. A public PoC dropped from watchTowr on July 20; honeypots caught mass-scan exploitation within hours. Nothing about the friction audit softens this one.

"Unauth RCE on on-prem SharePoint with public PoC, active exploitation, and machine-key theft that survives patching. Patch now."
02 · The Attack Path

5 steps from start to impact.

STEP 01

Discover exposed SharePoint endpoint

Attacker enumerates internet-facing SharePoint via Shodan/Censys/FOFA queries for /_layouts/15/, /SignOut.aspx, or SharePoint-specific server headers. Following the July 20 PoC drop, mass scanners (watchTowr, GreyNoise-tagged nodes) are hitting every /24 on the internet.
Conditions required:
  • SharePoint 2016/2019/SE HTTP(S) endpoint reachable from attacker network
Where this breaks in practice:
  • Well-run enterprises front SharePoint with a reverse proxy / WAF that strips or normalizes ToolPane traffic
  • Some orgs restrict SharePoint to VPN-only
Detection/coverage: Shodan facet product:"Microsoft SharePoint" and Censys services.software.product=SharePoint both track exposed instances; GreyNoise has a dedicated tag for CVE-2026-50522 scan traffic.
STEP 02

Deliver malicious serialized payload

Attacker sends a POST to the vulnerable handler (ToolPane / GetItem / similar) with a crafted __VIEWSTATE or SOAP body containing a ysoserial.net gadget chain (TypeConfuseDelegate, ActivitySurrogateSelector). No auth header, no cookie, no user interaction. The public PoC from watchTowr wraps this in ~40 lines of Python.
Conditions required:
  • Vulnerable SharePoint build (pre-July 2026 CU)
  • Endpoint accepts POST without auth
Where this breaks in practice:
  • ASP.NET ViewState MAC validation blocks the naive path — but attackers use it AFTER step 3 (machine-key theft) to bypass it
  • WAF rules that inspect for TypeConfuseDelegate / serialization markers stop unsophisticated variants
Detection/coverage: Sigma rules for w3wp.exe spawning cmd.exe/powershell.exe; Defender for Endpoint has a SharePoint_ToolShellExploitation alert as of July 21.
STEP 03

Steal ASP.NET machine keys

First-stage payload reads web.config and dumps <machineKey validationKey=... decryptionKey=...> for every app pool. Attackers exfil this immediately. With the keys, they can forge signed/encrypted __VIEWSTATE blobs indefinitely — even against fully-patched servers. This is the persistence mechanic that made ToolShell 2025 so painful and it's back verbatim.
Conditions required:
  • Code execution as SharePoint service account (achieved in step 2)
Where this breaks in practice:
  • Almost none — the service account can read web.config by design
Detection/coverage: File-access telemetry for web.config reads by w3wp.exe outside install/config windows; Sysmon EventID 11 on unexpected writes under /TEMPLATE/LAYOUTS/.
STEP 04

Deploy webshell + lateral movement

Actors observed dropping ASPX webshells under /_layouts/15/ (spinstall0.aspx, debug_dev.aspx), then pivoting via the SharePoint farm account's Kerberos ticket to SQL, file shares, and — because the farm account is often over-privileged — to Active Directory. Cobalt Strike and open-source C2 (Sliver, Havoc) beacons follow.
Conditions required:
  • RCE from step 2
  • Farm account with typical over-provisioned rights
Where this breaks in practice:
  • Least-privileged farm accounts (rare in the wild) shrink lateral reach
  • Tiered-admin models block DA escalation
Detection/coverage: New .aspx files under LAYOUTS via FIM; unusual Kerberos TGS requests from the SharePoint server; EDR beacon detections.
STEP 05

Persist via forged ViewState post-patch

Even after IT applies the July 2026 patch, the stolen machine key lets attackers re-enter via legitimately signed ViewState payloads. Rotation of machineKey is NOT part of the vendor patch and must be done manually per farm. Multiple 2025 ToolShell victims re-owned within weeks precisely because they patched but didn't rotate.
Conditions required:
  • Machine keys exfiltrated in step 3
  • Endpoint still reachable
Where this breaks in practice:
  • Manual machineKey rotation + IIS reset closes this door — but requires a documented runbook most orgs lack
Detection/coverage: Correlate any authenticated-looking ViewState traffic to source IPs not previously seen; audit machineKey change history.
03 · Intelligence Metadata

The supporting signals.

In-the-wild statusActive exploitation confirmed — honeypots (watchTowr, GreyNoise) captured mass exploitation within hours of the July 20 PoC drop. Machine-key theft campaigns observed.
Proof-of-conceptPublic PoC by watchTowr Labs on GitHub (July 20, 2026); Metasploit module in PR; Nuclei template CVE-2026-50522.yaml merged.
EPSS0.20346 (~20% probability of exploitation in next 30 days) — expect this to spike past 0.9 within a week given active exploitation.
KEV statusNot KEV-listed as of 2026-07-22, but CISA typically adds SharePoint unauth RCE within 48-72h of active-exploit evidence — expect listing this week.
CVSS vectorCVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H = network, no auth, no UI, full CIA impact. Vendor score matches reality.
Affected versionsSharePoint Server Subscription Edition, 2019, and 2016 Enterprise. SharePoint Online (M365) is *not* affected.
Fixed versionsJuly 2026 Cumulative Update — KB pending confirmation per SKU. Patching alone is insufficient; machine-key rotation required.
Exposure populationShodan shows ~7,800 internet-exposed on-prem SharePoint instances as of July 22; Censys shows ~9,100. Most large enterprises still run at least one internal farm.
Disclosure2026-07-14 — Microsoft Patch Tuesday advisory. PoC public 2026-07-20.
ReporterCredited to researchers at Viettel Cyber Security and watchTowr Labs; follow-up analysis from Akamai and Rapid7.
04 · The Call

noisgate verdict.

Final Verdict
= UNCHANGED to CRITICAL (9.8/10)

The single most decisive factor is role multiplier plus active exploitation of an unauthenticated network vector: SharePoint is canonically a document-and-identity hub holding credentials, machine keys, and privileged farm-account Kerberos tickets, and the chain ends in domain-adjacent code execution with post-patch persistence via stolen machineKey. A public PoC dropped six days after disclosure and honeypots caught mass exploitation the same day, so both the friction floor and the deployment-role floor sit at CRITICAL with no downward pressure available.

HIGH vulnerability class and exploitability
HIGH active exploitation evidence
MEDIUM exact affected build ranges pending KB confirmation

Why this verdict

  • Unauthenticated, network-reachable RCE — no credentials, no user interaction, one HTTP POST. AV:N/AC:L/PR:N/UI:N holds up under scrutiny.
  • Public PoC + active exploitation — watchTowr's PoC is being weaponized in the wild as of July 20; EPSS will catch up but the operational signal is already here.
  • Role multiplier: SharePoint as identity-adjacent tier — the chain lands as a farm service account that typically holds SQL rights and Kerberos delegation paths; blast radius routinely reaches AD. This is the high-value-role scenario and it represents the *typical* deployment, not the edge case. Floor = CRITICAL.
  • Post-patch persistence via machineKey theft — patching alone does not evict the attacker. Historical ToolShell 2025 data shows re-compromise within weeks when keys weren't rotated.
  • ~8-9k internet-exposed instances across Shodan/Censys; internal-only farms are still reachable to any attacker with a phishing foothold.

Why not higher?

There is no higher tier than CRITICAL / 9.8 in CVSS v3.1. If a 10.0 were reachable, this would qualify only if Scope:Changed applied — it does not, because compromise stays within the SharePoint security authority initially. The score is already at the ceiling.

Why not lower?

Downgrading would require narrow affected versions (it's not — three major SKUs), auth requirement (there isn't one), or low exposure (there are thousands of exposed instances plus universal internal reachability). None of the standard friction levers apply, and the deployment-role floor is CRITICAL by definition.

05 · Compensating Control

What to do — in priority order.

  1. Apply July 2026 SharePoint CU immediately — Per the noisgate mitigation SLA for CRITICAL + active exploitation, patch within hours, not days. Deploy the July 14, 2026 CU per SKU (SE / 2019 / 2016).
  2. Rotate ASP.NET machineKey on every farm, then IISRESET — The patch does not invalidate keys already stolen. Use Update-SPMachineKey (SE/2019) or manual <machineKey> regeneration in web.config for 2016. Do this within the same 3-day CRITICAL mitigation window even if you already patched.
  3. Block SharePoint from the public internet at the edge — Front with Entra Application Proxy, Cloudflare Access, or a reverse proxy enforcing pre-auth. Do this within 24 hours if patching lags.
  4. Enable AMSI integration for SharePoint — SharePoint SE/2019 supports AMSI; when enabled, Defender/EDR inspects deserialization payloads inline and blocks known ysoserial.net gadgets. Set-SPAntivirusScanForRepresentedInvocation-equivalent config.
  5. Hunt for indicators of prior compromise — Search for spinstall0.aspx, debug_dev.aspx, unexpected files under /_layouts/15/, w3wp.exe spawning cmd/powershell, and outbound egress from the SharePoint host to non-corporate destinations. If pre-patch exposure existed, assume compromise until proven otherwise.
  6. Constrain the SharePoint farm service account — Remove Domain Admin equivalence; enforce protected-users group, resource-based constrained delegation only. Limits the blast radius even if the next SharePoint 0-day lands.
What doesn't work
  • Vendor patch alone — does not rotate machine keys; adversaries who exfiltrated keys during the exposure window retain a valid re-entry token.
  • WAF signature blocking on TypeConfuseDelegate — trivially bypassed by alternate ysoserial.net gadgets; buys hours, not days.
  • MFA on SharePoint — the vuln bypasses authentication entirely; MFA never enters the request path.
  • Network segmentation between SharePoint and users — users still need to reach it, and attackers pivot from a single phished endpoint. Doesn't stop the exploit.
06 · Verification

Crowdsourced verification payload.

Run this on the SharePoint server itself in an elevated PowerShell console (as farm admin or local admin). Invocation: .\Check-CVE-2026-50522.ps1. Reports VULNERABLE / PATCHED / UNKNOWN based on SharePoint product build vs the July 2026 CU baselines.

noisgate-verify.ps1
POWERSHELLREAD-ONLYSAFE
#Requires -Version 5.1
#Requires -RunAsAdministrator
# Check-CVE-2026-50522.ps1
# Detects SharePoint 2016/2019/SE patch level vs July 2026 CU

$ErrorActionPreference = 'Stop'

# July 2026 CU minimum patched builds (verify against current MS advisory)
$patchedBuilds = @{
    '16.0.5xxx' = [Version]'16.0.17928.20000' # SharePoint SE
    '16.0.10'   = [Version]'16.0.10417.20050' # SharePoint 2019
    '16.0.4'    = [Version]'16.0.5495.1000'   # SharePoint 2016
}

try {
    Add-PSSnapin Microsoft.SharePoint.PowerShell -ErrorAction Stop
} catch {
    Write-Output 'UNKNOWN: SharePoint snap-in unavailable — is this a SharePoint server?'
    exit 2
}

$farm = Get-SPFarm
$build = $farm.BuildVersion
Write-Output "Detected SharePoint build: $build"

$sku = switch -Regex ($build.ToString()) {
    '^16\.0\.179' { 'SE' ; break }
    '^16\.0\.104' { '2019' ; break }
    '^16\.0\.5[0-4]' { '2016' ; break }
    default { 'UNKNOWN' }
}

if ($sku -eq 'UNKNOWN') {
    Write-Output 'UNKNOWN: could not map build to SKU'
    exit 2
}

$minPatched = switch ($sku) {
    'SE'   { $patchedBuilds['16.0.5xxx'] }
    '2019' { $patchedBuilds['16.0.10'] }
    '2016' { $patchedBuilds['16.0.4'] }
}

if ([Version]$build -ge $minPatched) {
    Write-Output "PATCHED: SharePoint $sku build $build meets July 2026 CU baseline $minPatched"
    Write-Output 'REMINDER: rotate machineKey and hunt for prior compromise regardless of patch state.'
    exit 0
} else {
    Write-Output "VULNERABLE: SharePoint $sku build $build is below required $minPatched — apply July 2026 CU immediately"
    exit 1
}
07 · Bottom Line

If you remember one thing.

TL;DR
Treat this as an active incident, not a patching ticket. By end of day Monday: (1) inventory every on-prem SharePoint farm, (2) apply the July 2026 CU per the noisgate mitigation SLA override for KEV-adjacent active exploitation — *patch/mitigate within hours*, not the standard CRITICAL 3-day window; (3) rotate all ASP.NET machineKey values on every farm and IISRESET — this is the step most orgs skipped in ToolShell 2025 and got re-owned for it; (4) block external SharePoint exposure at the edge until patched; (5) hunt for spinstall0.aspx and w3wp.exe spawning shell processes back to the disclosure date. The noisgate remediation SLA for CRITICAL is ≤90 days for full baseline compliance across the fleet — but for this one, if you're not done within 72 hours you should assume compromise on any exposed farm.

Sources

  1. Microsoft MSRC advisory (via Tenable)
  2. The Hacker News — active exploitation after PoC
  3. SecurityAffairs — public PoC triggers exploitation
  4. SentinelOne vulnerability entry
  5. IONIX threat center writeup
  6. BleepingComputer — machine-key theft campaign
  7. Cybersecurity Dive — SharePoint under attack
  8. Akamai research — RCE detections & mitigations
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.