ASGI header spoofing via underscore/hyphen conflation
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.
- Products
- Not specified
- Affected versions
- Not specified
- Fixed versions
- Not specified
- CVEs
- CVE-2026-3902
- Confirmed fixed CVEs
- Not specified
- Updated in this feed
- 4 Nov 2026, 22:50 UTC · Revision 1
Source evidence
ASGI header spoofing via underscore/hyphen conflation
core-osv · Original sourcePublished 7 Apr 2026, 14:22 UTC
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.
osv:CVE-2026-3902
Complete source record
{
"id": "6656669bbc366231200c9f1ff16c9d789919d7ba2d5146fd872e2c9429f1d0c0",
"url": "https://osv.dev/vulnerability/CVE-2026-3902",
"method": "structured",
"payload": {
"kind": "advisory",
"title": "ASGI header spoofing via underscore/hyphen conflation",
"summary": "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.",
"evidence": "osv:CVE-2026-3902",
"products": [],
"severity": "high",
"structured": {
"id": "CVE-2026-3902",
"aliases": [
"BIT-django-2026-3902",
"CVE-2026-3902",
"GHSA-mvfq-ggxm-9mc5",
"PYSEC-2026-51"
],
"metrics": [
{
"type": "CVSS_V3",
"score": "CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:H/A:N"
}
],
"affected": [
{
"ranges": [
{
"repo": "https://github.com/django/django",
"type": "GIT",
"events": [
{
"introduced": "97aa3b7f08f51669e118f3af5ca91026e39664c3"
},
{
"fixed": "3396992e837d5146270ea8112bb622c83fa4a919"
},
{
"introduced": "9e7cc2b628fe8fd3895986af9b7fc9525034c1b0"
},
{
"fixed": "7d831a9eeb88a6bf484af7b56fe29596bdbf09a6"
},
{
"introduced": "36b5f39d9372147f0e758f590e35ee2b2bc317dd"
},
{
"fixed": "141e791f48592011b0f38fb30d44291e3ce74ee0"
}
],
"database_specific": {
"extracted_events": [
{
"cpe": "cpe:2.3:a:djangoproject:django:*:*:*:*:*:*:*:*",
"range": [
{
"introduced": "4.2"
},
{
"fixed": "4.2.30"
}
],
"source": "CPE_RANGE"
},
{
"cpe": "cpe:2.3:a:djangoproject:django:*:*:*:*:*:*:*:*",
"range": [
{
"introduced": "5.2"
},
{
"fixed": "5.2.13"
}
],
"source": "CPE_RANGE"
},
{
"cpe": "cpe:2.3:a:djangoproject:django:*:*:*:*:*:*:*:*",
"range": [
{
"introduced": "6.0"
},
{
"fixed": "6.0.4"
}
],
"source": "CPE_RANGE"
}
]
}
}
],
"versions": [
"5.2.12",
"6.0.3",
"5.2.11",
"6.0.2",
"6.0.1",
"5.2.10",
"6.0",
"5.2.9",
"5.2.8",
"5.2.7",
"5.2.6",
"5.2.5",
"5.2.4",
"5.2.3",
"5.2.2",
"5.2.1",
"5.2"
],
"database_specific": {
"source": "https://storage.googleapis.com/cve-osv-conversion/osv-output/CVE-2026-3902.json"
}
}
],
"modified": "2026-10-28T02:30:40.054321268Z",
"provider": "osv",
"references": [
"https://github.com/django/django/",
"https://docs.djangoproject.com/en/dev/releases/security/",
"https://github.com/CVEProject/cvelistV5/tree/main/cves/2026/3xxx/CVE-2026-3902.json",
"https://nvd.nist.gov/vuln/detail/CVE-2026-3902",
"https://www.djangoproject.com/weblog/2026/apr/07/security-releases/",
"https://pypi.org/project/Django/",
"https://groups.google.com/g/django-announce"
],
"provider_metadata": {
"cwe_ids": [
"CWE-290"
],
"cna_assigner": "DSF",
"osv_generated_from": "https://github.com/CVEProject/cvelistV5/tree/main/cves/2026/3xxx/CVE-2026-3902.json"
}
},
"related_cves": [
{
"value": "CVE-2026-3902",
"evidence": "/id"
}
],
"security_relevant": true,
"severity_evidence": "/severity/0/score"
},
"source_id": "core-osv",
"document_id": 507732,
"published_at": "2026-04-07T14:22:07.19+00:00"
}