Attack ChainAIDerived
Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain
-
AccessIdentify target Django app with UpdateCacheMiddleware active
-
DeliveryAuthenticated victim requests protected URL through shared cache
-
ExploitDjango omits Authorization from Vary header
-
ExecutionCache stores authenticated response keyed on URL only
-
PersistAttacker sends unauthenticated GET to same URL
-
ImpactCache returns victim's private response to attacker
Vulnerability Assessment
| Weakness |
CWE
ASVS 5.0
V3 - Web Frontend Security Cache-Control for sensitive pages
|
| Exploitation Conditions | Exploitation requires three concurrent conditions: (1) |
| Impact | The CVSS 4.0 score of 2.3 (Low) accurately reflects a real but narrowly scoped threat. Decomposing the vector: AV:N confirms network exploitability with no proximity requirement; AC:L indicates the attack mechanics themselves are straightforward; AT:P (Attack Requirements: Present) is the key limiting factor - a specific caching topology must exist; PR:N confirms no attacker privileges are needed; UI:P (User Interaction: Passive) means a legitimate authenticated user must first warm the cache entry. Impact is bounded at VC:L with no integrity or availability exposure. EPSS data was not provided in available intelligence, preventing probability-of-exploitation quantification. This CVE is not listed in the CISA KEV catalog and no public proof-of-concept exploit code has been identified, consistent with the low severity rating. The practical risk is meaningful specifically for deployments combining Django's cache middleware with shared reverse proxy or CDN infrastructure that respects |
| Exploit ScenarioDerived | An authenticated user requests |
Get an e-mail when this CVE is exploited, patched or re-scored. Free account.
Alert meAnalysisAIv1 – Jun 03, 2026
Cache information disclosure in Django 5.2.x and 6.0.x allows remote unauthenticated attackers to read private authenticated responses served from shared caching layers. The UpdateCacheMiddleware component omits Authorization from the Vary response header when authenticated requests lack an explicit Cache-Control: public directive, causing caches to serve authenticated users' responses to subsequent unauthenticated requestors at the same URL. No public exploit has been identified at time of analysis, and the CVSS 4.0 score of 2.3 reflects meaningful - but constrained - real-world impact gated behind specific deployment prerequisites.
RemediationAI
Upgrade to Django 5.2.15 or Django 6.0.6, the patched releases identified in the vendor security advisory at https://www.djangoproject.com/weblog/2026/jun/03/security-releases/ and indexed at https://docs.djangoproject.com/en/dev/releases/security/. Where immediate upgrade is not feasible, remove django.middleware.cache.UpdateCacheMiddleware (and its companion FetchFromCacheMiddleware) from the middleware stack entirely; this eliminates the vulnerability at the cost of Django-level response caching, which may increase backend load and must be evaluated for production impact. A more targeted compensating control is to add Cache-Control: no-store or Cache-Control: private to all responses serving authenticated content - this prevents caching of those responses by intermediary layers without disabling caching globally, though it requires careful auditing to ensure all sensitive endpoints are covered. Organizations relying on unsupported Django versions (5.0.x, 4.1.x, 3.2.x) should treat those branches as potentially affected and prioritize migration to a supported release.
Affected VersionsENISA
Affected Packages
Source: OSV (Open Source Vulnerabilities)
Affects your stack
Affects 1 package in pypi
Checking this CVE against your own stacks and servers is part of the Basic plan and up.
Technical ContextAI · show details
The vulnerability resides in django.middleware.cache.UpdateCacheMiddleware, part of Django's built-in caching framework. The HTTP Vary response header instructs shared caches - reverse proxies, CDNs, Varnish, nginx caching - to maintain distinct cache entries for requests that differ in the specified request headers. For resources served conditionally based on authentication, including Authorization in Vary ensures cache keys differentiate between authenticated and unauthenticated requests. CWE-524 (Use of Cache Containing Sensitive Information) precisely characterizes this class of flaw: sensitive data is committed to a shared cache without adequate key differentiation, enabling cross-user data leakage. The defect is specifically triggered when a request carries an Authorization header but does not include Cache-Control: public; in that path, Django's middleware omits Authorization from the outgoing Vary header. Affected CPE-identified products are Django 5.2.0 through 5.2.14 and 6.0.0 through 6.0.5. Earlier series including 5.0.x, 4.1.x, and 3.2.x were not evaluated by the Django project and may also carry this defect.
Know when Django gets its next vulnerability
- Watch products and get an email when something new is published
- Check this CVE against your own stack and servers
- Exploit and PoC references, threat intelligence from 22 sources
No credit card · 7-day full trial
Severity by source
CVSS:4.0/AV:N/AC:L/AT:P/PR:N/UI:P/VC:L/VI:N/VA:N/SC:N/SI:N/SA:N
Primary rating from Vendor (6a34fbeb-21d4-45e7-8e0a-62b95bc12c92) · only source for this CVE.
CVSS VectorVendor: 6a34fbeb-21d4-45e7-8e0a-62b95bc12c92
Lifecycle Timeline
1DescriptionCVE.org
An issue was discovered in Django 5.2 before 5.2.15 and 6.0 before 6.0.6. django.middleware.cache.UpdateCacheMiddleware in Django does not add Authorization to the Vary response header for requests bearing that header without Cache-Control: public, which allows remote attackers to read private cached responses via unauthenticated requests to the same URL. Earlier, unsupported Django series (such as 5.0.x, 4.1.x, and 3.2.x) were not evaluated and may also be affected. Django would like to thank Shai Berger for reporting this issue.
Blast Radius
ecosystem impact- 12 pypi packages depend on django (12 direct, 0 indirect)
Ecosystem-wide dependent count for version 5.2.
Threat Intelligence Overview
How this decision was reached
The engine reads each signal below and applies a fixed list of rules from top to bottom. The first rule that matches sets the recommended action – like a statement, every line is shown.
What every action level means
SSVC AssessmentENISA
Priority Score
Attack Technique
Information disclosure occurs when an application unintentionally exposes sensitive data that aids attackers in reconnaissance or directly compromises security.
The package python/cpython from 0 and before 3.6.13, from 3.7.0 and before 3.7.10, from 3.8.0 and before 3.8.8, from 3.9
In Django 1.10.x before 1.10.8 and 1.11.x before 1.11.5, HTML autoescaping was disabled in a portion of the template for
An issue was discovered in Django 3.2 before 3.2.14 and 4.0 before 4.0.6. Rated critical severity (CVSS 9.8), this vulne
Django 3.1.x before 3.1.13 and 3.2.x before 3.2.5 allows QuerySet.order_by SQL injection if order_by is untrusted input
Django before 1.11.27, 2.x before 2.2.9, and 3.x before 3.0.1 allows account takeover. Rated critical severity (CVSS 9.8
An authentication/authorization bypass in the djust Python live-view framework (versions prior to 1.0.7) lets unauthenti
Unauthenticated arbitrary Python module import in djust before 1.0.7 lets any client that can reach the WebSocket or SSE
Django 1.11 before 1.11.29, 2.2 before 2.2.11, and 3.0 before 3.0.4 allows SQL Injection if untrusted data is used as a
Cross-site scripting (XSS) vulnerability in the dismissChangeRelatedObjectPopup function in contrib/admin/static/admin/j
Forged content modification in django-page-cms through 2.0.13 lets unauthenticated remote attackers exploit five CSRF-ex
Cross-site request forgery in djust's Server-Sent-Events transport affects all versions prior to 1.0.7 and allows a cros
Unauthenticated remote attackers can read live Django view and session state and invoke server-side handlers through dju
EUVD-2026-34089
GHSA-qpc8-7fxc-cm4p
NVD
CVE.org
EPSS
Vulnrichment
VulDB
Exploit-DB