Skip to content
Heist/ feed
Back to feed
Medium

django CMS: Stored XSS in edit-mode plugin exception rendering

Type: advisorySources: OSV

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.

Products
Not specified
Affected versions
Not specified
Fixed versions
Not specified
CVEs
CVE-2026-75526
Confirmed fixed CVEs
Not specified
Updated in this feed
7 Nov 2026, 09:48 UTC · Revision 1

Source evidence

django CMS: Stored XSS in edit-mode plugin exception rendering

core-osv · Original source

Published 20 Aug 2026, 18:11 UTC

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.

osv:CVE-2026-75526
Complete source record
{
  "id": "2d60e950aec1a38dc5119a8e4e5987c7cbb495933a3e8a9c52e68ead14e7f1a5",
  "url": "https://osv.dev/vulnerability/CVE-2026-75526",
  "method": "structured",
  "payload": {
    "kind": "advisory",
    "title": "django CMS: Stored XSS in edit-mode plugin exception rendering",
    "summary": "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.",
    "evidence": "osv:CVE-2026-75526",
    "products": [],
    "severity": "medium",
    "structured": {
      "id": "CVE-2026-75526",
      "aliases": [
        "CVE-2026-75526",
        "GHSA-hvq6-2r72-p2x7",
        "PYSEC-2026-3825"
      ],
      "metrics": [
        {
          "type": "CVSS_V3",
          "score": "CVSS:3.1/AV:N/AC:H/PR:L/UI:R/S:C/C:L/I:L/A:N"
        }
      ],
      "affected": [
        {
          "ranges": [
            {
              "repo": "https://github.com/django-cms/django-cms",
              "type": "GIT",
              "events": [
                {
                  "introduced": "6da7840759c2b345a0e2fd4e796be001e681c6a4"
                },
                {
                  "fixed": "d7eeb6526bd757cfcdf28122066f39803990c5e4"
                },
                {
                  "fixed": "b56a568844ff3702495945f73a31d0868285bf88"
                }
              ],
              "database_specific": {
                "extracted_events": [
                  {
                    "range": [
                      {
                        "introduced": "5.0.8"
                      },
                      {
                        "fixed": "5.0.9"
                      }
                    ],
                    "source": "AFFECTED_FIELD",
                    "strategy": "StringRangeExpression"
                  },
                  {
                    "range": [
                      {
                        "fixed": "b56a568844ff3702495945f73a31d0868285bf88"
                      }
                    ],
                    "source": "REFERENCES_COMMIT"
                  },
                  {
                    "range": [
                      {
                        "fixed": "d7eeb6526bd757cfcdf28122066f39803990c5e4"
                      }
                    ],
                    "source": "REFERENCES_TAG",
                    "original_tag": "5.0.9"
                  }
                ]
              }
            }
          ],
          "versions": [
            "5.0.8"
          ],
          "database_specific": {
            "source": "https://storage.googleapis.com/cve-osv-conversion/osv-output/CVE-2026-75526.json"
          }
        }
      ],
      "modified": "2026-10-28T02:30:50.361137881Z",
      "provider": "osv",
      "references": [
        "https://github.com/django-cms/django-cms/releases/tag/5.0.9",
        "https://github.com/CVEProject/cvelistV5/tree/main/cves/2026/75xxx/CVE-2026-75526.json",
        "https://github.com/django-cms/django-cms/security/advisories/GHSA-hvq6-2r72-p2x7",
        "https://nvd.nist.gov/vuln/detail/CVE-2026-75526",
        "https://github.com/django-cms/django-cms/commit/b56a568844ff3702495945f73a31d0868285bf88",
        "https://github.com/django-cms/django-cms/pull/8711"
      ],
      "provider_metadata": {
        "cwe_ids": [
          "CWE-79"
        ],
        "cna_assigner": "GitHub_M",
        "osv_generated_from": "https://github.com/CVEProject/cvelistV5/tree/main/cves/2026/75xxx/CVE-2026-75526.json"
      }
    },
    "related_cves": [
      {
        "value": "CVE-2026-75526",
        "evidence": "/id"
      }
    ],
    "security_relevant": true,
    "severity_evidence": "/severity/0/score"
  },
  "source_id": "core-osv",
  "document_id": 518919,
  "published_at": "2026-08-20T18:11:10.22+00:00"
}