Django 6.1.x Cache Key Collision via Vary Header
CVE-2026-113593 Published on November 3, 2026
Potential exposure of private data via empty and missing Vary headers
An issue was discovered in Django 6.1 before 6.1.3, 6.0 before 6.0.10, and 5.2 before 5.2.19.
The `django.middleware.cache.UpdateCacheMiddleware` and the `django.views.decorators.cache.cache_page()` decorator generate identical cache keys for requests that omit a header listed in the responses `Vary` header and requests that include that header with an empty value, potentially allowing remote attackers to access private data cached for another request.
Earlier, unsupported Django series (such as 5.1.x, 5.0.x, and 4.2.x) were not evaluated and may also be affected.
Django would like to thank Andrew Gonzalez for reporting this issue.
Timeline
Initial report received.
Vulnerability confirmed. 12 days later.
Security release issued. 26 days later.
Weakness Type
Use of Cache Containing Sensitive Information
The code uses a cache that contains sensitive information, but the cache can be read by an actor outside of the intended control sphere. Applications may use caches to improve efficiency when communicating with remote entities or performing intensive calculations. A cache maintains a pool of objects, threads, connections, pages, financial data, passwords, or other resources to minimize the time it takes to initialize and access these resources. If the cache is accessible to unauthorized actors, attackers can read the cache and obtain this sensitive information.
Products Associated with CVE-2026-113593
Want to know whenever a new CVE is published for Django Project Django? stack.watch will email you.
Affected Versions
djangoproject Django:- Version 6.1 and below 6.1.3 is affected.
- Version 6.1.3 is unaffected.
- Version 6.0 and below 6.0.10 is affected.
- Version 6.0.10 is unaffected.
- Version 5.2 and below 5.2.19 is affected.
- Version 5.2.19 is unaffected.