Vulnerability advisory
CVE-2026-3902
ASGI header spoofing via underscore/hyphen conflation
Also known as BIT-django-2026-3902GHSA-mvfq-ggxm-9mc5PYSEC-2026-51
Severity
- CVSS 3.x
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:H/A:N
Affected versions
Repository
| Affected commits | Fixed by commit |
|---|---|
| GIT github.com/django/django ↗ | |
| 97aa3b7f08f51669e118f3af5ca91026e39664c3 to before 3396992e837d5146270ea8112bb622c83fa4a919 | 3396992e837d5146270ea8112bb622c83fa4a919 |
| 9e7cc2b628fe8fd3895986af9b7fc9525034c1b0 to before 7d831a9eeb88a6bf484af7b56fe29596bdbf09a6 | 7d831a9eeb88a6bf484af7b56fe29596bdbf09a6 |
| 36b5f39d9372147f0e758f590e35ee2b2bc317dd to before 141e791f48592011b0f38fb30d44291e3ce74ee0 | 141e791f48592011b0f38fb30d44291e3ce74ee0 |
Also listed as affected (17)
| |
Description
An issue was discovered in 6.0 before 6.0.4, 5.2 before 5.2.13, and 4.2 before 4.2.30.
ASGIRequest allows a remote attacker to spoof headers by exploiting an ambiguous mapping of two header variants (with hyphens or with underscores) to a single version with underscores.
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 Tarek Nakkouch for reporting this issue.
References
- Webgithub.com/django/django/ ↗
- Advisorydocs.djangoproject.com/en/dev/releases/security/ ↗
- Advisorygithub.com/CVEProject/cvelistV5/tree/main/cves/2026/3xxx/CVE-2026-3902.json ↗
- Advisorynvd.nist.gov/vuln/detail/CVE-2026-3902 ↗
- Advisorywww.djangoproject.com/weblog/2026/apr/07/security-releases/ ↗
- Packagepypi.org/project/Django/ ↗
- ARTICLEgroups.google.com/g/django-announce ↗