GitHub Advisoryadvisory · PyPI
GHSA-8qj2-c6q4-f399 django CMS: Missing authorization in `render_object_structure` discloses non-PageContent placeholder structure to low-privileged staff
MEDIUM
Official page ↗
- Aliases
- CVE-2026-61663
- Ecosystem
- PyPI
- Packages
- django-cms
- Severity
- Moderate
- CVSS vector
- CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:L/I:N/A:N
- Weaknesses
- CWE-639, CWE-862
- Reviewed
- 2026-08-20
Affected packages
• PyPI django-cms: < 5.0.9 → fixed in 5.0.9
Description
Summary
The django-cms frontend-editing structure endpoint
```
GET //admin/cms/placeholder/object//structure//
```
did not perform an object-level authorization check for non-`PageContent` objects. Any authenticated, active staff user could request the structure endpoint for a frontend-editable object (a model using `PlaceholderRelationField`) and read its placeholder/plugin structure, even without permission to change that object and without the `cms.use_structure` permission that the toolbar UI requires before offering structure mode.
`PageContent` objects were already protected (a page-view check added in GHSA/PR #8644); this advisory covers the remaining non-`PageContent` branch of the same view.
Severity
The issue is staff-gated and read-only, disclosing CMS structure metadata (placeholder slot names, plugin tree, plugin identifiers/labels, object existence) rather than write access or arbitrary field data.
Affected versions
• django-cms `>= 4.0.0, "'
After fix: HTTP 404, structure not disclosed
```
Patch
`render_object_structure` now authorizes the non-`PageContent` branch, mirroring
`Placeholder.has_change_permission` at the object level (honouring a custom
`has_placeholder_change_permission` hook, otherwise falling back to the model/object
change permission) and returning `404` when the user is not authorized:
```python
else:
content_type_obj = content_type.get_object_for_this_type(pk=object_id)
if not _can_change_placeholder_object(request.user, content_type_obj):
raise Http404
```
Workarounds
No configuration workaround. Deployments that do not register any non-`PageContent`
frontend-editable model are not affected. Otherwise, upgrade to a patched release.
Credit
Reported by doanmanhducz.
Related
Alias · CVE (1)
- CVE-2026-61663 django CMS is an easy-to-use and developer-friendly enterprise content management system powered by Django. vulnerability
References
- https://github.com/django-cms/django-cms/security/advisories/GHSA-8qj2-c6q4-f399 web
- https://github.com/django-cms/django-cms/pull/8703 web
- https://github.com/django-cms/django-cms/commit/9c82abfeb25471583e23906ea1ebef9202527b04 web
- https://github.com/django-cms/django-cms package
- https://github.com/django-cms/django-cms/releases/tag/5.0.9 web