CVE-2026-48587: Django: has_vary_header may expose cached responses when Vary values contain whitespace
(updated )
An issue was discovered in Django 5.2 before 5.2.15 and 6.0 before 6.0.6.
django.utils.cache.has_vary_header() in Django does not strip leading or trailing whitespace from Vary response header values before comparison, which allows remote attackers to read cached responses via requests to URLs whose responses contain whitespace-padded Vary header values.
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 Navid Rezazadeh for reporting this issue.
References
- docs.djangoproject.com/en/dev/releases/security
- github.com/advisories/GHSA-923m-gv2p-w5qp
- github.com/django/django/commit/1721035a72624aad7b38dd19b14013efd94b24b8
- github.com/django/django/commit/42aa0b3364d312e7c6472258d8b0e9c0277fbf22
- github.com/django/django/commit/9b62b0af71a14c657d19d95371630ba839e83d9a
- github.com/pypa/advisory-database/tree/main/vulns/django/PYSEC-2026-198.yaml
- groups.google.com/g/django-announce
- nvd.nist.gov/vuln/detail/CVE-2026-48587
- www.djangoproject.com/weblog/2026/jun/03/security-releases
Code Behaviors & Features
Detect and mitigate CVE-2026-48587 with GitLab Dependency Scanning
Secure your software supply chain by verifying that all open source dependencies used in your projects contain no disclosed vulnerabilities. Learn more about Dependency Scanning →