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-2026-6553
7.30.03%

CVE-2026-6553: Cleartext Password Exposure in TYPO3 CMS Backend User Settings

Amit Schendel
Amit Schendel
Senior Security Researcher

Apr 25, 2026·6 min read·4 visits

No Known Exploit

Executive Summary (TL;DR)

TYPO3 CMS version 14.2.0 fails to partition sensitive database fields from user preferences during backend profile updates, writing plaintext passwords to serialized database columns. Immediate patching and manual database scrubbing are required.

CVE-2026-6553 is a high-severity sensitive data exposure vulnerability (CWE-312) in TYPO3 CMS version 14.2.0. The vulnerability allows plaintext backend user passwords to be stored within serialized configuration fields in the database. The flaw occurs when users update their profile via the 'User Settings' module, exposing credentials to any actor with database read access.

Vulnerability Overview

CVE-2026-6553 is a sensitive data exposure vulnerability affecting the SetupModuleController component within the ext:backend system extension of TYPO3 CMS. The flaw is specifically isolated to version 14.2.0. The vulnerability triggers when a backend user interacts with the "User Settings" module to update profile details or change their password.

The root of the issue stems from an architectural shift introduced in TYPO3 14.2.0 regarding how backend user preferences are managed. The system stores user configuration data as serialized JSON within specific columns of the be_users table. The regression occurs because the application fails to distinguish between primary authentication fields and general user preferences during the form submission process.

While the core authentication handler correctly hashes the submitted password before writing it to the primary be_users.password column, a secondary execution path mismanages the raw POST data. The system takes the unhashed password and appends it to the user's preference array, persisting the exact plaintext string to the database. This behavior constitutes a CWE-312 (Cleartext Storage of Sensitive Information) violation.

Root Cause Analysis

The vulnerability originates within the storeIncomingData method of the SetupModuleController. This controller processes the incoming POST request when a user submits the settings form. The fundamental error is the absence of a strict boundary separating distinct data domains during processing.

TYPO3 utilizes a system where "virtual fields" (such as UI language, theme preferences, and layout options) are stored in a configuration object accessed via $backendUser->uc. Conversely, "database fields" (such as the authentication password or primary email) correspond directly to structural columns in the relational database. The controller is responsible for routing these fields to their appropriate storage mechanisms.

In version 14.2.0, the controller merges all submitted fields into a single flat array before processing. The logic iterates through this array without filtering out sensitive inputs. Consequently, the raw password and password2 fields are assigned directly to the $backendUser->uc object alongside benign user preferences.

Code Analysis

An examination of the vulnerable implementation in TYPO3 14.2.0 reveals a direct assignment pattern that lacks input sanitization. The SetupModuleController loops over the submitted configuration keys and populates the user object.

// Vulnerable pattern in TYPO3 14.2.0
foreach ($columns as $field => $config) {
    // The application assigns submitted values directly to the 'uc' array
    // Sensitive fields like 'password' are not excluded
    $backendUser->uc[$field] = $d[$field] ?? ''; 
}

The remediation implemented in commit 9a6e913f70767f63b322ae3e2d2f4e302624c291 resolves the flaw by introducing strict data partitioning and explicit field blocklisting. The patch defines a new constant, DISALLOWED_FIELD_NAMES, which enumerates sensitive keys that must never enter the configuration blob.

// Patched logic
private const DISALLOWED_FIELD_NAMES = ['password', 'email', 'realName', 'avatar'];
 
foreach ($columns as $field => $config) {
    if (in_array($field, self::DISALLOWED_FIELD_NAMES, true)) {
        continue;
    }
    $backendUser->uc[$field] = $d[$field] ?? '';
}

Beyond the specific blocklist, the patch refactors the form submission handling to split the data payload into two separate arrays immediately upon receipt. One array is strictly designated for primary database columns, while the other is reserved exclusively for the serialized user_settings blob. This defense-in-depth approach ensures that future additions to the user model do not inadvertently leak sensitive data.

Exploitation Mechanics

Exploitation of CVE-2026-6553 requires an attacker to possess read access to the underlying TYPO3 database. This vulnerability functions primarily as an escalation vector rather than an initial access method. An attacker typically achieves this prerequisite access through an adjacent SQL injection vulnerability, compromised database backup files, or an unauthorized connection to the database server.

Once database access is secured, the attacker queries the be_users table and inspects the contents of the uc and user_settings columns. Because the configuration object is serialized using standard PHP formatting, the stored cleartext password is easily identifiable within the string output.

A typical compromised record will contain a serialized structure similar to s:8:"password";s:12:"mysecret123";. The attacker extracts the value mysecret123 and utilizes it to authenticate directly against the TYPO3 backend. Currently, no public exploit code or automated weaponized tools exist, given the prerequisite of database access.

Impact Assessment

The exposure of cleartext passwords directly compromises the confidentiality of backend user accounts. If an attacker successfully harvests these credentials, they can authenticate as the compromised user. In TYPO3 environments, backend user access frequently equates to comprehensive administrative control over the content management system.

Administrative access allows an attacker to alter website content, modify system configurations, and deploy malicious extensions. The capability to upload arbitrary PHP code via backend extensions results in full Remote Code Execution (RCE) on the underlying web server.

The CVSS 4.0 vector assesses this vulnerability at 7.3 (CVSS:4.0/AV:N/AC:L/AT:P/PR:N/UI:P/VC:H/VI:N/VA:N/SC:H/SI:H/SA:H). The confidentiality metric is marked as High due to the complete exposure of the authentication string. The User Interaction (UI) metric is set to Required, as the user must actively submit the settings form to trigger the data leak. The low EPSS score (0.00029) reflects the structural requirements for exploitation, indicating a low probability of widespread automated attacks.

Remediation and Scrubbing

The primary remediation for CVE-2026-6553 requires upgrading the TYPO3 CMS installation to version 14.3.0. Deploying the patch corrects the vulnerable controller logic and prevents any future plaintext storage of passwords during profile updates. However, applying the code update does not retroactively secure data already persisted in the database.

Administrators must execute a manual database scrubbing procedure to remove existing compromised records. TYPO3 14.3.0 includes a specific upgrade wizard named "User Settings Scrubbing" (UserSettingsScrubbingMigration.php). This tool is accessible via the TYPO3 Install Tool under Admin Tools, then Upgrade, and finally Upgrade Wizard. Running this script identifies and removes leaked credentials from the uc arrays.

Following the database scrubbing process, security teams must force a password reset for all backend users. Any user who interacted with the settings module while version 14.2.0 was active must be considered compromised. To identify potentially affected rows prior to scrubbing, administrators can execute the following diagnostic SQL query:

SELECT uid, username 
FROM be_users 
WHERE uc LIKE '%"password"%' OR user_settings LIKE '%"password"%';

Official Patches

TYPO3TYPO3 core commit addressing CVE-2026-6553
TYPO3TYPO3 Security Advisory TYPO3-CORE-SA-2026-005

Fix Analysis (1)

Technical Appendix

CVSS Score
7.3/ 10
CVSS:4.0/AV:N/AC:L/AT:P/PR:N/UI:P/VC:H/VI:N/VA:N/SC:H/SI:H/SA:H
EPSS Probability
0.03%
Top 92% most exploited

Affected Systems

TYPO3 CMS Backend ComponentTYPO3 Relational Database (be_users table)

Affected Versions Detail

Product
Affected Versions
Fixed Version
TYPO3 CMS
TYPO3
= 14.2.014.3.0
AttributeDetail
CWE IDCWE-312
Attack VectorNetwork (Requires prior DB access)
CVSS 4.0 Score7.3
EPSS Score0.00029
ImpactInformation Disclosure / Credential Theft
Exploit StatusNone
KEV StatusNot Listed

MITRE ATT&CK Mapping

T1552Unsecured Credentials
Credential Access
CWE-312
Cleartext Storage of Sensitive Information

The application stores sensitive information in cleartext within a resource that might be accessible to another control sphere.

Vulnerability Timeline

Security patch committed to TYPO3 core
2026-04-20
TYPO3 Project releases Security Advisory TYPO3-CORE-SA-2026-005
2026-04-21
CVE-2026-6553 published by NVD and CVE.org
2026-04-21

References & Sources

  • [1]TYPO3 Security Advisory TYPO3-CORE-SA-2026-005
  • [2]CVE Record: CVE-2026-6553
  • [3]TYPO3 Fix Commit

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.