Zum Inhalt springen
← Zurück zum Cyberlagebild
Zuletzt aktualisiert 24.08.2026 20:46

django CMS: Plugin move endpoint allows cyclic reparenting (DoS)

CVSS 7.12 Quellen

Beschreibung

### Zusammenfassung Der `move plugin` Admin-Endpunkt verhindert nicht, dass ein Plugin unter sich selbst oder einem seiner eigenen Nachkommen reparented wird. Dadurch wird ein Zyklus im Plugin-Baum erstellt, nach dem die rekursive Abkömmlings- / Vorfahren-SQL-Abfragenschleife ohne Beendigung den Request-Worker blockiert. ### Details `move plugin` (in `cms/admin/placeholderadmin.py`) akzeptiert einen `plugin parent`-POST-Parameter und setzt für einen In-Placeholder-Move den Elternteil des Plugins ohne Zyklus-/Vorgänger-Check auf das Ziel. Wenn der Ziel-Elternteil ein Nachkomme des verschobenen Plugins ist, enthält das resultierende 'parent id'-Graph einen Zyklus. Descendant und ancestor traversal werden mit `WITH RECURSIVE` CTEs (` get descendants cte` / ` get ancestors cte` in `cms/models/pluginmodel.py`) implementiert, die keine Zyklusklausel oder Tiefenbegrenzung haben. Auf einem zyklischen Baum rekursieren diese auf unbestimmte Zeit (PostgreSQL/SQLite) oder Fehler am Rekursionslimit (MySQL). `get descendants()` wird beim Aufbau der Move Response und bei nachfolgenden Operationen auf dem betroffenen Subtree aufgerufen. ### Auswirkungen Ein authentifizierter Mitarbeiterbenutzer mit der Erlaubnis, Plugins in mindestens einem Platzhalter zu ändern, kann den Plugin-Baum dieses Platzhalters beschädigen, was dazu führt, dass Anforderungen, die ihn durchqueren (Rendern, Kopieren, Löschen), Anwendungsarbeiter hängen und verbrauchen (Denial of Service). Der Baum bleibt auch in einem verdorbenen Zustand. Erfordert `CMS PERMISSION`/plugin-change permission auf einem Platzhalter. Patches Fixed in 5.0.8: `move plugin` lehnt jetzt (HTTP 400) jede Bewegung ab, die ein Plugin in sich selbst oder einen seiner Nachkommen vor einer Baummutation oder Traversal platzieren würde. ### Workarounds Keine. Upgrade wird empfohlen. ### Credits Gemeldet vom Sicherheitsteam der University of Sydney ([@reporter]).

Hersteller
Produktdjango-cms
Produktfamiliepip
Betroffene Versionen< 5.0.8
Behobene Versionen5.0.8

Quellen & weiterführende Informationen

Hier werden ausschließlich tatsächlich zu dieser Schwachstelle gespeicherte Quellenbelege angezeigt.

Was ist zur Behebung zu tun?

Auf eine behobene Version aktualisieren: 5.0.8.

PrioritätGelb
EinordnungZeitnah behandeln: hohes technisches Risiko.

Empfohlene Schritte

  • Betroffene Systeme identifizieren: django-cms.
  • Exposition prüfen: Internet-Erreichbarkeit, Admin-Oberflächen, VPN, Mail- oder Webdienste.
  • Update/Rollout auf behobene Version vorbereiten und priorisiert einspielen.
  • Nacharbeiten dokumentieren: betroffene Assets, Maßnahme, Zeitpunkt, Restrestrisiko.

Übergangsmaßnahmen

  • Zugriff auf betroffene Dienste auf vertrauenswürdige Netze einschränken.
  • WAF/IDS/EDR-Regeln und Hersteller-IOCs aktivieren, sofern verfügbar.
  • Nicht benötigte Funktionen, Plugins oder Dienste temporär deaktivieren.