<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:webfeeds="http://webfeeds.org/rss/1.0"><channel><title>Django CMS (5.0.x) - CraftedSignal Threat Feed</title><link>https://feed.craftedsignal.io/products/django-cms-5.0.x/</link><description>Trending threats, MITRE ATT&amp;CK coverage, and detection metadata. Fed continuously.</description><generator>Hugo</generator><language>en</language><managingEditor>hello@craftedsignal.io</managingEditor><webMaster>hello@craftedsignal.io</webMaster><lastBuildDate>Mon, 24 Aug 2026 21:57:51 +0000</lastBuildDate><atom:link href="https://feed.craftedsignal.io/products/django-cms-5.0.x/feed.xml" rel="self" type="application/rss+xml"/><image><url>https://feed.craftedsignal.io/favicon-32x32.png</url><title>CraftedSignal Threat Feed</title><link>https://feed.craftedsignal.io/</link><width>32</width><height>32</height></image><webfeeds:icon>https://feed.craftedsignal.io/favicon.svg</webfeeds:icon><item><title>Denial of Service via Cyclic Plugin Reparenting in django CMS</title><link>https://feed.craftedsignal.io/briefs/2026-08-django-cms-dos/</link><pubDate>Mon, 24 Aug 2026 21:57:51 +0000</pubDate><author>hello@craftedsignal.io</author><guid isPermaLink="true">https://feed.craftedsignal.io/briefs/2026-08-django-cms-dos/</guid><description>An authenticated user with plugin-change permissions can exploit the move_plugin endpoint in django CMS to create cyclic tree structures, causing resource exhaustion and denial of service during recursive SQL operations.</description><content:encoded><![CDATA[<p>The django CMS application is vulnerable to a denial-of-service (DoS) condition stemming from an improper validation of the <code>move_plugin</code> administrative endpoint (CVE-2026-54623). An authenticated user with sufficient permissions to modify plugins can purposefully move a plugin to be a child of one of its own descendants. Because the underlying recursive SQL queries used to calculate ancestors and descendants lack cycle detection or recursion depth limits, this creates an infinite loop in the database worker process. This vulnerability affects django CMS versions prior to 5.0.8. When an attacker induces this state, any subsequent request attempting to render, copy, or delete the affected plugin tree will hang, leading to application worker exhaustion and potential service outage.</p>
<h2 id="attack-chain">Attack Chain</h2>
<ol>
<li>Attacker authenticates to the django CMS dashboard with staff-level permissions.</li>
<li>Attacker identifies a target plugin tree within a placeholder.</li>
<li>Attacker triggers the <code>move_plugin</code> functionality via the administrative interface.</li>
<li>Attacker sends a specially crafted POST request to <code>move_plugin</code> with the <code>plugin_parent</code> parameter targeting a child or descendant of the currently moved plugin.</li>
<li>The application backend accepts the request without validating the cyclic dependency.</li>
<li>The backend updates the database, setting the <code>parent_id</code> and creating a closed-loop structure in the plugin tree.</li>
<li>Attacker triggers a legitimate action (e.g., viewing the page, editing the tree) that calls <code>get_descendants()</code> or <code>get_ancestors()</code>.</li>
<li>The database engine executes an unconstrained <code>WITH RECURSIVE</code> CTE, causing the application thread to hang and eventually exhausting worker capacity (DoS).</li>
</ol>
<h2 id="impact">Impact</h2>
<p>Successful exploitation results in a persistent denial-of-service condition for the affected placeholder. The application becomes unresponsive for any administrative or front-end operation involving the corrupted plugin tree. The vulnerability requires authenticated access, limiting the scope to internal users or accounts with plugin-change permissions; however, it allows for targeted service disruption within the CMS environment.</p>
<h2 id="recommendation">Recommendation</h2>
<p>Prioritized actions for detection and mitigation:</p>
<ul>
<li>Patch the django CMS installation to version 5.0.8 or later to incorporate the required cycle validation logic in the <code>move_plugin</code> endpoint.</li>
<li>Audit logs for administrative users performing high-frequency or anomalous <code>move_plugin</code> POST requests that might indicate attempts to manipulate the plugin tree structure.</li>
<li>Monitor application web server logs for HTTP 500 or timeout errors occurring specifically during administrative plugin operations, which may indicate the presence of cyclic tree corruption.</li>
<li>Restrict <code>CMS_PERMISSION</code> and plugin-change permissions to a minimal set of trusted administrative accounts to reduce the threat surface.</li>
</ul>
]]></content:encoded><category domain="severity">medium</category><category domain="type">advisory</category></item></channel></rss>