django CMS: Page cache ignores plugin-declared Vary headers (disclosure & poisoning)
Key facts
- Attack vector
- Network
- Privileges required
- None
- User interaction
- None
- Attack complexity
- High
- Impact type
- —
- Confidentiality · integrity · availability
- Low · Low · None
- Fix status
- Fixed
Attack profile from CVSS 3.1 · CNA. Fix status from CNA and GitHub.
Summary
django CMS is a content management system powered by Django. Prior to 5.0.8 and in 5.1.0a1, the django CMS page cache in cms/cache/page.py ignores request headers declared by plugins through get_vary_cache_on(). The _page_cache_key function includes the cache prefix, site, language, path, and timezone but not the declared header values. Although set_page_cache adds those names to the response Vary header, get_page_cache retrieves the first stored variant under the same header-agnostic key. When CMS_PAGE_CACHE is enabled and a plugin varies content on a header such as Country-Code, one visitor can receive another visitor’s request-specific content, and an unauthenticated attacker can prime the cache with attacker-chosen content. This issue is fixed in versions 5.0.8 and 5.1.0.
Why it matters now
SSVC decision points
CISA ADP · SSVC 2.0.3
- Exploitation
- None
- Automatable
- No
- Technical impact
- Partial
The decision (Track, Attend, Act) also depends on your mission and well-being impact; see CISA's SSVC guide.
Affected products
| Vendor | Product | Affected versions | Fixed in | Status | Source |
|---|---|---|---|---|---|
| django-cms | django-cms | before 5.0.8; 5.1.0a1 to before 5.1.0 | 5.0.8, 5.1.0 | Patch available | CNA |
| — | django-cms (PyPI) | before 5.0.8 | 5.0.8 | Patch available | GHSA-fwjf-m4qw-9f2x |
- django-cms Vendordjango-cms Affected before 5.0.8; 5.1.0a1 to before 5.1.0 Fixed in 5.0.8, 5.1.0 Patch available CNA
- django-cms (PyPI) Vendor— Affected before 5.0.8 Fixed in 5.0.8 Patch available GHSA-fwjf-m4qw-9f2x
Remediation
- Fix · CNA django-cms (django-cms) Fixed in 5.0.8, 5.1.0
- Fix · GHSA-fwjf-m4qw-9f2x django-cms (PyPI) Fixed in 5.0.8 Advisory →
Timeline
- 2026-10-02 Threatist record created from CVE-2026-54625
- 2026-10-03 Alias added: GHSA-fwjf-m4qw-9f2x
References
Other 8
- https://github.com/django-cms/django-cms/security/advisories/GHSA-fwjf-m4qw-9f2x
- https://github.com/django-cms/django-cms/pull/8646
- https://github.com/django-cms/django-cms/pull/8647
- https://github.com/django-cms/django-cms/commit/8758714b865ffa79c6bcd0e5c503958ea48885aa
- https://github.com/django-cms/django-cms/commit/d5dc1efa18d157445491c4b12c2dd1efd56f439f
- https://github.com/django-cms/django-cms/releases/tag/5.0.8
- https://github.com/django-cms/django-cms/releases/tag/5.1.0
- https://github.com/django-cms/django-cms
More django-cms vulnerabilities
- TI-2024-10485 Stored XSS in Open Source Project "django-cms" CVSS 3.1MEDIUM 4.8
- TI-2026-44152 Authorization bypass in django-cms CVSS 3.1MEDIUM 4.3
- TI-2015-04262 Cross-site request forgery (CSRF) vulnerability in django CMS before 3.0.14, 3.1.x before… CVSS 3.0HIGH 8.8
- TI-2026-39454 django CMS: Plugin move endpoint allows cyclic reparenting (DoS) CVSS 3.1HIGH 7.1
- TI-2026-45004 Authorization bypass in django-cms CVSS 3.1MEDIUM 6.5
- TI-2026-39455 django CMS: Structure endpoint bypasses page-view permission CVSS 3.1MEDIUM 6.5
Sources
- CVE-2026-54625 · CVE Program
- CVE-2026-54625 · NVD
- FIRST EPSS
- GHSA-fwjf-m4qw-9f2x · GitHub Advisory Database · CC BY 4.0
This product uses the NVD API but is not endorsed or certified by the NVD. Sources and licences