Description
django-page-cms through 2.0.13 exempts five admin mutation views from CSRF protection in pages/admin/views.py, allowing attackers to forge requests that modify page content. Signed-in editors visiting a malicious page can be tricked into storing unescaped content that renders to all visitors, enabling stored cross-site scripting attacks.
Affected products
| Vendor | Product | Affected | Fixed |
|---|---|---|---|
| batiste | django-page-cms | ≤ 2.0.13 | — |
References
- GitHub Issue #244 issue-tracking
- https://github.com/batiste/django-page-cms product
- modify_content() is decorated @csrf_exempt, one of five admin mutation views at lines 20, 52, 79, 142 and 182 technical-description
- PlaceholderNode.get_render_content() wraps stored content in mark_safe() before rendering technical-description
- VulnCheck Advisory: django-page-cms through 2.0.13 CSRF via admin mutation views third-party-advisory