Attack ChainAIDerived
Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain
-
AccessGain file-write to /media (backup restore or server access)
-
DeliveryPlant file with HTML-metacharacter filename
-
ExploitBackend user opens Mediapool Sync page
-
ExecutionUnescaped filename renders in admin HTML
-
PersistStored XSS executes in victim session
-
ImpactSteal admin session cookie / CMS takeover
Vulnerability Assessment
| Weakness |
CWE
OWASP Top 10:2025
A05:2025 - Injection
ASVS 5.0
V1 - Encoding and Sanitization Output encoding, context-aware escaping
MITRE ATT&CK
2 techniques across 2 tactics: Initial Access, Execution The technique list with ATT&CK links and the kill-chain view is part of the Basic plan and up. |
| Exploitation Conditions | Exploitation requires two chained prerequisites: (1) the attacker must be able to place a file with an HTML-metacharacter filename into the REDAXO /media filesystem directory without registering it in the media database - per the advisory this needs admin-level backup restore or direct server/filesystem access; and (2) a backend user holding the media[sync] permission must then navigate to Mediapool → Sync to trigger the stored payload (required user interaction, UI:R). Exploitation is limited to REDAXO core <= 5.21.1; it is not remotely exploitable against a default configuration by an unauthenticated external attacker, since the file-placement step demands high privilege or server access. |
| Impact | This is a genuine but low-to-moderate priority issue, correctly rated LOW (CVSS 4.8). The provided CVSS 3.1 vector (AV:N/AC:L/PR:H/UI:R/S:C/C:L/I:L/A:N) is internally consistent and defensible: although the XSS payload delivery is network-facing, actually planting the malicious filename in the /media filesystem directory requires high privilege (admin-level backup restore or direct server access), which justifies PR:H, and a backend victim must load the sync page (UI:R). No EPSS score, no CISA KEV listing, and no independent POC/exploit-code signal are present in the input - only the vendor advisory's step-by-step reproduction. The realistic risk is therefore constrained by the strong precondition: an attacker who can already write arbitrary files to /media typically already possesses significant access, making this more of a privilege-escalation/lateral-movement primitive (low-priv media[sync] operator → admin session theft) than a remote-unauthenticated threat. No conflicting signals of note; the vendor vector and description agree. Verify EPSS/POC status externally as neither is supplied. |
| Exploit ScenarioDerived | An attacker with the ability to write files to the REDAXO /media directory (via an admin-level backup restore or server/FTP access) places a file named like |
Get an e-mail when this CVE is exploited, patched or re-scored. Free account.
Alert meAnalysisAIv1 – Sep 23, 2026
Stored cross-site scripting in REDAXO CMS 5.21.1 and earlier allows an attacker who can place a file with HTML metacharacters in its filename into the /media directory to inject JavaScript that runs in the browser of any backend user who opens Mediapool → Sync, enabling session-cookie theft and potential CMS takeover. The flaw lives in the mediapool addon's sync.php, which renders unregistered filesystem filenames into HTML without rex_escape(); exploitation requires high privilege (admin-level backup restore or direct server/filesystem access) plus a victim holding the media[sync] permission who loads the page, so it is not reachable by an unauthenticated remote attacker on a default install. It is correctly rated LOW at CVSS 4.8, with no public exploit identified at time of analysis and no confirmed active exploitation (not in CISA KEV), although the vendor advisory documents a step-by-step proof-of-concept reproduction path; a vendor patch is available in REDAXO 5.21.2.
RemediationAI
Vendor-released patch: upgrade to REDAXO 5.21.2, which is published at https://github.com/redaxo/core/releases/tag/5.21.2 and corresponds to fix PR https://github.com/redaxo/core/pull/6581 and commit https://github.com/redaxo/core/commit/2daaa3a30570bc76a82f63fd21fb8c9c2cd5dc7c; because that commit also escapes several other media_manager, mediapool and metainfo output points, a full upgrade is preferable to a hand-applied one-line hotfix. If upgrading must be deferred, apply the code change manually by wrapping $file and $notWritable in rex_escape() in redaxo/src/addons/mediapool/pages/sync.php (both the label/field construction near lines 119-120 and the implode at line 170) - note that custom patches will be overwritten by the next update and must be re-verified. Practical compensating controls, with their trade-offs: restrict backup restore and any filesystem write access to /media to fully trusted administrators, and inventory /media for unexpected filenames (especially any containing <, >, quotes or spaces) before letting users open the sync page, accepting that a restored backup can silently reintroduce a malicious name; and/or remove the media[sync] permission from non-administrative roles so only trusted admins can reach the vulnerable page, at the cost of disabling media synchronisation for editors. As defense in depth, a strict Content-Security-Policy on the backend can blunt inline-script payloads, but REDAXO's backend relies on inline JavaScript and a restrictive CSP may break administrative functionality, so it should only be considered alongside patching. The same PR tightened escaping in media_manager, mediapool and metainfo handlers, so organisations should treat this as a signal to review other unescaped filename/name output paths rather than patch sync.php in isolation.
Affected VersionsENISA
Affected Packages
Source: OSV (Open Source Vulnerabilities)
Affects your stack
Affects 2 packages in composer, euvd
Checking this CVE against your own stacks and servers is part of the Basic plan and up.
Technical ContextAI · show details
REDAXO is a PHP-based content management system; the vulnerable code sits in the bundled mediapool addon at redaxo/src/addons/mediapool/pages/sync.php, where the $diffFiles array is filled with raw filesystem filenames found in /media that are not yet registered in the media database. Lines 119-120 interpolate those names directly into a <label> and an <input value="..."> string, and line 170 implodes the $notWritable list into a <ul>/<li> fragment, all without passing through rex_escape() (REDAXO's htmlspecialchars wrapper). This is classic CWE-79 improper neutralization of input during web page generation: the application treats an externally influenced filesystem name as trusted markup rather than escaping it at the output sink, so a name such as <img src=x onerror=...>.txt becomes executable script. The weakness is inconsistent with the rest of the codebase, where identical filename output paths (media.detail.php:236, media.list.php) do call rex_escape(); the accompanying fix commit extends escaping to several other media_manager, mediapool and metainfo output points, indicating a broader stored-XSS hygiene issue. The CVSS vector AV:N/AC:L/PR:H/UI:R/S:C/C:L/I:L/A:N reflects that the injection is delivered over the web but requires high privileges to plant the file and victim interaction to fire, with the changed scope reflecting code execution in the victim's browser context.
Know when PHP gets its next vulnerability
- Watch products and get an email when something new is published
- Check this CVE against your own stack and servers
- Exploit and PoC references, threat intelligence from 22 sources
No credit card · 7-day full trial
Severity by source
AV:N/AC:L/PR:H/UI:R/S:C/C:L/I:L/A:N
Planting the file requires admin/server-level write access (PR:H), a victim must view the sync page (UI:R), and XSS executing in another user's browser is a scope change (S:C) with limited C/I and no availability impact.
Primary rating from Vendor (https://github.com/redaxo/core).
CVSS VectorVendor: https://github.com/redaxo/core
DescriptionCVE.org
Summary
The mediapool sync page (sync.php) renders filenames from the /media filesystem directory directly into HTML without applying rex_escape() (i.e., htmlspecialchars). Any file placed in the media directory whose filename contains HTML metacharacters will execute JavaScript in the browser of any backend user who views the sync page.
Details
In redaxo/src/addons/mediapool/pages/sync.php, the variable $diffFiles is populated from actual filesystem filenames (files in /media/ not yet registered in the database). These filenames are then rendered without escaping:
File: redaxo/src/addons/mediapool/pages/sync.php:119-120
foreach ($diffFiles as $file) {
if (is_writable(rex_path::media($file))) {
$e = [];
$e['label'] = '<label>' . $file . '</label>'; // NO rex_escape!
$e['field'] = '<input type="checkbox" name="sync_files[]" value="' . $file . '" />'; // NO rex_escape!
$writable[] = $e;
} else {
$notWritable[] = $file;
}
}File: redaxo/src/addons/mediapool/pages/sync.php:170
$fragment->setVar('body', '<ul><li>' . implode('</li><li>', $notWritable) . '</li></ul>', false);
// $notWritable contains unescaped filenamesBy contrast, all other filename displays in the codebase use rex_escape($fname) (e.g., media.detail.php:236, media.list.php). The sync page is accessible to any backend user with the media[sync] permission (not exclusively admins).
PoC
- Place a file named
<img src=x onerror=alert(document.cookie)>.txtinto the REDAXO/media/directory (via backup restore or server access) without adding it to the media database. - Log in as any backend user with
media[sync]permission. - Navigate to Mediapool → Sync.
- The XSS payload executes immediately, stealing the admin session cookie.
Impact
Stored XSS in the admin panel. An attacker who can place files in the media directory (via admin-level backup restore or server access) can achieve persistent XSS against all users who visit the sync page, including higher-privileged admins. This enables session hijacking, credential theft, and full CMS takeover.
Fix
Apply rex_escape() to all filename variables before inserting into HTML:
$e['label'] = '<label>' . rex_escape($file) . '</label>';
$e['field'] = '<input type="checkbox" name="sync_files[]" value="' . rex_escape($file) . '" />';
// ...
$fragment->setVar('body', '<ul><li>' . implode('</li><li>', array_map('rex_escape', $notWritable)) . '</li></ul>', false);Threat Intelligence Overview
How this decision was reached
The engine reads each signal below and applies a fixed list of rules from top to bottom. The first rule that matches sets the recommended action – like a statement, every line is shown.
What every action level means
SSVC AssessmentENISA
Priority Score
Attack Technique
Cross-Site Scripting occurs when an application accepts untrusted data and sends it to a web browser without proper validation or encoding.
In PHP versions 7.1.x below 7.1.33, 7.2.x below 7.2.24 and 7.3.x below 7.3.11 in certain configurations of FPM setup it
sapi/cgi/cgi_main.c in PHP before 5.3.12 and 5.4.x before 5.4.2, when configured as a CGI script (aka php-cgi), does not
(1) boardData102.php, (2) boardData103.php, (3) boardDataJP.php, (4) boardDataNA.php, and (5) boardDataWW.php in Netgear
The '/common/download_agent_installer.php' script in the Quest KACE System Management Appliance 8.0.318 is accessible by
ProjectSend versions prior to r1720 are affected by an improper authentication vulnerability. Rated critical severity (C
Roundcube Webmail contains a critical PHP object deserialization vulnerability (CVE-2025-49113, CVSS 9.9) that allows au
Util/PHP/eval-stdin.php in PHPUnit before 4.8.28 and 5.x before 5.6.3 allows remote attackers to execute arbitrary PHP c
Palo Alto Networks PAN-OS management web interface contains an authentication bypass allowing unauthenticated attackers
Nagios XI version xi-5.7.5 is affected by OS command injection. Rated high severity (CVSS 8.8), this vulnerability is re
Nagios XI version xi-5.7.5 is affected by OS command injection. Rated high severity (CVSS 8.8), this vulnerability is re
The get_referers function in /opt/ws/bin/sblistpack in Sophos Web Appliance before 3.7.9.1 and 3.8 before 3.8.1.1 allows
The Backup Migration plugin for WordPress is vulnerable to Remote Code Execution in all versions up to, and including, 1
EUVD-2026-85331
GHSA-w998-qmw9-mf4m
NVD
CVE.org
EPSS
Vulnrichment
Exploit-DB