Skip to main content

Django CVE-2026-48588

| EUVDEUVD-2026-42043 LOW
Use of Cache Containing Sensitive Information (CWE-524)
2026-07-07 DSF GHSA-3h9f-r86x-qvjx
2.3
CVSS 4.0 · Vendor: DSF
View

Attack ChainAIDerived

Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain

  1. Access
    Identify Django app with shared cache
  2. Delivery
    Observe Vary: Cookie response headers
  3. Exploit
    Wait for victim to populate cache entry
  4. Execution
    Craft request with unrelated cookie
  5. Impact
    Retrieve victim's cached private response

Vulnerability Assessment

Weakness
CWE
ASVS 5.0
V3 - Web Frontend Security Cache-Control for sensitive pages
Exploitation Conditions

Three specific conditions must all be present: (1) the application must use Django's UpdateCacheMiddleware or apply the cache_page() decorator to a view, (2) those cached responses must vary on cookies, meaning they contain or are influenced by cookie-based user state and the Vary: Cookie header is in play, and (3) the cache backend must be a shared store (e.g., Memcached or Redis) accessible across multiple users or sessions rather than a per-user local-memory cache. Exploitation is also limited by the requirement that a legitimate user must have already populated the cache entry (UI:P in CVSS 4.0 terms). Applications that do not use Django's caching middleware or cache_page(), that use only anonymous/public caching, or that use per-user cache isolation are not affected. Authentication requirements are not applicable to the attacker - the CVSS vector PR:N indicates no privileges are needed to send the crafted request.

Impact

The CVSS 4.0 score of 2.3 is low primarily because of AT:P (specific attack requirements present) and UI:P (a victim user must have populated the cache first). The attack is only exploitable when all three conditions converge: the application uses UpdateCacheMiddleware or cache_page(), responses bear cookie-based Vary headers, and a shared cache backend (e.g., Memcached, Redis shared across users) is in use. Without these conditions the vulnerability is inert. EPSS data was not provided, so exploitation probability cannot be quantified beyond the structural signals. No KEV listing and no POC code are reported, consistent with the low score. Despite the low score, the real-world consequence when conditions are met is meaningful: an unauthenticated remote attacker can read private, personalized data (session content, user-specific API responses) intended for authenticated users. The risk is therefore highly deployment-dependent: Django applications serving only public, non-personalized content through caching are unaffected, while those caching authenticated or cookie-personalized responses on a shared backend face a genuine confidentiality breach.

Exploit ScenarioDerived

An attacker browses a Django application that caches authenticated user dashboard responses on a shared Memcached instance. A legitimate user makes a request that populates the cache with their private account data. The attacker then issues a crafted request carrying an arbitrary, unrelated cookie value - such as a tracking pixel cookie injected from a third-party site - which incorrectly matches the cache key and returns the legitimate user's private cached response. No POC code is publicly identified at time of analysis.

Monitor Track and reassess. Why: LOW severity (CVSS 0.1-3.9).
Patch available 0.4% exploitation probability (EPSS)

Get an e-mail when this CVE is exploited, patched or re-scored. Free account.

Alert me

AnalysisAIv1 – Jul 07, 2026

Cache poisoning in Django's UpdateCacheMiddleware and cache_page() decorator exposes private user data to unauthenticated remote attackers by incorrectly serving cached responses across different cookie contexts. Versions 6.0 before 6.0.7 and 5.2 before 5.2.16 are confirmed affected; older unsupported branches (5.0.x, 4.1.x, 3.2.x) were not evaluated but may share the flaw. No public exploit or CISA KEV listing exists at time of analysis, and the low CVSS 4.0 score of 2.3 reflects meaningful preconditions, though the data-disclosure consequence for applications serving personalized, cookie-gated content through a shared cache is concrete.

RemediationAI

The primary fix is upgrading to Django 6.0.7 or Django 5.2.16, both released on 2026-07-07 per the official advisory at https://www.djangoproject.com/weblog/2026/jul/07/security-releases/. For deployments that cannot immediately upgrade, the most effective compensating control is to disable caching for any view that produces cookie-personalized or user-private responses by removing cache_page() decorators and exempting those views from UpdateCacheMiddleware using the never_cache decorator, at the cost of losing caching benefits on those endpoints. Alternatively, switching from a shared cache backend to a per-user or per-session cache backend eliminates the cross-user collision risk. Deployments on unsupported branches (5.0.x, 4.1.x, 3.2.x) should treat this as a forcing function to upgrade to a supported series, as no patches will be issued for those versions.

Affected VersionsENISA

Django 5.2 <5.2.16
Django 6.0 <6.0.7

Affected Packages

pypi django fix: 5.2.16, 6.0.7

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

Django's caching framework uses the Vary header to differentiate cached entries by cookie values (CWE-524: Use of Cache-Containing Sensitive Information). When a response is decorated with cache_page() or processed by UpdateCacheMiddleware and it varies on cookies, the framework is supposed to serve only requests whose cookie set exactly matches the cache key. The defect causes responses to be cached or retrieved even when the incoming request carries unrelated cookies that do not influence the response content. This means a request with an extraneous, innocuous cookie can collide with or retrieve a cache entry that was originally populated for a different user or session, bypassing the intended cookie-based cache segmentation. The CPE cpe:2.3:a:djangoproject:django:*:*:*:*:*:*:*:* covers the full Django project; the vulnerability is purely a logic error in the Python caching middleware layer, not in any C extension or database driver.

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

Vendor (DSF) PRIMARY 2.3 MEDIUM
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
vuln.today AI 3.1 LOW

AC:H reflects the three-way prerequisite (caching middleware, cookie-Vary responses, shared backend); UI:R because a victim must populate the cache first; C:L for partial private data disclosure only.

3.1 AV:N/AC:H/PR:N/UI:R/S:U/C:L/I:N/A:N
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 (DSF).

CVSS VectorVendor: DSF

Attack Vector
Network
Attack Complexity
Low
Attack Requirements
Present
Privileges Required
None
User Interaction
Passive
Vulnerable system: Confidentiality
Low
Vulnerable system: Integrity
None
Vulnerable system: Availability
None
Subsequent system: Confidentiality
None
Subsequent system: Integrity
None
Subsequent system: Availability
None

Lifecycle Timeline

3
Patch available
Jul 07, 2026 - 16:01 EUVD
Severity Changed
Jul 07, 2026 - 15:22 NVD
MEDIUM LOW
CVSS changed
Jul 07, 2026 - 15:22 NVD
4.2 (MEDIUM) 2.3 (LOW)

DescriptionCVE.org

An issue was discovered in Django 6.0 before 6.0.7 and 5.2 before 5.2.16. UpdateCacheMiddleware and the cache_page() decorator cache responses that vary on cookies when the incoming request carries unrelated cookies, which allows remote attackers to read private data from the shared cache. 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 Chris Whyland for reporting this issue.

Blast Radius

ecosystem impact
† from your stack dependencies † transitive graph · vuln.today resolves 4-path depth
  • 12 pypi packages depend on django (12 direct, 0 indirect)

Ecosystem-wide dependent count for version 5.2.

Threat Intelligence Overview

EPSS Score
0.4%
Top 70% exploitable
Prevalence
High
Django is a dominant Python web framework across enterprise and startup deployments.
Social Media
3
Sightings
Data Quality
5 sources
Confidence: Medium

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.

SignalValue
Severity LOW
CISA KEV No
Public POC No
EPSS 0.4%
Patch available Yes
Active threat No
Deciding rule
LOW severity (CVSS 0.1-3.9)
What every action level means
Emergency Immediate action required. Criteria: CRITICAL + in CISA KEV (actively exploited) without patch, OR CRITICAL + EPSS > 30% without patch, OR CRITICAL + active threat signals without patch.
Act Now Prioritize within 24-48h. Criteria: in KEV with patch available, OR CRITICAL + public POC, OR HIGH + EPSS > 10%, OR CRITICAL + active threat, OR any CRITICAL severity.
This Week Schedule remediation this week. Criteria: HIGH severity (CVSS 7.0-8.9). Patch within normal change window.
This Month Plan within 30 days. Criteria: MEDIUM severity (CVSS 4.0-6.9), lower exploitation probability. Include in regular patch cycle.
Monitor Track and reassess. Criteria: LOW severity (CVSS 0.1-3.9), minimal exploitation risk. No immediate action needed.

SSVC AssessmentENISA

SSVC Decision· derived
Scheduled
Exploitation
None
System Exposure· derived
Open
Automatable
No
Human Impact· derived
High
Technical Impact
Partial

Priority Score

12
Low Medium High Critical
KEV: 0
EPSS: 0
CVSS: +12
PoC: 0
Weaponized: 0
Threat intel: 0
Gov advisory: 0

Attack Technique

Information disclosure occurs when an application unintentionally exposes sensitive data that aids attackers in reconnaissance or directly compromises security.

More in Django

View all
CVE-2021-23336 MEDIUM POC
5.9 Feb 15

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

CVE-2017-12794 MEDIUM POC
6.1 Sep 07

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

CVE-2022-34265 CRITICAL POC
9.8 Jul 04

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

CVE-2021-35042 CRITICAL POC
9.8 Jul 02

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

CVE-2019-19844 CRITICAL POC
9.8 Dec 18

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

CVE-2026-61594 CRITICAL POC
9.1 Sep 16

An authentication/authorization bypass in the djust Python live-view framework (versions prior to 1.0.7) lets unauthenti

CVE-2026-61599 HIGH POC
8.8 Sep 16

Unauthenticated arbitrary Python module import in djust before 1.0.7 lets any client that can reach the WebSocket or SSE

CVE-2020-9402 HIGH POC
8.8 Mar 05

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

CVE-2016-6186 MEDIUM POC
6.1 Aug 05

Cross-site scripting (XSS) vulnerability in the dismissChangeRelatedObjectPopup function in contrib/admin/static/admin/j

CVE-2026-93456 HIGH POC
8.4 Sep 18

Forged content modification in django-page-cms through 2.0.13 lets unauthenticated remote attackers exploit five CSRF-ex

CVE-2026-61593 HIGH POC
8.1 Sep 16

Cross-site request forgery in djust's Server-Sent-Events transport affects all versions prior to 1.0.7 and allows a cros

CVE-2026-61590 HIGH POC
7.4 Sep 16

Unauthenticated remote attackers can read live Django view and session state and invoke server-side handlers through dju

This site uses cookies essential for authentication and security. No tracking or analytics cookies are used. Privacy Policy