CVE-2025-53770 and CVE-2025-53771, collectively dubbed ToolShell, give attackers unauthenticated remote code execution and authentication bypass against on-premises Microsoft SharePoint. Both have been actively exploited, and both are patch bypasses — which means organisations that applied the previous fixes may still be exposed.
That last point is the one to take away. These are not isolated flaws; they are an evolution of CVE-2025-49704 and CVE-2025-49706, found by reverse-engineering the patches for them. Incomplete remediation produced a more effective attack chain than the original.
What ToolShell actually is
CVE-2025-53770 — the remote code execution
A severe RCE stemming from unsafe deserialisation of untrusted data, with a CVSS score of 9.8. It allows arbitrary code execution on a vulnerable server with no authentication at all. The flaw is in how SharePoint processes crafted HTTP requests aimed at the ToolPane.aspx endpoint: a manipulated request carries content that the server deserialises and executes, handing over full control. Outcomes range from complete system takeover to data exfiltration to ransomware deployment.
CVE-2025-53771 — the authentication bypass
The enabler. It lets an attacker reach SharePoint as an unauthenticated user, spoofing identity and evading controls that assume a request has been authenticated. Chained with the RCE above, it removes the need for credentials entirely — which is what turns a serious vulnerability into an internet-wide scanning opportunity.
Chained together, these two require nothing from the attacker but network reachability. No credentials, no user interaction, no phishing step.
Who is at risk
ToolShell affects on-premises SharePoint:
- SharePoint Server Subscription Edition
- SharePoint Server 2019
- SharePoint Server 2016
- SharePoint Server 2010 and 2013
SharePoint Online in Microsoft 365 is not affected. But a self-managed SharePoint instance is vulnerable wherever it runs — including on Azure, AWS or GCP. "It is in the cloud" is not the same as "it is SharePoint Online", and that distinction has caught people out.
How it is exploited
Observed campaigns follow a consistent chain.
Initial access
Reconnaissance to find reachable on-premises instances, then crafted HTTP POST requests to /_layouts/15/ToolPane.aspx. Those requests carry a forged Referer header — typically /_layouts/SignOut.aspx — which causes SharePoint to treat the payload as a legitimate authenticated request, exercising CVE-2025-53771.
Code execution
With authentication bypassed, the payload triggers the deserialisation flaw. It generally contains encoded PowerShell or a loader, and execution frequently occurs with high privilege — in some cases as NT AUTHORITY\SYSTEM. A web shell is commonly dropped, historically named spinstall0.aspx.
Post-exploitation
- Persistence via web shells, maintaining access after patching
- Data exfiltration — documents, configuration files, cryptographic secrets
- Credential harvesting, including MachineKey material
- Lateral movement, mapping Active Directory and expanding across the estate
- Ransomware deployment in some intrusions
Note the order. Patching after compromise closes the door on an attacker already inside — the web shell survives it. If you were exposed, patching is the beginning of the response, not the end of it.
Who is exploiting it
Per CISA and other vendors, ToolShell has been weaponised by nation-state actors including Linen Typhoon (China), Violet Typhoon (China) and Storm-2603, against finance, healthcare, education and energy.
What to do now
Apply Microsoft's emergency out-of-band updates immediately:
- SharePoint Server Subscription Edition — KB5002768
- SharePoint Server 2019 — KB5002754, and KB5002753 for the language pack
- SharePoint Server 2016 — KB5002760, and KB5002759 for the language pack
Then, because patching does not evict anyone already present:
- Rotate the ASP.NET MachineKey and restart IIS. Stolen key material lets an attacker forge payloads that survive the patch.
- Hunt for the web shells below, and for any unexpected
.aspxin the SharePoint LAYOUTS directories. - Review IIS logs for POST requests to
ToolPane.aspx, especially with aSignOut.aspxreferer. - Check for the child processes that should never occur —
w3wp.exespawning PowerShell or cmd. - Get it off the internet. An on-premises SharePoint reachable from anywhere is the precondition for all of this.
Indicators of compromise
Published by Microsoft for the ToolShell campaign. Defanged for safe handling.
| Indicator | Type | Description |
|---|---|---|
| spinstall0.aspx | Filename | Web shell. Also seen as spinstall.aspx, spinstall1.aspx, spinstall2.aspx |
| IIS_Server_dll.dll | Filename | Storm-2603 IIS backdoor |
| SharpHostInfo.x64.exe | Filename | Host enumeration via NetBIOS, SMB and WMI |
| xd.exe | Filename | Fast reverse proxy connecting to 65.38.121[.]198 |
| debug_dev.js | Filename | Stolen web config data, including MachineKey material |
| \1[5-6]\TEMPLATE\LAYOUTS\debug_dev.js | File path | Location of stolen web configs |
| 92bb4ddb98eeaf11fc15bb32e71d0a63256a0ed826a03ba293ce3a8bf057a514 | SHA-256 | spinstall0.aspx |
| 24480dbe306597da1ba393b6e30d542673066f98826cc07ac4b9033137f37dbf | SHA-256 | Web shell using HTTP/curl, C2 update[.]updatemicfosoft[.]com |
| b5a78616f709859a0d9f830d28ff2f9dbbb2387df1753739407917e96dadf6b0 | SHA-256 | Web shell using sockets/DNS, same C2 |
| c27b725ff66fdfb11dd6487a3815d1d1eba89d61b0e919e4d06ed3ac6a74fe94 | SHA-256 | Web shell using sockets/DNS, same C2 |
| 1eb914c09c873f0a7bcf81475ab0f6bdfaccc6b63bf7e5f2dbf19295106af192 | SHA-256 | Web shell using sockets/DNS, same C2 |
| 4c1750a14915bf2c0b093c2cb59063912dfa039a2adfe6d26d6914804e2ae928 | SHA-256 | IIS_Server_dll.dll |
| 83705c75731e1d590b08f9357bc3b0f04741e92a033618736387512b40dab060 | SHA-256 | IIS_Server_dll.dll |
| f54ae00a9bae73da001c4d3d690d26ddf5e8e006b5562f936df472ec5e299441 | SHA-256 | IIS_Server_dll.dll |
| b180ab0a5845ed619939154f67526d2b04d28713fcc1904fbd666275538f431d | SHA-256 | IIS_Server_dll.dll |
| 6753b840cec65dfba0d7d326ec768bff2495784c60db6a139f51c5e83349ac4d | SHA-256 | IIS_Server_dll.dll |
| 7ae971e40528d364fa52f3bb5e0660ac25ef63e082e3bbd54f153e27b31eae68 | SHA-256 | IIS_Server_dll.dll |
| 567cb8e8c8bd0d909870c656b292b57bcb24eb55a8582b884e0a228e298e7443 | SHA-256 | IIS_Server_dll.dll |
| 445a37279d3a229ed18513e85f0c8d861c6f560e0f914a5869df14a74b679b86 | SHA-256 | IIS_Server_dll.dll |
| ffbc9dfc284b147e07a430fe9471e66c716a84a1f18976474a54bee82605fa9a | SHA-256 | IIS_Server_dll.dll |
| 6b273c2179518dacb1218201fd37ee2492a5e1713be907e69bf7ea56ceca53a5 | SHA-256 | IIS_Server_dll.dll |
| c2c1fec7856e8d49f5d49267e69993837575dbbec99cd702c5be134a85b2c139 | SHA-256 | IIS_Server_dll.dll |
| 6f6db63ece791c6dc1054f1e1231b5bbcf6c051a49bad0784569271753e24619 | SHA-256 | IIS_Server_dll.dll |
| d6da885c90a5d1fb88d0a3f0b5d9817a82d5772d5510a0773c80ca581ce2486d | SHA-256 | SharpHostInfo.x64.exe |
| 62881359e75c9e8899c4bc9f452ef9743e68ce467f8b3e4398bebacde9550dea | SHA-256 | xd.exe |
| c34718cbb4c6.ngrok-free[.]app/file.ps1 | URL | Ngrok tunnel delivering PowerShell to C2 |
| msupdate[.]updatemicfosoft[.]com | Domain | Storm-2603 C2 |
| 131.226.2[.]6 | IP | Post-exploitation C2 |
| 134.199.202[.]205 | IP | Observed exploiting SharePoint |
| 104.238.159[.]149 | IP | Observed exploiting SharePoint |
| 188.130.206[.]168 | IP | Observed exploiting SharePoint |
| 65.38.121[.]198 | IP | Storm-2603 post-exploitation C2 |
Treat these as a starting point rather than a checklist. Hashes and infrastructure change; the behaviour described above does not.
The wake-up call
ToolShell is a vivid example of how incomplete patching and evolving tradecraft combine into a highly effective attack chain. Unauthenticated RCE against on-premises SharePoint is not a theoretical risk — it has been exploited by nation-state actors against critical sectors.
The lesson that outlasts these two CVEs is about patch bypasses generally. When a fix lands for something serious, a reasonable assumption is that somebody is already reverse-engineering it to find what the fix missed. That is an argument for monitoring behaviour as well as tracking versions — the next bypass will not have a CVE number attached to it on the day it is used against you.