Someone left the vault door unlatched, and now there's a published lockpicking guide circulating on the internet
CVE-2026-63520 is an unsafe .NET type instantiation flaw in SharePoint's Business Connectivity Services (BCS). By uploading a crafted Business Data Catalog Metadata (BDCM) XML file that binds System.Web.UI.LosFormatter.Deserialize as a Finder method, an attacker triggers .NET deserialization of an embedded gadget chain (e.g., TypeConfuseDelegate) and executes arbitrary commands as the SharePoint service account. Affected versions include SharePoint Server Subscription Edition (before 16.0.19725.20522), SharePoint Server 2019 (before 16.0.10417.20198), and SharePoint Enterprise Server 2016 (before 16.0.5565.1001). Patched August 11, 2026 via KB5002893, KB5002894, and KB5002905.
Microsoft rates this CVE at 8.1 HIGH with AC:H because the RCE alone notionally requires prior authentication. That rating is dangerously misleading. In practice, CVE-2026-63520 chains seamlessly with CVE-2026-55040 — a CVSS 9.1 JWT authentication bypass patched a month earlier (July 14, 2026) and already in CISA KEV with confirmed active exploitation. Together they yield a fully unauthenticated, zero-click RCE chain against any internet-reachable SharePoint farm. VulnCheck published a complete weaponized PoC on August 24, and Defused observed in-the-wild chaining the next day. The vendor's HIGH label evaluates this CVE in isolation; reality is that any unpatched SharePoint server reachable from the internet is one HTTP request sequence away from full compromise. noisgate upgrades this to CRITICAL.
4 steps from start to impact.
Target discovery
http.title:"SharePoint" or http.component:"Microsoft SharePoint"). Censys reports ~329,000 SharePoint instances globally, of which ~21,000 on-prem servers expose version strings and ~8,500 are confirmed internet-facing after honeypot deduplication. The attacker fingerprints the version header to confirm the target runs a pre-patch build.- Target SharePoint Server is internet-facing or attacker has network access
- Target has not applied August 2026 cumulative update
- Most large enterprises have migrated to SharePoint Online (M365), which is not affected
- Many on-prem farms sit behind VPN or reverse-proxy without public exposure
shodan search http.title:SharePoint org:<yourorg>.JWT authentication bypass (CVE-2026-55040)
SPJsonWebSecurityTokenHandlerV2: (1) RequireSignedTokens is false, accepting alg:none; (2) the inner actor token's signing key is resolved from an attacker-supplied x5t thumbprint without signature verification; (3) issuer validation accepts SharePoint's own STS certificate; (4) the final signature check only requires a non-empty value. This grants unauthenticated admin-level access to the SharePoint site. Weaponized tool: VulnCheck PoC (Jonathan Peterson, August 24, 2026).- CVE-2026-55040 is unpatched (July 2026 patch missing)
- SharePoint's default JWT handling configuration is intact
- CVE-2026-55040 was patched July 14, 2026 — organizations with a 30-day patch cycle should already be protected
- CISA KEV listing (August 18) mandated federal agency remediation by August 21
alg:none or malformed JWT in SharePoint API requests. IDS signatures for anomalous /vti_bin/ or /_api/ token patterns.BCS metadata upload and external list registration
BusinessDataMetadataCatalog), uploads a crafted BDCM XML file defining a LobSystem of type DotNetAssembly with System.Web.UI.LosFormatter as the class, binding its Deserialize method to a Finder. The attacker then calls the ProcessQuery endpoint to register an external list pointing to the malicious BDC model. Weaponized tool: VulnCheck PoC chain, 4 sequential HTTP requests.- Admin-level SharePoint access (provided by step 2)
- Business Connectivity Services is available (enabled by default in all SharePoint on-prem editions)
- BCS can be disabled via Central Administration if the organization does not use external data connections, but this is almost never done proactively
- The four-request sequence is distinctive and could be flagged by application-layer monitoring
ProcessQuery calls following library creation is possible but requires custom rules.Deserialization triggers arbitrary code execution
DotNetTypeReflector instantiates LosFormatter and invokes Deserialize on the base64-encoded DefaultValue — a TypeConfuseDelegate gadget chain that spawns an arbitrary OS command (e.g., cmd.exe /c <payload>). Code executes as the SharePoint service account, which is typically a domain service account with dbcreator and securityadmin SQL Server roles and often GenericAll on SharePoint-related OUs. Weaponized tool: ysoserial.net TypeConfuseDelegate gadget.- Steps 1-3 completed successfully
- Target has not applied KB5002893/KB5002894/KB5002905 (August 2026 patch)
- EDR on the SharePoint server may catch the child process spawned by w3wp.exe
- Application control (AppLocker/WDAC) could block unexpected binaries launched by the service account
w3wp.exe spawning cmd.exe or powershell.exe. Microsoft Defender for Endpoint has behavioral detections for .NET deserialization abuse. Rapid7 InsightVM authenticated check available since August 12, 2026.DotNetTypeReflector.cs by adding ValidateSafeBcsType allowlist enforcement. This eliminates the RCE vector even if an auth bypass is later discovered. Per noisgate mitigation SLA for CRITICAL: deploy within 3 days.w3wp.exe spawning cmd.exe, powershell.exe, certutil.exe, or other LOLBins. This catches the post-deserialization execution stage. Not a substitute for patching — sophisticated attackers can use in-memory-only gadgets — but raises the bar significantly.- Network-layer firewalling of specific ports does not help — the entire chain runs over standard HTTPS (TCP 443) using legitimate SharePoint API endpoints.
- SharePoint's built-in auditing does not flag the JWT bypass or BCS metadata upload as security events by default; you need custom ULS log correlation to detect the attack sequence.
- WAF generic SQL injection / XSS rules are irrelevant — the payload is a valid SharePoint API call with a crafted JWT and XML body that conforms to the BDCM schema.
- Restricting SharePoint site permissions does not help — CVE-2026-55040 bypasses authentication entirely, so permission assignments are never evaluated.
The supporting signals.
| In-the-wild exploitation | Active. CVE-2026-55040 (chain prerequisite) added to CISA KEV on August 18, 2026. Defused researchers observed full chain exploitation (JWT bypass → BCS RCE) against honeypots on August 25, 2026. Singapore CSA issued alert AL-2026-113 on August 28. KEVIntel documented 12 exploitation attempts from IPs in Hong Kong, Japan, Netherlands, Taiwan, and the US. |
|---|---|
| Proof-of-concept availability | Public and weaponized. Stephen Fewer (Rapid7) published the CVE-2026-55040 PoC on August 11. Jonathan Peterson (VulnCheck) published the complete RCE chain PoC on August 24, 2026. EIP links 2 GitHub repositories with working exploits. The chain requires only 4 HTTP requests. No nuclei template found as of October 2026. |
| EPSS score | 0.00956 (≈96th percentile) — estimated ~1% probability of exploitation in the next 30 days. This score lags behind observed reality; active exploitation is already confirmed. |
| CVSS vector interpretation | CVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:U/C:H/I:H/A:H — Network-attackable, no privileges or interaction needed, but AC:H reflects the chain dependency. In practice, AC:H is a fiction: the chain partner PoC is public and trivial to execute. |
| Affected versions | SharePoint Server Subscription Edition (all builds before 16.0.19725.20522), SharePoint Server 2019 (before 16.0.10417.20198), SharePoint Enterprise Server 2016 (before 16.0.5565.1001). SharePoint Online / M365 is not affected. |
| Fixed versions & KBs | Subscription Edition: KB5002893 (16.0.19725.20522) · 2019: KB5002894 + KB5002896 (16.0.10417.20198) · 2016: KB5002905 + KB5002906 (16.0.5565.1001). Released August 11, 2026. CVE-2026-55040 fix: July 14, 2026. |
| Internet exposure | Censys observes ~329,000 SharePoint instances globally; ~21,000 on-prem expose version strings; ~8,500 internet-facing after honeypot deduplication (Shadowserver/VulnCheck). Geographic concentration in North America and Western Europe. |
| Disclosure timeline | Early March 2026: Stephen Fewer discovers auth bypass during AI-assisted Pwn2Own Berlin prep (120 hrs agent runtime, 96 sessions). Two weeks later: RCE discovered. July 14: CVE-2026-55040 patched. August 11: CVE-2026-63520 patched and disclosed. August 24: full chain PoC published. August 25: in-the-wild chaining observed. |
| Researcher / org | Stephen Fewer, Senior Principal Security Researcher, Rapid7 Labs (discovery, Pwn2Own Berlin 2026 entry). Jonathan Peterson, VulnCheck Initial Access Intelligence (weaponized chain PoC). |
Sources.
- Rapid7 ETR: CVE-2026-63520 SharePoint RCE Disclosure
- VulnCheck: Exploiting SharePoint CVE-2026-55040 and CVE-2026-63520 RCE Chain
- BleepingComputer: Hackers Target SharePoint RCE Chain with PoC Exploit
- CISA KEV Catalog: CVE-2026-55040
- Censys Advisory: CVE-2026-55040 & CVE-2026-63520
- Singapore CSA Alert AL-2026-113
- Microsoft KB5002893: SharePoint Server Subscription Edition August 2026
- SecurityAffairs: SharePoint CVE-2026-55040 Under Attack
Why this verdict
- Chain eliminates AC:H friction entirely. Microsoft's 8.1 score hinges on
AC:H— the assumption that exploitation is complex because authentication is needed. CVE-2026-55040 provides trivial unauthenticated admin access with a 4-weakness JWT bypass, making the combined chain effectivelyAC:L. The PoC is public, weaponized, and requires only 4 HTTP requests. - Active exploitation confirmed with public tooling. The full RCE chain PoC was published by VulnCheck on August 24. Defused observed real-world exploitation the next day. CVE-2026-55040 is in CISA KEV (August 18). 12 exploitation attempts documented from 5 countries. This is not theoretical — adversaries are running this chain today.
- Role multiplier: SharePoint on-prem is a high-value data repository in virtually every deployment. It holds corporate documents, financial data, legal records, HR files, and executive communications. The SharePoint service account typically runs as a domain service account with SQL Server
dbcreator/securityadminroles and often has broad AD permissions. Compromise of a SharePoint farm yields (a) mass data exfiltration of the document store, (b) credential harvesting from the SharePoint content database, and (c) a pivot platform for lateral movement toward domain controllers via the privileged service account. Blast radius: host → tenant → domain. While SharePoint is not in the canonical IdP/DC/hypervisor category, its deployment-role blast radius in a domain-joined enterprise is fleet-scale when the service account is leveraged. This floor-sets the verdict at HIGH even before accounting for active exploitation, and the confirmed in-the-wild activity pushes it to CRITICAL. - 8,500+ servers directly exposed. Unlike many enterprise vulns that require internal network access, thousands of SharePoint farms are directly internet-facing. The attacker needs no prior foothold, no phishing, no VPN compromise — just a URL.
Why not higher?
A 9.4 already reflects the worst realistic outcome. The score is not 10.0 because: (1) the chain requires *both* July and August patches to be missing — organizations that applied the July patch for CVE-2026-55040 are already protected against the unauthenticated vector; (2) SharePoint Online (the majority of the SharePoint installed base) is not affected, limiting the total vulnerable population; (3) the Scope remains Unchanged — the exploit does not inherently break out of the SharePoint service account's privilege boundary without additional post-exploitation.
Why not lower?
Downgrading below CRITICAL would require ignoring confirmed active exploitation, a public weaponized PoC, CISA KEV listing of the chain partner, and 8,500+ directly exposed targets. The chain is unauthenticated, zero-click, and reliable. The blast radius includes mass document exfiltration and potential domain compromise via the service account. Any organization running unpatched on-prem SharePoint with internet exposure is at immediate risk of compromise.
Crowdsourced verification payload.
Run this script on each SharePoint server (front-end and application tier) as a local administrator or farm administrator. Invoke with: powershell -ExecutionPolicy Bypass -File .\Check-CVE-2026-63520.ps1. No external dependencies required. The script checks the installed SharePoint build number against the patched versions for all three product lines.
#Requires -RunAsAdministrator
<#
Check-CVE-2026-63520.ps1
Checks whether the local SharePoint Server is patched against CVE-2026-63520
(Business Connectivity Services unsafe .NET type instantiation)
and CVE-2026-55040 (JWT authentication bypass).
Exit codes:
0 = PATCHED
1 = VULNERABLE
2 = UNKNOWN (SharePoint not detected or version unreadable)
#>
$ErrorActionPreference = 'Stop'
try {
# Load SharePoint snap-in if available
if (-not (Get-PSSnapin -Name Microsoft.SharePoint.PowerShell -ErrorAction SilentlyContinue)) {
Add-PSSnapin Microsoft.SharePoint.PowerShell -ErrorAction SilentlyContinue
}
# Try to get build from SharePoint farm
$farm = $null
try { $farm = [Microsoft.SharePoint.Administration.SPFarm]::Local } catch {}
$buildVersion = $null
if ($farm) {
$buildVersion = $farm.BuildVersion
} else {
# Fallback: read from registry
$regPath = 'HKLM:\SOFTWARE\Microsoft\Shared Tools\Web Server Extensions\16.0'
if (Test-Path $regPath) {
$ver = (Get-ItemProperty $regPath -ErrorAction SilentlyContinue).Version
if ($ver) { $buildVersion = [System.Version]$ver }
}
}
if (-not $buildVersion) {
Write-Host 'UNKNOWN - SharePoint Server not detected on this host.'
exit 2
}
$v = [System.Version]$buildVersion
Write-Host "Detected SharePoint build: $v"
# Patched versions (August 2026 CU - CVE-2026-63520 fix)
# Subscription Edition: 16.0.19725.20522
# Server 2019: 16.0.10417.20198
# Server 2016: 16.0.5565.1001
$vulnerable = $false
$product = 'Unknown'
if ($v.Build -ge 17000) {
# Subscription Edition (builds 17xxx+)
$product = 'SharePoint Server Subscription Edition'
$patchedAug = [System.Version]'16.0.19725.20522'
if ($v -lt $patchedAug) { $vulnerable = $true }
} elseif ($v.Build -ge 10000 -and $v.Build -lt 17000) {
# Server 2019 (builds 10xxx)
$product = 'SharePoint Server 2019'
$patchedAug = [System.Version]'16.0.10417.20198'
if ($v -lt $patchedAug) { $vulnerable = $true }
} elseif ($v.Build -ge 4000 -and $v.Build -lt 10000) {
# Server 2016 (builds 4xxx-5xxx)
$product = 'SharePoint Server 2016'
$patchedAug = [System.Version]'16.0.5565.1001'
if ($v -lt $patchedAug) { $vulnerable = $true }
} else {
Write-Host "UNKNOWN - Unrecognized SharePoint build range: $v"
exit 2
}
Write-Host "Product: $product"
# Also check for CVE-2026-55040 (July 2026 patch) - chain prerequisite
# If July patch is applied, the unauthenticated chain is broken
$julyPatchApplied = $false
$julyCU = switch -Wildcard ($product) {
'*Subscription*' { [System.Version]'16.0.19527.20268' }
'*2019*' { [System.Version]'16.0.10416.20066' }
'*2016*' { [System.Version]'16.0.5563.1000' }
}
if ($v -ge $julyCU) { $julyPatchApplied = $true }
if ($vulnerable) {
Write-Host ''
Write-Host '*** VULNERABLE to CVE-2026-63520 (BCS deserialization RCE) ***' -ForegroundColor Red
if (-not $julyPatchApplied) {
Write-Host '*** ALSO VULNERABLE to CVE-2026-55040 (JWT auth bypass) ***' -ForegroundColor Red
Write-Host '*** FULL UNAUTHENTICATED RCE CHAIN IS EXPLOITABLE ***' -ForegroundColor Red
Write-Host 'PRIORITY: CRITICAL - Patch IMMEDIATELY.' -ForegroundColor Red
} else {
Write-Host 'CVE-2026-55040 (JWT bypass) appears patched - unauthenticated chain is mitigated.' -ForegroundColor Yellow
Write-Host 'Authenticated RCE via BCS remains possible. Apply August CU.' -ForegroundColor Yellow
}
Write-Host 'VULNERABLE'
exit 1
} else {
Write-Host ''
Write-Host 'PATCHED - August 2026 CU applied. CVE-2026-63520 is remediated.' -ForegroundColor Green
Write-Host 'PATCHED'
exit 0
}
} catch {
Write-Host "UNKNOWN - Error during check: $_"
exit 2
}