Description
django CMS is an easy-to-use and developer-friendly enterprise content management system powered by Django. From 5.0.8 until 5.0.9, ContentRenderer.render_placeholder in cms/plugin_rendering.py can pass stored, attacker-controlled values to ContentRenderer.render_exception when plugin rendering fails in edit mode. Values from get_short_description(), the exception message, the placeholder, or placeholder.source are interpolated into a cms-rendering-exception heading and later returned through mark_safe. Because the heading is not escaped, stored HTML executes in an editor’s browser, and settings.DEBUG does not prevent the custom heading from rendering. The fix uses format_html to escape the message before safe placeholder output is returned. This issue is fixed in versions 5.0.9.
Published: 2026-08-20
Score: 4.4 Medium
EPSS: < 1% Very Low
KEV: No
Impact: n/a
Action: n/a
AI Analysis

Impact

The vulnerability arises when plugin rendering fails in edit mode. The CMS passes attacker‑controlled data—including get_short_description(), the exception message, the placeholder, or the placeholder source—to the exception heading. Because the heading is inserted via mark_safe without escaping, stored HTML can execute in the editor’s browser, providing stored XSS under CWE‑79. An attacker can insert arbitrary script that will run whenever a user opens the editor, potentially capturing credentials or modifying the editing UI.

Affected Systems

Affecting the django‑cms framework, version 5.0.8 is vulnerable. The issue was fixed in 5.0.9; any deployments using 5.0.8 or earlier without the patch are at risk.

Risk and Exploitability

The CVSS score is 4.4, describing a medium‑severity flaw with limited impact, because the injection is only available when a plugin fails while a user is in edit mode. EPSS data is not available, so exploitation probability is uncertain, and the vulnerability is not listed in the CISA KEV catalog. The likely attack vector involves an authenticated user with edit permissions, who supplies malicious content to trigger the exception and inject code. Once executed, scripts run in the context of the editing interface, allowing the attacker to interact with the user’s session.

Generated by OpenCVE AI on August 21, 2026 at 01:38 UTC.

Remediation

No vendor fix or workaround currently provided.

OpenCVE Recommended Actions

  • Upgrade django‑cms to version 5.0.9 or later, which contains a format_html escape fix for exception headings.
  • Avoid using untrusted or custom plugins that could trigger rendering errors; keep plugins updated and validate their input to prevent exception generation.
  • If immediate upgrade is not possible ensure that error messages rendered in the editor are escaped by replacing mark_safe with format_html or Django's escape function in any custom rendering code.

Generated by OpenCVE AI on August 21, 2026 at 01:38 UTC.

Tracking

Sign in to view the affected projects.

Advisories
Source ID Title
Github GHSA Github GHSA GHSA-hvq6-2r72-p2x7 django CMS: Stored XSS in edit-mode plugin exception rendering
History

Thu, 20 Aug 2026 20:30:00 +0000

Type Values Removed Values Added
Metrics ssvc

{'options': {'Automatable': 'no', 'Exploitation': 'none', 'Technical Impact': 'partial'}, 'version': '2.0.3'}


Thu, 20 Aug 2026 20:00:00 +0000

Type Values Removed Values Added
First Time appeared Django-cms
Django-cms django Cms
Vendors & Products Django-cms
Django-cms django Cms

Thu, 20 Aug 2026 18:30:00 +0000

Type Values Removed Values Added
Description django CMS is an easy-to-use and developer-friendly enterprise content management system powered by Django. From 5.0.8 until 5.0.9, ContentRenderer.render_placeholder in cms/plugin_rendering.py can pass stored, attacker-controlled values to ContentRenderer.render_exception when plugin rendering fails in edit mode. Values from get_short_description(), the exception message, the placeholder, or placeholder.source are interpolated into a cms-rendering-exception heading and later returned through mark_safe. Because the heading is not escaped, stored HTML executes in an editor’s browser, and settings.DEBUG does not prevent the custom heading from rendering. The fix uses format_html to escape the message before safe placeholder output is returned. This issue is fixed in versions 5.0.9.
Title django CMS: Stored XSS in edit-mode plugin exception rendering
Weaknesses CWE-79
References
Metrics cvssV3_1

{'score': 4.4, 'vector': 'CVSS:3.1/AV:N/AC:H/PR:L/UI:R/S:C/C:L/I:L/A:N'}


Subscriptions

Django-cms Django Cms
cve-icon MITRE

Status: PUBLISHED

Assigner: GitHub_M

Published:

Updated: 2026-08-20T19:20:52.755Z

Reserved: 2026-08-17T20:49:21.600Z

Link: CVE-2026-75526

cve-icon Vulnrichment

Updated: 2026-08-20T19:20:49.377Z

cve-icon NVD

Status : Awaiting Analysis

Published: 2026-08-20T19:17:03.787

Modified: 2026-09-09T21:19:49.197

Link: CVE-2026-75526

cve-icon Redhat

No data.

cve-icon OpenCVE Enrichment

Updated: 2026-08-21T01:45:08Z

Weaknesses
  • CWE-79

    Improper Neutralization of Input During Web Page Generation ('Cross-site Scripting')