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-34509

The 'b' Key to the Kingdom: Sitecore Hardcoded Credentials

Alon Barad
Alon Barad
Software Engineer

Jan 30, 2026·6 min read·54 visits

Executive Summary (TL;DR)

Sitecore shipped a database snapshot with a hardcoded user 'sitecore\ServicesAPI' having the password 'b'. Attackers can use this to get a valid session cookie, bypassing 'web.config' restrictions and opening the door to RCE vulnerabilities like CVE-2025-34510.

A critical lapse in database seeding practices left a default user account enabled in Sitecore Experience Manager and Experience Platform versions 10.1 through 10.4. The account, 'sitecore\ServicesAPI', was configured with the single-character password 'b'. While this user lacks administrative privileges, the valid session it generates allows attackers to bypass IIS-level authentication checks, serving as the necessary precursor for critical Remote Code Execution chains.

The Hook: Enterprise Complexity Meets Lazy Defaults

Enterprise CMS solutions like Sitecore are architectural behemoths. They are designed to manage content for some of the largest organizations on the planet, consisting of complex pipelines, databases, and authentication providers. When you install such a system, you aren't just copying files; you are hydrating a massive ecosystem.

Part of this hydration process involves the 'Core' database, which manages system settings, users, and security configuration. In the shift to version 10.1, Sitecore modernized how they deploy this database using DACPAC (Data-Tier Application Package) files. Think of a DACPAC as a vacuum-sealed snapshot of a database schema and its default data.

But here is the problem with snapshots: if you take a picture of your house while the back door is unlocked, every house built from that blueprint will have the back door unlocked. In Sitecore's case, they didn't just leave a door unlocked; they left a key under the mat. And the key was the letter 'b'.

The Flaw: A History Lesson in One Letter

During the analysis of Sitecore.Core.dacpac, researchers at watchTowr Labs noticed something peculiar in the dbo.aspnet_Membership table. This table holds the legacy ASP.NET Membership credentials. Among the rows of data was a user account named sitecore\ServicesAPI.

Now, ServicesAPI sounds like an internal service account—something that should probably be disabled or have a 64-character random password. Instead, the password hash stored in the database corresponded to a single character: 'b'.

Why 'b'? Veterans of the Sitecore ecosystem might chuckle. In the ancient days of Sitecore (think version 6 or 7), the default password for the admin account was often 'b'. It seems that during the creation of the version 10.1 master database image, a developer or a migration script carried this legacy credential forward, baking it into the installer. Because DACPACs are binary deployments, this hardcoded credential wasn't visible in plain text config files, allowing it to slip past code reviews and into production environments for nearly four years.

The Mechanism: Bypassing the Gatekeeper

You might be thinking, "So what? It's a service account with no roles." And you would be half-right. If you try to log into the main Sitecore shell with this account, the application logic usually kicks you out. The Sitecore.Owin.Authentication pipeline has a specific processor that checks if you are an administrator or a specific client user.

However, security is often a game of layers, and the outer layer is usually IIS and web.config rules. Many sensitive directories in Sitecore (like /sitecore/admin or /sitecore/shell) are protected by standard ASP.NET authorization rules:

<authorization>
  <deny users="?" />
</authorization>

The ? represents anonymous users. To get past this check, you don't need to be an admin; you just need to be authenticated. By sending a POST request to the authentication API with the username ServicesAPI and the password b, the server issues a valid .AspNet.Cookies session cookie.

This cookie is the golden ticket. It tells IIS, "I am a known user." IIS lets the request through to the underlying ASPX files. Even if the Sitecore application layer eventually says "Hey, you don't have permission to view this specific page," you have already breached the perimeter. You are now inside the authenticated attack surface, where much more dangerous bugs live.

The Exploit: Logging in with 'b'

Exploiting this is embarrassingly simple. No memory corruption, no race conditions, just a polite request to the login API. Here is how an attacker creates a session:

  1. Target: The ItemService authentication endpoint at /sitecore/api/ssc/auth/login.
  2. Payload: A JSON object containing the credentials.
POST /sitecore/api/ssc/auth/login HTTP/1.1
Host: target.com
Content-Type: application/json
 
{
  "domain": "sitecore",
  "username": "ServicesAPI",
  "password": "b"
}

If the server responds with a 200 OK and a Set-Cookie header containing .AspNet.Cookies, the game is effectively over. The attacker can now take that cookie and browse to endpoints that were previously returning 403 Forbidden or 302 Redirect to login.

While CVE-2025-34509 is ostensibly just an authentication bypass, it is rarely used alone. It is the prerequisite for CVE-2025-34510, a Zip Slip vulnerability in Upload2.aspx. That file is protected by the web.config rule mentioned earlier. Without the 'b' password, the attacker can't reach the upload handler. With it, they can upload a web shell and achieve full Remote Code Execution.

The Impact: From 'b' to SYSTEM

The CVSS score of 7.5 might seem modest because it's technically "only" a privilege escalation to a low-privilege user. Do not be fooled. In the context of Sitecore, this is a gateway drug to total compromise.

Once an attacker has bypassed the initial authentication check, they expose the soft underbelly of the CMS—administrative tools, debugging handlers, and legacy uploaders that were never meant to be exposed to the public internet. The specific combination of CVE-2025-34509 (Auth Bypass) and CVE-2025-34510 (File Write) allows an unauthenticated attacker to execute code as the IIS AppPool user, which often has modify rights to the webroot.

From there, data exfiltration is trivial. Customer data, marketing strategies, and user credentials stored in the SQL database are open for the taking. For a platform designed to host global brands, the reputational damage is catastrophic.

The Fix: Rotate and Restrict

If you are running Sitecore 10.1 through 10.4, you are likely vulnerable unless you manually changed this password previously. The official patch from Sitecore updates the DACPACs for future installs, but it might not automatically fix existing databases.

Immediate Remediation Steps:

  1. Change the Password: Log in to the Sitecore Desktop, open the User Manager, find sitecore\ServicesAPI, and change the password to a strong, random string. Alternatively, execute a SQL update against the Core database aspnet_Membership table (though UI is safer).
  2. Apply the Patch: Install the relevant hotfix (e.g., KB1003667) to ensure future instances or re-deployments are secure.
  3. Network Segmentation: Restrict access to /sitecore/admin and /sitecore/api endpoints. These should not be exposed to the open internet. Use WAF rules to block external access to these paths.

> [!NOTE] > Changing the password for ServicesAPI does not break core functionality in a standard setup, as this account is largely a vestigial artifact or used for specific internal service calls that can be reconfigured.

Official Patches

SitecoreSitecore Security Advisory KB1003667

Technical Appendix

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

Affected Systems

Sitecore Experience Manager (XM)Sitecore Experience Platform (XP)

Affected Versions Detail

Product
Affected Versions
Fixed Version
Sitecore XM/XP
Sitecore
10.1.0 - 10.1.310.1.4
Sitecore XM/XP
Sitecore
10.2.xSee Vendor Advisory
Sitecore XM/XP
Sitecore
10.3.0 - 10.3.210.3.3
Sitecore XM/XP
Sitecore
10.4.010.4.1
AttributeDetail
CWE IDCWE-798
Attack VectorNetwork
CVSS Score7.5 (High)
EPSS Score23.18%
Exploit StatusPoC Available
LikelihoodHigh

MITRE ATT&CK Mapping

T1078Valid Accounts
Initial Access
T1078.001Default Accounts
Initial Access
T1190Exploit Public-Facing Application
Initial Access
CWE-798
Use of Hard-coded Credentials

The use of hard-coded credentials, such as passwords or cryptographic keys, typically creates a significant hole that allows an attacker to bypass the authentication that has been configured by the software administrator.

Known Exploits & Detection

NucleiNuclei template to check for successful login with 'b' password.

Vulnerability Timeline

Vulnerability reported by watchTowr Labs
2025-02-01
Patches released to customers
2025-05-01
Public Disclosure & CVE Published
2025-06-17

References & Sources

  • [1]watchTowr Labs Research
Related Vulnerabilities
CVE-2025-34510CVE-2025-34511

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 1 hour ago•CVE-2026-115927
5.3

CVE-2026-115927: Event Loop Blocking and Memory Amplification in Tornado Chunked Transfer Encoding Parser

Tornado versions prior to 6.6.0 contain an uncontrolled resource consumption vulnerability (CWE-400) in the HTTP/1.1 chunked transfer encoding parser. When processing incoming chunked payloads that have already buffered in the socket read buffer, Tornado parses chunks in a tight synchronous loop without yielding to the event loop. Furthermore, non-streaming request handlers and SimpleAsyncHTTPClient store each chunk as a discrete Python bytes object inside a list, inducing an approximately 20-fold memory overhead for 1-byte chunks.

Amit Schendel
Amit Schendel
2 views•11 min read
•about 2 hours ago•CVE-2026-117601
9.3

CVE-2026-117601: Improper Cryptographic Signature Verification in Electrum Bitcoin Wallet

A missing cryptographic signature verification vulnerability exists in Electrum Bitcoin Wallet versions prior to 4.8.3. In Electrum's Simplified Payment Verification (SPV) architecture, the client failed to validate input signatures on unconfirmed mempool transactions received from connected Electrum servers. A malicious Electrum server can exploit this flaw by intercepting a legitimate user broadcast, suppressing it, and returning a spoofed unconfirmed transaction with an invalid signature and zero fee that redirects the user's UTXOs to an attacker-controlled address. When the user initiates a Replace-By-Fee (RBF) action to accelerate the seemingly stuck transaction, Electrum signs the spoofed outputs with the user's private keys, resulting in the direct theft of funds.

Amit Schendel
Amit Schendel
6 views•10 min read
•about 3 hours ago•CVE-2026-118254
8.6

CVE-2026-118254: DOM-based Cross-Site Scripting in Highcharts Grid Pagination Module

CVE-2026-118254 (GHSA-r5wg-q8fc-p6w2) is a high-severity DOM-based Cross-Site Scripting (DOM XSS) vulnerability in the pagination module of Highcharts Grid (@highcharts/grid-lite and @highcharts/grid-pro). The flaw stems from the direct assignment of localization configuration strings (lang.pageInfo and lang.pageSizeLabel) and pagination UI labels to DOM elements via the innerHTML property instead of text-safe DOM APIs such as textContent or innerText. When an application passes attacker-controlled data into the Grid localization options with pagination enabled, arbitrary HTML and JavaScript execute automatically within the hosting document's origin context upon component rendering.

Amit Schendel
Amit Schendel
5 views•10 min read
•about 4 hours ago•CVE-2026-118255
8.4

CVE-2026-118255: Cross-Site Scripting via Unfiltered Credits Href in Highcharts Grid

CVE-2026-118255 is a Cross-Site Scripting (XSS) vulnerability in Highcharts Grid and Highcharts Grid Pro. The flaw occurs because the credits component assigns the configuration-supplied credits.href property directly to an HTML anchor element without verifying the URI scheme against the internal Abstract Syntax Tree (AST) allowlist. An attacker who can influence the grid configuration can supply a javascript: URI, resulting in arbitrary JavaScript execution in the victim's browser session when the credits link is clicked.

Amit Schendel
Amit Schendel
6 views•9 min read
•about 9 hours ago•GHSA-F897-62HF-6GXQ
7.5

GHSA-f897-62hf-6gxq: Unbounded Request Body and JSON-RPC Batch DoS in Model Context Protocol TypeScript SDK

The Model Context Protocol (MCP) TypeScript SDK contains an uncontrolled resource consumption vulnerability in its HTTP server transport implementations and middleware adapters. Affected versions fail to enforce upper bounds on incoming HTTP POST request body sizes and JSON-RPC 2.0 batch array lengths. In addition, middleware wrappers for Express and Hono parse request bodies into memory prior to validating Host and Origin headers. Unauthenticated remote attackers can exploit these flaws to trigger Out-Of-Memory (OOM) process crashes or monopolize the single-threaded Node.js event loop.

Amit Schendel
Amit Schendel
6 views•11 min read
•about 10 hours ago•CVE-2026-87029
5.9

CVE-2026-87029: Remote Denial of Service via Uncaught Exception in Node.js Undici Decompress Interceptor

An uncaught exception vulnerability (CWE-248) exists in the Node.js HTTP/1.1 client library undici, affecting versions 7.15.0 through 7.30.0 and 8.0.0 through 8.12.1. The flaw resides in the DecompressHandler interceptor (lib/interceptor/decompress.js), which processes compressed HTTP response streams using asynchronous Node.js zlib callbacks. When forwarding decompressed data chunks or stream completion events to downstream handlers, the interceptor fails to wrap the invocations of super.onResponseData() and super.onResponseEnd() in try...catch blocks. If a downstream interceptor or handler throws an exception during response processing—such as the built-in dump interceptor enforcing a maximum response size—the exception escapes the asynchronous zlib callback stack onto the top-level Node.js event loop, terminating the entire client process.

Alon Barad
Alon Barad
7 views•10 min read