Someone left the barn door open last month, and now someone else found the horses inside
CVE-2026-63520 is an unsafe .NET type instantiation flaw in SharePoint Server's Business Connectivity Services (BCS). By itself, this bug requires an authenticated session to trigger — but when chained with CVE-2026-55040, a JWT authentication bypass patched in July 2026, an unauthenticated attacker can forge a valid token, impersonate a site admin, and then invoke the BCS gadget chain to achieve remote code execution as the SharePoint farm service account. All supported on-premises versions are affected: SharePoint Server 2016 (≤ 16.0.5565.1001), SharePoint Server 2019 (≤ 16.0.10417.20198), and SharePoint Server Subscription Edition (≤ 16.0.19725.20522). Microsoft Project Server and Office Web Apps Server are also affected.
Microsoft rates this CVE individually as HIGH / 8.1 with AC:H — and that's *roughly fair* if you evaluate the bug in isolation. The complication is the chain: combined with the July auth-bypass, the effective impact is unauthenticated RCE at farm-service-account privilege. However, the attack complexity is genuinely high (the .NET gadget chain is non-trivial to weaponize), and the first link in the chain (CVE-2026-55040) was patched a full month ago. Organizations that applied July Patch Tuesday are already immune to the full chain. For the subset that didn't — and Shadowserver counts ~10,000 internet-exposed SharePoint servers, many historically slow to patch — the risk is severe. We keep the severity at HIGH but nudge the score to 7.5 to reflect the dependency on a month-old unpatched prerequisite and the AC:H friction.
5 steps from start to impact.
Identify exposed SharePoint Server
/_layouts/15/ paths and SharePoint-specific HTTP headers (MicrosoftSharePointTeamServices). Shadowserver tracks approximately 10,000 such servers globally. The attacker confirms the target is running a vulnerable on-prem build, not SharePoint Online.- Target runs on-premises SharePoint Server 2016/2019/SE
- SharePoint web front-end is reachable over the internet or from the attacker's network position
- Most large enterprises have migrated to SharePoint Online, which is not affected
- Censys counts only ~1,500 distinct on-prem hosts by IP; Shadowserver's 10K figure includes virtual hosts
/_layouts/15/ and /_vti_bin/Exploit CVE-2026-55040 (JWT auth bypass)
sfewer-r7/CVE-2026-55040) since the July disclosure.- Target has NOT applied the July 2026 Patch Tuesday update (KB for CVE-2026-55040)
- SharePoint's claims-based authentication is in use (default)
- CVE-2026-55040 was patched a full month before CVE-2026-63520 was disclosed — orgs with a ≤30-day patch cadence are already protected
- CISA and multiple vendors issued urgent advisories in July driving accelerated patching
Trigger BCS gadget chain (CVE-2026-63520)
- Business Connectivity Services feature is available on the target (installed by default, though not always actively configured)
- CVE-2026-63520 is unpatched (August 2026 KB not applied)
- AC:H — the .NET gadget chain is non-trivial; no public PoC exists yet (30-day embargo until ~September 10, 2026)
- BCS is a legacy feature that many SharePoint deployments don't actively use, though the attack surface exists regardless of active use
Code execution as farm service account
DOMAIN\sp_farm or similar). This account holds dbcreator and securityadmin SQL Server roles plus db_owner on all SharePoint databases. The attacker now has a foothold with significant domain privileges.- Successful exploitation of steps 2 and 3
- Well-configured environments run farm accounts with least-privilege Group Managed Service Accounts (gMSA), limiting lateral movement
- Network segmentation between SharePoint WFE and SQL tiers can slow pivot
Pivot to domain compromise
machineKey for persistent access (survives patching), dumps SQL databases for credentials and sensitive content, and uses the account's AD membership to perform lateral movement. Resecurity's Operation FarmKey demonstrated this exact path from SharePoint WFE to domain controller via Kerberoasting or direct LDAP access from the farm account's elevated posture.- Farm service account is a domain account with non-trivial AD privileges (common default)
- Network path exists from SharePoint tier to domain controller
- Mature environments with tiered admin models, PAW workstations, and credential guard significantly slow this phase
- Real-time EDR on the SharePoint server may catch post-exploitation tooling
web.configThe supporting signals.
| In-the-Wild Exploitation | No confirmed exploitation as of 2026-08-13. Microsoft rates exploitability as "Exploitation More Likely". No KEV listing. The related CVE-2026-55040 auth bypass has a public PoC and was used in July 2026 SharePoint campaigns (Resecurity Operation FarmKey), but those used *different* RCE bugs (CVE-2026-45659, CVE-2026-32201). |
|---|---|
| Proof of Concept | No public PoC for CVE-2026-63520. Rapid7 (researcher: Spencer McIntyre / sfewer-r7) agreed to a 30-day embargo on technical details and PoC, expected ~September 10, 2026. PoC for the prerequisite CVE-2026-55040 is public on GitHub. |
| EPSS | 0.01122 (≈1.1%) — low probability of exploitation in the next 30 days, consistent with the PoC embargo and AC:H complexity |
| KEV Status | Not listed on CISA KEV as of 2026-08-13 |
| CVSS Vector | CVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:U/C:H/I:H/A:H — network-accessible, high complexity, no privileges required (when chained), full CIA impact. The AC:H is the key limiter and is accurate for the gadget chain difficulty. |
| Affected Versions | SharePoint Server Subscription Edition (all builds before 16.0.19725.20522), 2019 (before 16.0.10417.20198), 2016 (before 16.0.5565.1001). Also affects certain Microsoft Project Server and Office Web Apps Server versions. SharePoint Online is NOT affected. |
| Fixed Versions | SE: 16.0.19725.20522 (KB5002893) · 2019: 16.0.10417.20198 (KB5002894, KB5002896) · 2016: 16.0.5565.1001 (KB5002905, KB5002906) — all via August 2026 Patch Tuesday |
| Exposure Data | Censys: ~1,500 on-prem SharePoint hosts by IP. Shadowserver: ~10,000 internet-exposed SharePoint servers. Petri reports 1,300+ remain unpatched against prior July 2026 SharePoint CVEs — a proxy for likely CVE-2026-55040 exposure. |
| Disclosure Timeline | CVE-2026-55040 (auth bypass): patched July 2026 Patch Tuesday. CVE-2026-63520 (RCE): disclosed August 11, 2026 by Rapid7 and Microsoft. PoC embargo expires ~September 10, 2026. |
| Reporting Researcher | Rapid7 Labs (Spencer McIntyre / sfewer-r7) — discovered via AI-assisted zero-day research program targeting SharePoint |
noisgate verdict.
The single most decisive factor is the dependency on a month-old prerequisite vulnerability (CVE-2026-55040) that was already patched in July — orgs with even a 30-day patch cadence are immune to the full unauthenticated chain, substantially narrowing the exploitable population. The role multiplier (SharePoint farm account → domain compromise) sets a HIGH floor that prevents further downgrade despite the AC:H complexity and absent PoC.
Why this verdict
- Chain dependency narrows population: The full unauthenticated RCE chain requires CVE-2026-55040 to be unpatched. That bug was fixed in July 2026 — one full patch cycle ago. Organizations with ≤30-day SLAs have already closed this door, eliminating the chain for a significant fraction of the installed base.
- AC:H is genuine friction: Microsoft's own CVSS rates attack complexity as High. The .NET BCS gadget chain requires specific type instantiation sequences. No public PoC exists, and Rapid7's 30-day embargo pushes weaponization to mid-September at earliest. This is not a spray-and-pray vulnerability.
- Limited internet exposure: On-premises SharePoint is a shrinking footprint. Censys counts ~1,500 distinct hosts; Shadowserver tracks ~10,000 including virtual hosts. Most enterprise SharePoint has migrated to SharePoint Online (not affected). The reachable attack surface is small relative to the total SharePoint installed base.
- Role multiplier — SharePoint farm account is a domain-compromise pivot: The farm service account typically holds
dbcreatorandsecurityadminSQL roles and is a domain account. Resecurity's Operation FarmKey demonstrated the full path from SharePoint WFE → SQL → AD → domain controller. This blast radius is domain-scale, which sets the severity floor at HIGH and prevents downgrade to MEDIUM despite the friction factors. - No exploitation, no KEV, low EPSS: As of assessment date, there is zero confirmed in-the-wild exploitation, no KEV listing, and EPSS is 1.1%. The threat is latent, not active — this is a 30-day window to patch before the PoC embargo lifts.
Why not higher?
The chain requires two unpatched vulnerabilities, one of which was fixed a month ago — this is a compounding friction point that meaningfully reduces the exploitable population. There is no public PoC and no active exploitation. The AC:H complexity is genuine, not artificially inflated. Upgrading to CRITICAL would only be warranted if exploitation were active or the PoC were public.
Why not lower?
SharePoint Server is canonically a high-value-role component — the farm service account's SQL and AD privileges create a documented path to domain compromise (Operation FarmKey). This blast radius sets a HIGH floor per role-multiplier rules. Additionally, once the PoC embargo lifts (~September 10), weaponization is expected to be rapid given the existing public PoC for the auth bypass half of the chain. The 1,300+ servers still unpatched against July SharePoint CVEs represent a confirmed population that is likely vulnerable to the full chain.
What to do — in priority order.
- Verify CVE-2026-55040 (July 2026) patch is applied immediately — The full unauthenticated chain requires the July auth bypass to be unpatched. Confirming KB deployment for CVE-2026-55040 eliminates the most dangerous attack path *right now*, even before the August patch is applied. This is your highest-ROI action — deploy within the noisgate HIGH mitigation SLA of 30 days, though given the chain severity, prioritize within 7 days.
- Restrict internet exposure of SharePoint Server — Place on-premises SharePoint behind a VPN, reverse proxy with pre-authentication (Azure AD App Proxy, Cloudflare Access), or remove direct internet exposure entirely. This eliminates the unauthenticated remote attack vector. Deploy within 30 days per noisgate HIGH mitigation SLA.
- Disable or restrict Business Connectivity Services — If BCS is not actively used (common in many deployments), disable the BCS service application in Central Administration. This removes the specific attack surface for CVE-2026-63520's gadget chain. Test in non-production first — BCS removal can break external data connections.
- Rotate the ASP.NET machineKey on all WFE servers — Even after patching, a previously compromised machineKey grants persistent access. Regenerate machineKeys in
web.configacross all SharePoint web front-ends and redistribute. This is especially critical if you suspect any prior SharePoint compromise in July 2026. - Audit farm service account privileges — Ensure the farm account uses a Group Managed Service Account (gMSA) with minimal AD privileges. Remove unnecessary group memberships. This limits blast radius if the account is compromised. Review SQL role assignments —
dbcreatorandsecurityadminshould be scoped narrowly.
- SharePoint Online migration as a control for this CVE — while SharePoint Online is not affected, migration is a multi-month project, not a compensating control for an active vulnerability window
- WAF rules alone — the BCS gadget chain payload is delivered over legitimate SharePoint API endpoints after authentication; generic WAF signatures are unlikely to detect the .NET deserialization payload without SharePoint-specific rule sets
- Disabling anonymous access — CVE-2026-55040 bypasses authentication entirely via JWT forgery, so toggling anonymous access settings has no effect on the chain
Crowdsourced verification payload.
Run this script on each SharePoint server (WFE and application tier) as a local administrator. Execute: powershell -ExecutionPolicy Bypass -File .\Check-CVE202663520.ps1. The script checks installed SharePoint build numbers against the patched versions for both CVE-2026-63520 (August) and CVE-2026-55040 (July).
#Requires -RunAsAdministrator
# Check-CVE202663520.ps1
# Checks SharePoint Server patch status for CVE-2026-63520 and CVE-2026-55040
# Exit codes: 0 = PATCHED, 1 = VULNERABLE, 2 = UNKNOWN
try {
Add-PSSnapin Microsoft.SharePoint.PowerShell -ErrorAction Stop
} catch {
Write-Host "UNKNOWN - SharePoint PowerShell snap-in not available. Is this a SharePoint server?"
exit 2
}
try {
$farm = Get-SPFarm -ErrorAction Stop
$build = $farm.BuildVersion
$version = "$($build.Major).$($build.Minor).$($build.Build).$($build.Revision)"
Write-Host "Detected SharePoint build: $version"
Write-Host "Major: $($build.Major) Minor: $($build.Minor) Build: $($build.Build) Rev: $($build.Revision)"
# Patched builds for CVE-2026-63520 (August 2026 Patch Tuesday)
$vulnerable = $false
$chainVulnerable = $false
if ($build.Major -eq 16) {
if ($build.Minor -ge 19000) {
# Subscription Edition
if ($build.Build -lt 19725 -or ($build.Build -eq 19725 -and $build.Revision -lt 20522)) {
$vulnerable = $true
Write-Host "SharePoint Server Subscription Edition - NOT patched for CVE-2026-63520"
} else {
Write-Host "SharePoint Server Subscription Edition - Patched for CVE-2026-63520"
}
} elseif ($build.Minor -ge 10000) {
# SharePoint 2019
if ($build.Build -lt 10417 -or ($build.Build -eq 10417 -and $build.Revision -lt 20198)) {
$vulnerable = $true
Write-Host "SharePoint Server 2019 - NOT patched for CVE-2026-63520"
} else {
Write-Host "SharePoint Server 2019 - Patched for CVE-2026-63520"
}
} elseif ($build.Minor -ge 4000) {
# SharePoint 2016
if ($build.Build -lt 5565 -or ($build.Build -eq 5565 -and $build.Revision -lt 1001)) {
$vulnerable = $true
Write-Host "SharePoint Server 2016 - NOT patched for CVE-2026-63520"
} else {
Write-Host "SharePoint Server 2016 - Patched for CVE-2026-63520"
}
} else {
Write-Host "UNKNOWN - Unrecognized SharePoint 16.x build"
exit 2
}
} else {
Write-Host "UNKNOWN - Unexpected major version: $($build.Major)"
exit 2
}
# Check BCS service status
$bcs = Get-SPServiceInstance | Where-Object { $_.TypeName -like "*Business Data*" -or $_.TypeName -like "*Business Connectivity*" }
if ($bcs) {
$bcsRunning = $bcs | Where-Object { $_.Status -eq "Online" }
if ($bcsRunning) {
Write-Host "WARNING: Business Connectivity Services is RUNNING (attack surface present)"
} else {
Write-Host "INFO: Business Connectivity Services is installed but NOT running (reduced attack surface)"
}
} else {
Write-Host "INFO: Business Connectivity Services not found (attack surface absent)"
}
if ($vulnerable) {
Write-Host ""
Write-Host "VULNERABLE - CVE-2026-63520 patch not applied. Apply August 2026 Patch Tuesday updates."
exit 1
} else {
Write-Host ""
Write-Host "PATCHED - CVE-2026-63520 fix is applied."
exit 0
}
} catch {
Write-Host "UNKNOWN - Error querying SharePoint farm: $($_.Exception.Message)"
exit 2
}If you remember one thing.
Sources
- Rapid7 — CVE-2026-63520 SharePoint RCE Disclosure
- Rapid7 — CVE-2026-55040 SharePoint JWT Auth Bypass
- Resecurity — From Web Request to Domain Compromise: July 2026 SharePoint Attacks
- Petri — Over 1,300 Internet-Exposed SharePoint Servers Remain Vulnerable
- Censys — SharePoint Server Vulnerability Advisory
- CISA — SharePoint Hardening Advisory
- The Hacker News — AI-Assisted SharePoint Exploit Chain
- Help Net Security — August 2026 Patch Tuesday
What defenders are saying.
Crowdsourced verification outputs.
Results submitted by users who ran the verification payload against their environment.