CVE-2026-75526 django CMS: Stored XSS in edit-mode plugin exception rendering
Stored XSS in django CMS edit mode allows attackers to execute arbitrary scripts in an editor's browser via unescaped exception messages.
- Exploited in the wild
- Not known
- Login needed
- Any signed-in user
- Attackable
- Over the internet
- Victim action needed
- A user has to click or open something
- Fix
- Available
What is CVE-2026-75526?
CVE-2026-75526 is a medium-severity cross-site scripting vulnerability in django-cms, published on 20 Aug 2026. Any signed-in user can exploit it over the network, and only if a user opens a file or follows a link.
Official 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.
Weakness: CWE-79
Which versions are affected by CVE-2026-75526?
3 open source packages ship an affected version, including django-cms.
| Package | Affected | Fixed in |
|---|---|---|
django-cms PyPI | From 5.0.8 | 5.0.9 |
django-cms PyPI | From 5.0.8 | 5.0.9 |
django-cms PyPI | From 5.0.8 | 5.0.9 |
How do I fix CVE-2026-75526?
Upgrade django-cms to 5.0.9 or later.
Escape output for the context it lands in and set a strict Content Security Policy. Upgrading the affected component is the real fix. More about Cross-site scripting.
Is CVE-2026-75526 being exploited?
There is no known exploitation of CVE-2026-75526 in the wild and no public exploit code.
Sources
Also known as GHSA-hvq6-2r72-p2x7, PYSEC-2026-3825.