← Back to Feed CACHED · 2026-10-26 05:59:08 · CACHE_KEY CVE-2026-58644
CVE-2026-58644 · CWE-502 · Disclosed 2026-07-14

Microsoft SharePoint Server pre-auth BinaryFormatter deserialization remote code execution

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

Someone left the vault door open and the combination taped to the frame

CVE-2026-58644 is an unauthenticated deserialization-of-untrusted-data flaw in on-premises Microsoft SharePoint Server. The vulnerable code path accepts crafted serialized .NET objects (via BinaryFormatter) without type restrictions and deserializes them inside the w3wp.exe worker process. An attacker needs zero credentials — just network reachability to a SharePoint endpoint such as /_trust/default.aspx or /_layouts/15/ToolPane.aspx. Successful exploitation delivers arbitrary code execution as the SharePoint application pool identity, which typically runs with elevated SQL Server roles (dbcreator, securityadmin, db_owner). Affected versions: SharePoint Server 2016 (builds before 16.0.5556.1005), SharePoint Server 2019 (builds before 16.0.10417.20153), and SharePoint Server Subscription Edition (builds before 16.0.19725.20384). SharePoint Online / Microsoft 365 is not affected.

Microsoft rated this CVSS 9.8 CRITICAL and, for once, the vendor label is exactly right. The attack is unauthenticated, low-complexity, requires no user interaction, and yields full RCE. It was exploited as a zero-day *before* the July 14 patch shipped. CISA added it to KEV two days later with a three-day federal remediation deadline — the shortest window they assign. Resecurity documented a full attack chain from a single HTTP POST to domain-wide compromise (dubbed *Operation FarmKey*), confirming this is not theoretical. The 9.8 is earned.

"Pre-auth RCE in SharePoint, zero-day exploited, direct path to domain compromise. Patch now."
02 · The Attack Path

6 steps from start to impact.

STEP 01

Target discovery via internet scanning

Attacker queries Shodan, Censys, or FOFA for SharePoint-specific HTTP headers (MicrosoftSharePointTeamServices) and /_layouts/15/ paths. Censys identified approximately 1,500 internet-exposed on-prem SharePoint hosts globally. Certificate transparency logs and DNS enumeration supplement automated scanning.
Conditions required:
  • Target SharePoint Server is reachable over the network (internet-facing or via VPN/proxy)
Where this breaks in practice:
  • Only ~1,500 hosts are directly internet-facing per Censys; many more sit behind VPNs, reverse proxies, or partner portals that still provide network reachability
Detection/coverage: Shodan/Censys/FOFA queries for your org's SharePoint banners; GreyNoise tags for SharePoint reconnaissance
STEP 02

Craft deserialization payload with ysoserial.net

The attacker generates a malicious BinaryFormatter serialized payload using ysoserial.net gadget chains. The payload is embedded in a crafted HTTP POST body — either as a SecurityContextToken Cookie element (base64 + DEFLATE compressed) targeting /_trust/default.aspx, or as a ToolPane parameter targeting /_layouts/15/ToolPane.aspx?DisplayMode=Edit. No authentication tokens are required in the request.
Conditions required:
  • Knowledge of the vulnerable endpoint (publicly documented)
  • Access to ysoserial.net (open-source, trivially obtained)
Where this breaks in practice:
  • The exact gadget chain details were not publicly documented at disclosure, but 7 GitHub PoC repositories (including WismanSec/sharepoint-2026-poc) now exist
Detection/coverage: AMSI signatures: Exploit:Script/SuspSignoutReqBody.A (request body scanning), Exploit:Script/ToolPaneAuthBypass.A (request header scanning)
STEP 03

Code execution as SharePoint app pool identity

The w3wp.exe process deserializes the payload without type restriction, triggering the gadget chain and executing attacker-controlled code. Execution runs under the SharePoint application pool identity, which typically holds IIS_IUSRS membership and farm-level SQL permissions. The attacker now has code execution on the SharePoint server.
Conditions required:
  • Target runs a vulnerable SharePoint build
  • AMSI integration is disabled or not scanning request bodies (common in older deployments)
Where this breaks in practice:
  • AMSI integration, if properly enabled and updated, can detect known gadget chains in the request body before deserialization completes
  • Microsoft Defender detects known ysoserial.net patterns
Detection/coverage: Monitor for w3wp.exe spawning cmd.exe, powershell.exe, or csc.exe; Sysmon Event ID 1 with w3wp.exe parent
STEP 04

Webshell deployment and persistence

Attacker drops ASPX webshells into SharePoint layout directories (e.g., C:\Program Files\Common Files\Microsoft Shared\Web Server Extensions\16\TEMPLATE\LAYOUTS\spinstall0.aspx). These survive application pool recycles and provide persistent remote access. Resecurity documented filenames including spinstall0.aspx and info3.aspx.
Conditions required:
  • Write access to the SharePoint LAYOUTS directory (granted by app pool identity)
Where this breaks in practice:
  • File integrity monitoring on LAYOUTS directories would catch new .aspx files
  • EDR agents monitoring w3wp.exe file-write activity
Detection/coverage: Monitor for new .aspx files under TEMPLATE\LAYOUTS; IIS Event ID 29 (new module added) in Microsoft-IIS-Configuration/Operational
STEP 05

MachineKey theft and ViewState forgery

The attacker uses .NET reflection to extract validationKey and decryptionKey from the IIS MachineKeySection configuration. With these keys, they can forge arbitrary ViewState payloads that are accepted by every server in the SharePoint farm, enabling persistent authenticated access and further deserialization attacks across the entire farm without re-exploiting the original vulnerability.
Conditions required:
  • Code execution on a SharePoint server (achieved in step 3)
Where this breaks in practice:
  • Farm-wide key rotation is the only remediation — patching alone does not invalidate stolen keys
Detection/coverage: Audit access to applicationHost.config and web.config; detect PowerShell reflection calls to MachineKeySection
STEP 06

Lateral movement to Active Directory and domain compromise

The SharePoint farm service account typically holds SQL Server roles including dbcreator, securityadmin, and db_owner. The attacker pivots from SQL to extract AD credentials, Kerberoast service accounts, or abuse trust relationships. Resecurity's *Operation FarmKey* case study documented progression from a single web request to full domain compromise via this path.
Conditions required:
  • SharePoint farm service account has SQL admin-equivalent roles (default in most deployments)
  • SQL Server is reachable from the SharePoint host (standard architecture)
Where this breaks in practice:
  • Network microsegmentation between SharePoint and SQL could limit lateral movement
  • Credential tiering that uses a low-privilege farm account (rare in practice)
Detection/coverage: SQL audit logs for unexpected queries from the farm service account; AD authentication anomalies; Kerberoasting detection via Event ID 4769 with RC4 encryption
03 · Compensating Control

1
CRITICAL 9.8→IGNORE 0.0
SEVERITY REDUCED
Apply July 14 security updates immediately — Install KB5002891 (Subscription Edition), KB5002883/KB5002885 (2019), or KB5002891/KB5002892 (2016). This is the only complete remediation. Per the noisgate mitigation SLA for CRITICAL, deploy within 3 days. Given active exploitation with KEV listing, patch immediately — within hours, not days.
2
CRITICAL 9.8→HIGH 7.5
SEVERITY REDUCED
Enable AMSI integration on all SharePoint web applications — AMSI allows Microsoft Defender to inspect request bodies before deserialization occurs. This catches known ysoserial.net gadget chains. Run Get-SPWebApplication | ForEach-Object { $_.AllowAMSIIntegration = $true; $_.Update() } in SharePoint Management Shell. Deploy within hours alongside patching. This is a defense-in-depth control; it does not replace patching.
3
CRITICAL 9.8→HIGH 7.0
SEVERITY REDUCED
Block external access to SharePoint endpoints via WAF or firewall — Deny inbound traffic to /_trust/default.aspx, /_layouts/15/ToolPane.aspx, and other deserialization-prone endpoints from untrusted networks. If SharePoint must be internet-facing, restrict to known IP ranges. This eliminates the unauthenticated-remote attack vector for external attackers but does not protect against internal threat actors or post-VPN exploitation.
4
CRITICAL 9.8→HIGH 8.0
SEVERITY REDUCED
Rotate ASP.NET machineKeys across the farm — If exploitation may have already occurred, stolen machineKeys allow persistent access even after patching. Generate new validationKey and decryptionKey values and deploy them across all farm servers. This invalidates any forged ViewState payloads. Do this as part of incident response for any farm suspected of compromise.
5
CRITICAL 9.8→CRITICAL 9.0
Monitor for post-exploitation indicators — Deploy detection rules for: new .aspx files under TEMPLATE\LAYOUTS directories, w3wp.exe spawning cmd.exe/powershell.exe/csc.exe, IIS Event ID 29 (new module), and anomalous SQL queries from the farm service account. This does not prevent exploitation but enables rapid detection and containment.
What doesn't work
  • Network-level IDS/IPS signature matching — the serialized payload can be DEFLATE-compressed and base64-encoded, making static signature matching unreliable without AMSI-level inspection inside the application.
  • Restricting SharePoint to authenticated users only — CVE-2026-58644 is pre-auth; the deserialization occurs before any authentication check. Authentication boundaries do not help.
  • SharePoint Online migration as an immediate control — while SharePoint Online is not affected, migrating an on-prem farm is a multi-month project, not an emergency mitigation. It is the right long-term strategy but not actionable within the 3-day SLA.
  • TLS inspection alone — the payload is valid HTTP POST content; TLS termination and inspection will see the traffic but standard DLP/inspection rules will not flag serialized .NET objects without custom rules.
04 · Intelligence Metadata

The supporting signals.

In-the-Wild ExploitationConfirmed. Exploited as a zero-day before the July 14, 2026 patch. CISA KEV added July 16, 2026. Resecurity documented full attack chains (*Operation FarmKey*) from web request to domain compromise.
CISA KEV StatusListed — added 2026-07-16, federal remediation deadline 2026-07-19 (3 days). CISA alert
EPSS Score0.15873 — top ~16% of all CVEs by exploitation probability, indicating elevated real-world risk
Proof-of-Concept7 public GitHub repositories including WismanSec/sharepoint-2026-poc. Exploit uses ysoserial.net gadget chains targeting BinaryFormatter deserialization. Functional weaponized exploit code is available.
CVSS VectorCVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H — network-reachable, no auth, no user interaction, full CIA impact. This is the maximum-severity profile for a server-side vulnerability.
Affected VersionsSharePoint Server 2016 (< 16.0.5556.1005), SharePoint Server 2019 (< 16.0.10417.20153), SharePoint Server Subscription Edition (< 16.0.19725.20384). SharePoint Online / M365 is NOT affected.
Fixed Versions / KBsSharePoint SE: KB5002891, SharePoint 2019: KB5002883 / KB5002885, SharePoint 2016: KB5002891 / KB5002892. Released July 14, 2026 Patch Tuesday.
Internet ExposureCensys identified ~1,500 internet-exposed on-prem SharePoint hosts. Largest concentrations in the US, Germany, France, Canada. Most run on Azure, AWS, or GCP IaaS. Many more are reachable via VPN or reverse proxy.
Detection SignaturesMicrosoft Defender / AMSI: Exploit:Script/SuspSignoutReqBody.A, Exploit:Script/ToolPaneAuthBypass.A, Exploit:Script/ToolPaneAuthBypass. Process monitoring: w3wp.exe spawning shell processes.
Disclosure & CreditsDisclosed July 14, 2026 (Patch Tuesday). Microsoft confirmed zero-day exploitation. No individual researcher publicly credited. Related CVEs patched simultaneously: CVE-2026-50522, CVE-2026-56164, CVE-2026-45659, CVE-2026-32201, CVE-2026-55040.

Sources.

  1. NVD - CVE-2026-58644
  2. Microsoft Security Update Guide
  3. CISA KEV Alert - July 16, 2026
  4. Rapid7 ETR - SharePoint RCE Exploited in the Wild
  5. Resecurity - From Web Request to Domain Compromise
  6. Censys Advisory - CVE-2026-50522 and CVE-2026-58644
  7. The Hacker News - CISA KEV SharePoint Zero-Day
  8. WismanSec PoC Repository
05 · The Call

Final Verdict
= UNCHANGED to CRITICAL (9.8/10)

Why this verdict

  • Pre-auth, no-interaction RCE — maximum attacker accessibility. The CVSS vector AV:N/AC:L/PR:N/UI:N means any network-reachable attacker can exploit this without credentials, social engineering, or chaining other bugs. There is no friction at the access-control layer.
  • Active zero-day exploitation with KEV listing. This is not theoretical — attackers weaponized it before the patch existed. CISA gave federal agencies a 3-day deadline, the most aggressive timeline they assign. Resecurity documented real-world campaigns achieving domain compromise.
  • Weaponized PoC broadly available. Seven GitHub repositories and ysoserial.net lower the attacker skill requirement to script-kiddie level. The exploit is parameterized and point-and-shoot.
  • Role multiplier: SharePoint Server is a canonical high-value-role component. In enterprise deployments, SharePoint is the primary document repository and collaboration platform housing regulated data (HR, legal, finance, IP). The farm service account holds SQL Server admin-equivalent roles by default. A successful chain proceeds: unauthenticated RCE → webshell → machineKey theft → ViewState forgery (farm-wide persistence) → SQL pivot → AD credential extraction → domain compromise. This blast radius is domain-scale to fleet-scale. ≥80% of on-prem SharePoint deployments are in the high-value role by definition — they ARE the collaboration tier.
  • Role multiplier (data tier): SharePoint's content databases contain the organization's document corpus. Compromise enables mass data exfiltration of every document library, list, and site collection — a regulated-data-scale breach event even without lateral movement.
  • Minimal compensating friction in real deployments. AMSI integration exists but is not enabled by default on older builds and many orgs have not configured it. The ~1,500 internet-facing instances are the immediate target, but internal SharePoint is also reachable post-initial-access, expanding the target population to tens of thousands of on-prem farms globally.

Why not higher?

A 9.8 is already the effective maximum for a server-side vulnerability with Scope:Unchanged. The only way to score higher would be with Scope:Changed (e.g., hypervisor escape), which does not apply here. The rating cannot go higher.

Why not lower?

Every friction-reduction argument fails here. Pre-auth eliminates the credential barrier. Active zero-day exploitation eliminates the theoretical-only concern. Public PoCs eliminate the skill barrier. The documented path to domain compromise via machineKey theft and SQL pivoting means the blast radius is not limited to the SharePoint host — it extends to the entire AD domain. The ~1,500 internet-facing instances represent direct targets, but every on-prem SharePoint farm is exploitable once an attacker has network access. SharePoint is a canonical high-value-role component; the floor is CRITICAL and friction does not lower it.

06 · Verification

Crowdsourced verification payload.

Run this script on each SharePoint server in the farm using an elevated (Run as Administrator) PowerShell session. It checks the installed SharePoint build number against the patched versions. Example: .\Check-CVE-2026-58644.ps1

noisgate-verify.ps1
POWERSHELLREAD-ONLYSAFE
#Requires -RunAsAdministrator
<#
  Check-CVE-2026-58644.ps1
  Checks whether the local SharePoint Server is patched against CVE-2026-58644.
  Exit codes: 0 = PATCHED, 1 = VULNERABLE, 2 = UNKNOWN
#>

try {
    Add-PSSnapin Microsoft.SharePoint.PowerShell -ErrorAction SilentlyContinue
    $farm = [Microsoft.SharePoint.Administration.SPFarm]::Local
    if (-not $farm) {
        Write-Host "UNKNOWN - SharePoint farm not detected on this host."
        exit 2
    }
    $buildVersion = $farm.BuildVersion
    $major = $buildVersion.Major
    $minor = $buildVersion.Minor
    $build = $buildVersion.Build
    $rev   = $buildVersion.Revision
    $fullBuild = "$major.$minor.$build.$rev"
    Write-Host "Detected SharePoint build: $fullBuild"

    # Patched build thresholds (July 2026 security updates)
    # Subscription Edition: 16.0.19725.20384
    # Server 2019:          16.0.10417.20153
    # Server 2016:          16.0.5556.1005

    $vulnerable = $false
    $product = "Unknown"

    if ($build -ge 19000) {
        $product = "SharePoint Server Subscription Edition"
        if ([version]$fullBuild -lt [version]"16.0.19725.20384") {
            $vulnerable = $true
        }
    } elseif ($build -ge 10000) {
        $product = "SharePoint Server 2019"
        if ([version]$fullBuild -lt [version]"16.0.10417.20153") {
            $vulnerable = $true
        }
    } elseif ($build -ge 4000) {
        $product = "SharePoint Server 2016"
        if ([version]$fullBuild -lt [version]"16.0.5556.1005") {
            $vulnerable = $true
        }
    } else {
        Write-Host "UNKNOWN - Unrecognized SharePoint build range: $fullBuild"
        exit 2
    }

    Write-Host "Product: $product"

    # Also check AMSI integration status
    $webApps = Get-SPWebApplication -ErrorAction SilentlyContinue
    $amsiDisabled = @()
    foreach ($wa in $webApps) {
        if (-not $wa.AllowAMSIIntegration) {
            $amsiDisabled += $wa.DisplayName
        }
    }

    if ($vulnerable) {
        Write-Host "VULNERABLE - $product build $fullBuild is below the patched threshold for CVE-2026-58644."
        if ($amsiDisabled.Count -gt 0) {
            Write-Host "WARNING - AMSI integration is DISABLED on: $($amsiDisabled -join ', ')"
        }
        exit 1
    } else {
        Write-Host "PATCHED - $product build $fullBuild includes the fix for CVE-2026-58644."
        if ($amsiDisabled.Count -gt 0) {
            Write-Host "NOTE - AMSI integration is DISABLED on: $($amsiDisabled -join ', '). Enable it for defense-in-depth."
        }
        exit 0
    }
} catch {
    Write-Host "UNKNOWN - Error during detection: $($_.Exception.Message)"
    exit 2
}