Skip to main content

REDAXO CMS EUVDEUVD-2026-85329

| CVE-2026-63001 MEDIUM
Cross-site Scripting (XSS) (CWE-79)
2026-09-23 https://github.com/redaxo/core GHSA-mf2p-wjp4-99pq
4.8
CVSS 3.1 · Vendor: https://github.com/redaxo/core
View

Attack ChainAIDerived

Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain

  1. Recon
    Authenticate as backend admin with Media Manager access
  2. Delivery
    Store XSS payload as effect type name
  3. Exploit
    Bind effect to target media file
  4. Install
    Victim admin clicks Delete on that file
  5. C2
    Unescaped name renders as HTML
  6. Execute
    Payload runs in victim session, exfiltrates cookies/CSRF token
  7. Impact
    Backend account 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

Requires the REDAXO Media Manager addon to be in use, and the attacker must already hold a backend administrator account with access to Media Manager to plant an XSS payload in an effect type's name field (the type-name validation at types.php:200 blocks {, /, \ but permits <, >, ", ', &). Exploitation additionally requires a second victim administrator (with Mediapool access) to actively click 'Delete' on a media file that is referenced by the poisoned effect - the payload only executes inside the 'media is in use' warning rendered during that deletion flow. These prerequisites (privileged planting account + victim-initiated deletion of a specifically-linked file) substantially limit real-world exploitability. Affected: REDAXO 5.x <= 5.21.1; fixed in 5.21.2.

Impact

This is a genuinely low-priority issue despite being a real, well-documented vulnerability. The provided CVSS 3.1 vector (AV:N/AC:L/PR:H/UI:R/S:C/C:L/I:L/A:N = 4.8) correctly captures a heavily-gated stored XSS: exploitation requires PR:H (an attacker who already holds a backend administrator account with Media Manager access to plant the payload) and UI:R (a second administrator must subsequently click 'Delete' on a media file referenced by the poisoned effect). The realistic threat is therefore admin-to-admin escalation/lateral movement, not external compromise - an attacker who can plant the payload is already a privileged backend user. No EPSS score, KEV listing, or SSVC decision data was provided in the input; per the precision rules this means no widespread-exploitation signal exists. A detailed proof-of-concept (DB-seeding commands, JPEG payload, step-by-step trigger, screenshot) IS published in the GitHub Security Advisory GHSA-mf2p-wjp4-99pq, so publicly available exploit code exists, but that is distinct from active exploitation, which is not confirmed. Net: a valid vulnerability worth patching in the normal cycle, but not an emergency - the PR:H + UI:R requirements and the niche product footprint keep real-world risk low.

Exploit ScenarioDerived

A malicious or compromised REDAXO backend administrator creates a Media Manager effect type whose name field contains an XSS payload (e.g. <img src=x onerror=...>), bound to an effect that references a specific media file. When any other administrator later attempts to delete that media file, REDAXO's 'in use' warning renders the unescaped type name as raw HTML and the payload executes in the victim's authenticated backend session, enabling session-cookie theft or CSRF-token extraction for full account takeover. A working proof-of-concept with seeding commands and trigger steps is published in the vendor advisory.

This Month Plan within 30 days. Why: MEDIUM severity (CVSS 4.0-6.9).
Patch available 0.2% exploitation probability (EPSS)

Get an e-mail when this CVE is exploited, patched or re-scored. Free account.

Alert me

AnalysisAIv1 – Sep 23, 2026

Stored cross-site scripting in REDAXO CMS 5.x (affecting versions up to and including 5.21.1) lets an authenticated backend administrator plant HTML/JavaScript in a Media Manager effect type's name field, which is later rendered unescaped inside the 'media is in use' warning shown when another administrator tries to delete a referenced media file. Successful exploitation requires a second, victim administrator to click the Delete button on a specifically referenced media item, after which the payload runs in the victim's backend session and can be used for session hijacking, credential harvesting, or CSRF-token theft leading to full backend account takeover. Rated CVSS 3.1 4.8 (AV:N/AC:L/PR:H/UI:R/S:C/C:L/I:L/A:N), this is a low-priority issue: it is not listed in CISA KEV and there is no evidence of active exploitation, though the vendor advisory publishes a full step-by-step proof-of-concept reproduction (publicly available exploit code exists). No EPSS score or in-the-wild telemetry was provided with this report.

RemediationAI

Upgrade REDAXO core to 5.21.2 or later (vendor-released patch: 5.21.2), which applies rex_escape() to the effect type name and to other unescaped values; the change is contained in PR https://github.com/redaxo/core/pull/6581 (commit 2daaa3a30570bc76a82f63fd21fb8c9c2cd5dc7c), and the advisory is at https://github.com/redaxo/core/security/advisories/GHSA-mf2p-wjp4-99pq. If immediate upgrade is not possible, the highest-value compensating control is to treat the type-name field as a trust boundary: audit existing rows in rex_media_manager_type and rename or remove any type whose name contains '<', '>', '"', '&' or apostrophes (side effect: renaming a type changes its display label and any references by name in workflows/templates, so verify Media Manager output afterwards), and restrict backend Media Manager privileges to a minimal set of trusted administrators since planting the payload requires the media_manager addon permission (this reduces but does not eliminate the second-administrator victim path). If Media Manager effects are not used, disabling or removing the media_manager addon eliminates the vulnerable code path entirely, at the cost of losing image resizing, watermarking and all media effect processing. Note that the victim still has to click Delete on a referenced media file for execution, so hardening browser-side session protection (HttpOnly/SameSite cookies, short admin session lifetimes) limits the post-exploitation impact of session theft but does not fix the underlying injection.

Affected VersionsENISA

core < 5.21.2

Affected Packages

composer redaxo/source fix: 5.21.2
euvd core fix: 5.21.2

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

The flaw is a classic CWE-79 output-encoding failure in REDAXO's media_manager addon. The handler in redaxo/src/addons/media_manager/lib/media_manager.php (function mediaIsInUse(), registered on the MEDIA_IS_IN_USE extension point in boot.php) queries media_manager effect rows whose parameters JSON references the filename being deleted, then builds an HTML anchor string using the effect type's name value directly with no rex_escape() call. That string is concatenated into the exception message raised by rex_media_service::deleteMedia() and rendered by rex_view::error() as raw HTML, so stored markup executes in the DOM of the reviewing administrator. The same addon demonstrates the intended safe pattern at types.php line 91 (rex_escape($list->getValue('name'))), and the associated upstream fix (PR #6581, commit 2daaa3a30570bc76a82f63fd21fb8c9c2cd5dc7c) adds rex_escape() across media_manager.php, effects.php, mediapool.php, sync.php, metainfo media_handler.php and phpmailer checkmail.php. The root cause is compounded by an input-validation gap: types.php line 200 validates the type name with NOT_MATCH '{[/\\]}', which blocks braces and slashes but permits '<', '>', '"' and '&' - precisely the characters needed to inject an element such as <img src=x onerror=...>. The affected package is composer/redaxo/source (CPE pkg:composer/redaxo_source), i.e. the REDAXO core distribution containing the media_manager addon.

Know when Redaxo 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

Vendor (https://github.com/redaxo/core) PRIMARY 4.8 MEDIUM
AV:N/AC:L/PR:H/UI:R/S:C/C:L/I:L/A:N
vuln.today AI 4.8 MEDIUM

PR:H because payload planting needs an admin Media Manager account; UI:R because a victim admin must click Delete; S:C as script escapes into the victim's authenticated session; C:L/I:L for cookie/token theft.

3.1 AV:N/AC:L/PR:H/UI:R/S:C/C:L/I:L/A:N
4.0 AV:N/AC:L/AT:N/PR:H/UI:A/VC:L/VI:L/VA:N/SC:N/SI:N/SA:N

Primary rating from Vendor (https://github.com/redaxo/core).

CVSS VectorVendor: https://github.com/redaxo/core

Attack Vector
Network
Attack Complexity
Low
Privileges Required
High
User Interaction
Required
Scope
Changed
Confidentiality
Low
Integrity
Low
Availability
None

DescriptionCVE.org

Summary

A stored cross-site scripting (XSS) vulnerability exists in REDAXO CMS 5.x. When an administrator attempts to delete a media file that is referenced by a Media Manager effect, the warning message rendered in the backend includes the type's name field without HTML escaping. An attacker with access to the Media Manager addon can store an XSS payload as a type name; the payload executes in the browser of any administrator who subsequently tries to delete a media file linked to that type's effects. This can lead to session hijacking and full backend account takeover.

---

Details

File: redaxo/src/addons/media_manager/lib/media_manager.php Function: mediaIsInUse() - registered on the MEDIA_IS_IN_USE extension point in boot.php

When rex_media_service::deleteMedia() is called, it invokes rex_mediapool::mediaIsInUse($filename), which fires the MEDIA_IS_IN_USE extension point. The media_manager addon's handler queries all effects whose parameters JSON contains the filename, then constructs an HTML anchor with the type name inserted verbatim:

php
// media_manager.php ~line 457  ← VULNERABLE
$message = '<a href="javascript:openPage(\'' . rex_url::backendPage(...) . '\')">'
    . rex_i18n::msg('media_manager') . ' '
    . rex_i18n::msg('media_manager_effect_name') . ': '
    . (string) $sql->getValue('name')   // ← NO rex_escape() call
    . '</a>';

The returned $message string is concatenated into the exception message thrown by deleteMedia() and rendered by rex_view::error() as raw HTML.

Contrast with the correct pattern used elsewhere in the same addon:

php
// types.php line 91  ← CORRECT
$name = '<b>' . rex_escape($list->getValue('name')) . '</b>';

Input validation gap: types.php line 200 validates the type name with the rule NOT_MATCH '{[/\\]}', which blocks {, /, and \ but permits <, >, ", ', and & - all characters required to inject HTML.

---

PoC

<img width="2074" height="1720" alt="image" src="https://github.com/user-attachments/assets/207f85d3-f4e2-4828-9211-8da36ec9c43d" />

Test environment: REDAXO 5.x running at http://localhost/ Account required: Any REDAXO backend administrator Test credentials: username admin / password Admin12345!

Step 1 - Seed test data directly into the database (single CMD command)
cmd
docker exec -i 34--core-5x-redaxo-1 php -r "$p=new PDO('mysql:host=db;dbname=redaxo','redaxo','redaxo');$p->exec(\"INSERT IGNORE INTO rex_media(category_id,attributes,filetype,filename,originalname,filesize,width,height,title,createdate,createuser,updatedate,updateuser) VALUES(0,'','image/jpeg','xss_test.jpg','xss_test.jpg',284,1,1,'XSS Test',NOW(),'admin',NOW(),'admin')\");$tid=$p->query(\"SELECT id FROM rex_media_manager_type WHERE name='<img src=x onerror=alert(document.domain)>'\")->fetchColumn();if(!$tid){$p->prepare(\"INSERT INTO rex_media_manager_type(status,name,description,createdate,createuser,updatedate,updateuser) VALUES(1,?,'poc',NOW(),'admin',NOW(),'admin')\")->execute(['<img src=x onerror=alert(document.domain)>']);$tid=$p->lastInsertId();}$p->prepare(\"INSERT IGNORE INTO rex_media_manager_type_effect(type_id,effect,parameters,priority,createdate,createuser,updatedate,updateuser) VALUES(?,'watermark',?,1,NOW(),'admin',NOW(),'admin')\")->execute([$tid,json_encode(['rex_effect_watermark'=>['watermark_image'=>'xss_test.jpg']])]);echo \"OK type_id=$tid\n\";"
Step 2 - Place a 1×1 JPEG in the media directory
cmd
docker exec 34--core-5x-redaxo-1 sh -c "printf '\xff\xd8\xff\xe0\x00\x10JFIF\x00\x01\x01\x00\x00\x01\x00\x01\x00\x00\xff\xdb\x00C\x00\x08\x06\x06\x07\x06\x05\x08\x07\x07\x07\t\t\x08\n\x0c\x14\r\x0c\x0b\x0b\x0c\x19\x12\x13\x0f\x14\x1d\x1a\x1f\x1e\x1d\x1a\x1c\x1c $.\' \",#\x1c\x1c(7),01444\x1f\x27=82<.342\x1e>\x1b\x1b123\x1e4\x1c\x1f\xff\xc0\x00\x0b\x08\x00\x01\x00\x01\x01\x01\x11\x00\xff\xc4\x00\x1f\x00\x00\x01\x05\x01\x01\x01\x01\x01\x01\x00\x00\x00\x00\x00\x00\x00\x00\x01\x02\x03\x04\x05\x06\x07\x08\t\n\x0b\xff\xda\x00\x08\x01\x01\x00\x00?\x00\xf5\x00\xff\xd9' > /var/www/html/media/xss_test.jpg"
Step 3 - Login to the backend

Open a browser and navigate to:

http://localhost/redaxo/index.php

Login with: admin / Admin12345!

Step 4 - Trigger the XSS

Navigate to the media file detail page:

http://localhost/redaxo/index.php?page=mediapool/media&file_id=1

Click the Delete button. REDAXO checks whether the file is in use, finds the Watermark effect whose parameters JSON references xss_test.jpg, and renders the type name in the warning HTML without escaping.

Result: The browser executes <img src=x onerror=alert(document.domain)> and an alert dialog showing the current domain appears immediately.

---

Impact

Vulnerability type: Stored Cross-Site Scripting (Stored XSS)

Who is impacted: Any backend administrator who attempts to delete a media file that is referenced by a Media Manager effect. A malicious administrator (or an attacker who has compromised any admin account) can pre-plant a payload in a type name. All other administrators who later try to delete affected media files will have the payload executed in their browser sessions.

Exploitability:

  • Privilege required to plant: Administrator (access to Media Manager addon)
  • Privilege required to trigger: Administrator (access to Mediapool)
  • User interaction required: Victim must click "Delete" on a media file

Realistic attack scenarios:

  • Session cookie theft via document.cookie exfiltration (leads to full account takeover)
  • Credential harvesting by dynamically replacing the login form
  • CSRF-token extraction to perform authenticated actions on behalf of the victim

---

Fix

Apply rex_escape() to the type name before concatenating it into the HTML anchor:

php
// media_manager.php - apply rex_escape() to the name value
$message = '<a href="javascript:openPage(\'' . rex_url::backendPage(...) . '\')">'
    . rex_i18n::msg('media_manager') . ' '
    . rex_i18n::msg('media_manager_effect_name') . ': '
    . rex_escape((string) $sql->getValue('name'))   // ← ADD rex_escape()
    . '</a>';

Threat Intelligence Overview

EPSS Score
0.2%
Top 93% exploitable
Prevalence
Low
REDAXO is a niche German open-source PHP CMS, limited enterprise footprint
Threat Intel
1
1 sources
Exploit
POC
Public exploit code exists
Data Quality
5 sources
Confidence: Medium
EUVD NVD CVE.org EPSS Vulnrichment GHSA GitHub

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.

SignalValue
Severity MEDIUM
CISA KEV No
Public POC Yes
EPSS 0.2%
Patch available Yes
Active threat No
Deciding rule
MEDIUM severity (CVSS 4.0-6.9)
What every action level means
Emergency Immediate action required. Criteria: CRITICAL + in CISA KEV (actively exploited) without patch, OR CRITICAL + EPSS > 30% without patch, OR CRITICAL + active threat signals without patch.
Act Now Prioritize within 24-48h. Criteria: in KEV with patch available, OR CRITICAL + public POC, OR HIGH + EPSS > 10%, OR CRITICAL + active threat, OR any CRITICAL severity.
This Week Schedule remediation this week. Criteria: HIGH severity (CVSS 7.0-8.9). Patch within normal change window.
This Month Plan within 30 days. Criteria: MEDIUM severity (CVSS 4.0-6.9), lower exploitation probability. Include in regular patch cycle.
Monitor Track and reassess. Criteria: LOW severity (CVSS 0.1-3.9), minimal exploitation risk. No immediate action needed.

SSVC AssessmentENISA

SSVC Decision· derived
Scheduled
Exploitation
None
System Exposure· derived
Open
Automatable
No
Human Impact· derived
Medium
Technical Impact
Partial

Priority Score

44
Low Medium High Critical
KEV: 0
EPSS: 0
CVSS: +24
PoC: +20
Weaponized: 0
Threat intel: 0
Gov advisory: 0

Attack Technique

Cross-Site Scripting occurs when an application accepts untrusted data and sends it to a web browser without proper validation or encoding.

Cross-Site Request Forgery exploits the automatic credential inclusion behavior of web browsers.

More in Redaxo

View all
CVE-2018-17831 CRITICAL POC
9.8 Oct 01

In REDAXO before 5.6.3, a critical SQL injection vulnerability has been discovered in the rex_list class because of the

CVE-2018-25353 HIGH POC
8.7 May 23

Redaxo CMS Mediapool Addon 5.5.1 and older contains an arbitrary file upload vulnerability that allows authenticated use

CVE-2026-53599 HIGH POC
7.5 Jul 31

Remote code execution in REDAXO CMS versions 5.18.2 through 5.21.0 is reachable by authenticated backend users with medi

CVE-2025-64050 HIGH POC
7.2 Nov 25

A Remote Code Execution (RCE) vulnerability in the template management component in REDAXO CMS 5.20.0 allows remote auth

CVE-2024-46213 HIGH POC
7.2 Oct 16

REDAXO CMS v2.11.0 was discovered to contain a remote code execution (RCE) vulnerability. Rated high severity (CVSS 7.2)

CVE-2024-25298 HIGH POC
7.2 Feb 17

An issue was discovered in REDAXO version 5.15.1, allows attackers to execute arbitrary code and obtain sensitive inform

CVE-2024-25301 HIGH POC
7.2 Feb 14

Redaxo v5.15.1 was discovered to contain a remote code execution (RCE) vulnerability via the component /pages/templates.

CVE-2021-39459 HIGH POC
7.2 Sep 09

Remote code execution in the modules component in Yakamara Media Redaxo CMS version 5.12.1 allows an authenticated CMS u

CVE-2016-20053 MEDIUM POC
6.9 Apr 04

Redaxo CMS 5.2 contains a cross-site request forgery vulnerability that allows unauthenticated attackers to create admin

CVE-2026-21857 MEDIUM POC
6.5 Jan 07

Arbitrary file disclosure in REDAXO's Backup addon allows authenticated users with backup permissions to read any file w

CVE-2021-39458 MEDIUM POC
6.5 Sep 09

Triggering an error page of the import process in Yakamara Media Redaxo CMS version 5.12.1 allows an authenticated CMS u

CVE-2025-27412 MEDIUM POC
6.1 Mar 05

REDAXO is a PHP-based CMS. Rated medium severity (CVSS 6.1), this vulnerability is remotely exploitable, no authenticati

This site uses cookies essential for authentication and security. No tracking or analytics cookies are used. Privacy Policy