CVE-2025-53690

Documentation-Driven Destruction: The Sitecore Static Key RCE

Amit Schendel
Amit Schendel
Senior Security Researcher

Jan 30, 2026·6 min read·1 visit

Executive Summary (TL;DR)

Sitecore admins copy-pasted 'example' encryption keys from official docs into production. Attackers are using these public keys to forge malicious ViewState payloads, achieving full Remote Code Execution (RCE) as SYSTEM. Active in the wild (UAT-8837).

A critical remote code execution vulnerability in Sitecore products caused by the widespread use of insecure, static ASP.NET machine keys derived from official vendor documentation. Attackers can forge ViewState data to execute arbitrary code without authentication.

The Hook: Copy-Paste Pwnage

We often joke about 'Stack Overflow Driven Development,' but usually, following the official vendor documentation is considered a safe bet. Not this time. CVE-2025-53690 is the cybersecurity equivalent of a vendor telling you to leave your house key under the doormat, and then acting surprised when burglars let themselves in.

This isn't a buffer overflow in a C++ library or a subtle race condition in the kernel. This is a configuration-based zero-day. For years, Sitecore's official deployment guides and documentation provided "sample" ASP.NET machineKey configurations. These XML snippets contained hardcoded cryptographic keys intended for illustration.

Unfortunately, human nature took over. Sysadmins and developers, under pressure to deploy complex environments (XP, XM, XC), simply copy-pasted these blocks directly into their production web.config files. The result? Thousands of enterprise Sitecore instances running on the open internet, all sharing the exact same cryptographic secrets. If you have the keys, you own the castle.

The Flaw: ViewState of Emergency

To understand why this is catastrophic, we have to look at the ancient, lumbering beast that is ASP.NET Web Forms. Sitecore relies heavily on this technology. Web Forms uses a mechanism called ViewState to persist the state of UI elements across HTTP requests (since HTTP is stateless).

ViewState is that massive, ugly Base64 string you see in the source code of legacy .NET sites (__VIEWSTATE). Because this data is stored on the client side (the browser), it must be protected from tampering. If a user could modify the ViewState, they could trick the server into thinking they are an admin or inject malicious data.

> [!NOTE] > The Mechanism: ASP.NET uses the machineKey section in web.config to handle this protection. It uses a validationKey to sign the data (HMAC) and a decryptionKey to encrypt it.

When EnableViewStateMac is enabled (which it is by default), the server checks the signature of the incoming ViewState. If the signature matches, the server deserializes the object. Here is the flaw: If an attacker knows the validationKey and decryptionKey, they can craft their own malicious object, sign it perfectly, and encrypt it. The server will happily accept it, deserialize it, and execute whatever payload is hidden inside.

The Code: The Smoking Gun

There is no "vulnerable code" to patch in the traditional sense. The vulnerability is in the configuration file. Below is a reconstruction of the tragedy found in the 2017 Sitecore documentation.

The Vulnerable Configuration (Do Not Use):

<!-- The configuration that launched a thousand shells -->
<system.web>
  <machineKey 
    validationKey="CF1004...[REDACTED_KNOWN_KEY]...890"
    decryptionKey="ISOLATED...[REDACTED_KNOWN_KEY]...123"
    validation="SHA1"
    decryption="AES"
  />
</system.web>

Because this key was static and published in a PDF, it is effectively public knowledge. An attacker scanning the internet doesn't need to break into your server to get the key; they just need to check if your server accepts a ViewState signed with the 'Sitecore Default' key.

If the server processes the request without throwing a 'Viewstate MAC failed' error, the attacker knows you are vulnerable. It is a binary check: either you rotated your keys, or you are compromised.

The Exploit: Deserialization Doom

Exploiting this is trivially easy for anyone familiar with .NET deserialization attacks. The attack chain leverages the CWE-502 weakness (Deserialization of Untrusted Data).

The Attack Recipe:

  1. Gadget Selection: The attacker selects a gadget chain. Since Sitecore is a massive application, it has plenty of libraries on the classpath. A common suspect is ActivitySurrogateSelector or similar gadgets available in tools like ysoserial.net.
  2. Payload Creation: The attacker generates a payload that executes a system command (e.g., spawning a reverse shell or downloading a beacon).
  3. Forging the Ticket: Using the stolen keys from the documentation, the attacker encrypts and signs the serialized payload.
  4. Delivery: The attacker sends a POST request to a Sitecore endpoint. The /sitecore/blocked.aspx page is a popular target because it exists by default and processes ViewState.

The server receives the blob, verifies the signature using the hardcoded key (it matches!), and proceeds to deserialize. During deserialization, the malicious object instantiates, and the payload executes in the context of the IIS worker process (w3wp.exe), usually giving the attacker NETWORK SERVICE or SYSTEM privileges.

In The Wild: WEEPSTEEL and UAT-8837

This isn't theoretical. Mandiant has attributed active exploitation of this flaw to UAT-8837, a China-linked espionage group. They aren't just popping shells; they are moving in.

Once they achieve RCE, they drop a custom malware implant dubbed WEEPSTEEL. This is a sophisticated .NET backdoor designed for Sitecore environments. It allows for:

  • Arbitrary File Execution: Running additional tools like DWAgent.
  • Tunneling: Setting up SOCKS proxies using EarthWorm to pivot into the internal network.
  • Credential Theft: dumping LSASS or using GoTokenTheft to steal domain admin credentials.

> [!ALERT] > Forensic Tip: Check your IIS logs for POST requests to /sitecore/blocked.aspx containing unusually large ViewState parameters. Also, look for the creation of local user accounts like asp$ or sawadmin—a hallmark of UAT-8837 persistence.

The Fix: Rotate or Die

Patches from Sitecore essentially tell you to do what you should have done in the beginning: Manage your secrets.

Step 1: Key Rotation You cannot simply "patch" the binary. You must generate new, cryptographically strong, random keys for the validationKey and decryptionKey attributes. Every environment (Dev, QA, Prod) should have unique keys.

Step 2: Configuration Encryption Even with unique keys, leaving them in plaintext in web.config is risky if an attacker gains Local File Inclusion (LFI). Use the ASP.NET IIS Registration Tool to encrypt the section:

aspnet_regiis.exe -pe "system.web/machineKey" -app "/SitecoreInstanceName"

Step 3: Verify Ensure that the old keys are completely removed. If you are running a Sitecore cluster, ensure the new keys are synchronized across all nodes, otherwise, ViewState generated on one server will fail validation on another.

Technical Appendix

CVSS Score
9.0/ 10
CVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:C/C:H/I:H/A:H
EPSS Probability
9.73%
Top 7% most exploited

Affected Systems

Sitecore Experience Platform (XP) <= 9.0Sitecore Experience Manager (XM) <= 9.0Sitecore Experience Commerce (XC) <= 9.0Sitecore Managed Cloud (Legacy Configurations)

Affected Versions Detail

Product
Affected Versions
Fixed Version
Sitecore Experience Platform
Sitecore
<= 9.0Manual Config Fix
Sitecore Experience Manager
Sitecore
<= 9.0Manual Config Fix
AttributeDetail
CWE IDCWE-502
CVSS9.0 (Critical)
Attack VectorNetwork (Remote)
AuthenticationNone
Exploit StatusActive Exploitation (KEV)
Threat ActorUAT-8837 (China-linked)
PayloadWEEPSTEEL / .NET Deserialization
CWE-502
Deserialization of Untrusted Data

The application deserializes untrusted data without sufficiently verifying the resulting data will be valid.

Vulnerability Timeline

Earliest observed exploitation in the wild
2024-12-01
Sitecore issues security advisory
2025-08-01
CVE-2025-53690 Assigned
2025-09-03
Added to CISA KEV
2025-09-04

Subscribe to updates

Get the latest CVE analysis reports delivered to your inbox.