Vulnerability advisory
CVE-2026-48587
Potential exposure of private data via whitespace padding in Vary header
Also known as BIT-django-2026-48587GHSA-923m-gv2p-w5qpPYSEC-2026-198
Severity
- CVSS 4.0
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
Affected versions
Repository
| Affected commits | Fixed by commit |
|---|---|
| GIT github.com/django/django ↗ | |
| 9e7cc2b628fe8fd3895986af9b7fc9525034c1b0 to before 21e98408f84d22191e2c7ee4052bdd12d264fd3f | 21e98408f84d22191e2c7ee4052bdd12d264fd3f |
| 36b5f39d9372147f0e758f590e35ee2b2bc317dd to before ee93f65169c280c9ab3d2ce103dd478c96d05065 | ee93f65169c280c9ab3d2ce103dd478c96d05065 |
Also listed as affected (21)
| |
Description
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
- Webgithub.com/django/django/ ↗
- Advisorydocs.djangoproject.com/en/dev/releases/security/ ↗
- Advisorygithub.com/CVEProject/cvelistV5/tree/main/cves/2026/48xxx/CVE-2026-48587.json ↗
- Advisorynvd.nist.gov/vuln/detail/CVE-2026-48587 ↗
- Advisorywww.djangoproject.com/weblog/2026/jun/03/security-releases/ ↗
- Packagepypi.org/project/Django/ ↗
- ARTICLEgroups.google.com/g/django-announce ↗