CVE-2015-0219
Django WSGI Header Spoofing Vulnerability
CVE-2015-0219 is a medium vulnerability (CVSS 5.0) in Djangoproject Django, published September 3, 2014. No source lists public exploit code. EPSS puts the chance of exploitation in the next 30 days at 6.97%, the 94th percentile. Fixed in django 1.4.18.
Django before 1.4.18, 1.6.x before 1.6.10, and 1.7.x before 1.7.3 allows remote attackers to spoof WSGI headers by using an _ (underscore) character instead of a - (dash) character in an HTTP header, as demonstrated by an X-Auth_User header.
Exploit likelihood
What each source reports
NVD Score used
5.0
Django before 1.4.18, 1.6.x before 1.6.10, and 1.7.x before 1.7.3 allows remote attackers to spoof WSGI headers by using an _ (underscore) character instead of a - (dash) character in an HTTP header, as demonstrated by an X-Auth_User header.
- Record
CVE-2015-0219- CVSS 2.0
- 5.0 Medium
AV:N/AC:L/Au:N/C:N/I:P/A:N - Weakness
- CWE-17
- Updated
- 2026-11-02
CVE List No score
Django before 1.4.18, 1.6.x before 1.6.10, and 1.7.x before 1.7.3 allows remote attackers to spoof WSGI headers by using an _ (underscore) character instead of a - (dash) character in an HTTP header, as demonstrated by an X-Auth_User header.
- Record
CVE-2015-0219- Updated
- 2026-11-02
EUVDEUVD-2015-0013 No score
Django before 1.4.18, 1.6.x before 1.6.10, and 1.7.x before 1.7.3 allows remote attackers to spoof WSGI headers by using an _ (underscore) character instead of a - (dash) character in an HTTP header, as demonstrated by an X-Auth_User header.
- Record
EUVD-2015-0013- Updated
- 2026-11-03
GitHub AdvisoriesGHSA-7qfw-j7hp-v45g
6.9
Django WSGI Header Spoofing Vulnerability
Django before 1.4.18, 1.6.x before 1.6.10, and 1.7.x before 1.7.3 allows remote attackers to spoof WSGI headers by using an _ (underscore) character instead of a - (dash) character in an HTTP header, as demonstrated by an X-Auth_User header.
- Record
GHSA-7qfw-j7hp-v45g- CVSS 4.0
- 6.9 Medium
CVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:N/VC:N/VI:L/VA:N/SC:N/SI:N/SA:N - CVSS 3.1
- 5.3 Medium
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:L/A:N - Weakness
- CWE-290
- Updated
- 2026-11-02
OSVGHSA-7qfw-j7hp-v45g
6.9
Django WSGI Header Spoofing Vulnerability
Django before 1.4.18, 1.6.x before 1.6.10, and 1.7.x before 1.7.3 allows remote attackers to spoof WSGI headers by using an _ (underscore) character instead of a - (dash) character in an HTTP header, as demonstrated by an X-Auth_User header.
- Record
GHSA-7qfw-j7hp-v45g- CVSS 4.0
- 6.9 Medium
CVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:N/VC:N/VI:L/VA:N/SC:N/SI:N/SA:N - CVSS 3.1
- 5.3 Medium
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:L/A:N - Weakness
- CWE-290
- Updated
- 2026-11-02
OSV No score
Django before 1.4.18, 1.6.x before 1.6.10, and 1.7.x before 1.7.3 allows remote attackers to spoof WSGI headers by using an _ (underscore) character instead of a - (dash) character in an HTTP header, as demonstrated by an X-Auth_User header.
- Record
CVE-2015-0219- Updated
- 2026-11-02
Show 13 moreShow less
OSVDEBIAN-CVE-2015-0219 No score
Django before 1.4.18, 1.6.x before 1.6.10, and 1.7.x before 1.7.3 allows remote attackers to spoof WSGI headers by using an _ (underscore) character instead of a - (dash) character in an HTTP header, as demonstrated by an X-Auth_User header.
- Record
DEBIAN-CVE-2015-0219- Updated
- 2026-11-02
OSVMGASA-2015-0026 No score
Updated python-django and python-django14 packages fix security vulnerabilities
Jedediah Smith discovered that Django incorrectly handled underscores in WSGI headers. A remote attacker could possibly use this issue to spoof headers in certain environments (CVE-2015-0219).
Mikko Ohtamaa discovered that Django incorrectly handled user-supplied redirect URLs. A remote attacker could possibly use this issue to perform a cross-site scripting attack (CVE-2015-0220).
Alex Gaynor discovered that Django incorrectly handled reading files in django.views.static.serve(). A remote attacker could possibly use this issue to cause Django to consume resources, resulting in a denial of service (CVE-2015-0221).
Keryn Knight discovered that Django incorrectly handled forms with ModelMultipleChoiceField. A remote attacker could possibly use this issue to cause a large number of SQL queries, resulting in a database denial of service. Note that this issue only affected python-django (CVE-2015-0222).
- Record
MGASA-2015-0026- Updated
- 2026-11-02
OSVopenSUSE-SU-2024:10206-1 No score
python-bjoern-1.4.2-1.23 on GA media
These are all security issues fixed in the python-bjoern-1.4.2-1.23 package on the GA media of openSUSE Tumbleweed.
- Record
openSUSE-SU-2024:10206-1- Updated
- 2026-11-02
OSVopenSUSE-SU-2024:11218-1 No score
python36-bjoern-3.1.0-1.8 on GA media
These are all security issues fixed in the python36-bjoern-3.1.0-1.8 package on the GA media of openSUSE Tumbleweed.
- Record
openSUSE-SU-2024:11218-1- Updated
- 2026-11-02
OSVopenSUSE-SU-2024:14133-1 No score
python310-bjoern-3.2.2-1.10 on GA media
These are all security issues fixed in the python310-bjoern-3.2.2-1.10 package on the GA media of openSUSE Tumbleweed.
- Record
openSUSE-SU-2024:14133-1- Updated
- 2026-11-02
OSVopenSUSE-SU-2026:12000-1 No score
python313-bjoern-3.2.2-2.6 on GA media
These are all security issues fixed in the python313-bjoern-3.2.2-2.6 package on the GA media of openSUSE Tumbleweed.
- Record
openSUSE-SU-2026:12000-1- Updated
- 2026-11-02
OSVPYSEC-2015-4 No score
Django before 1.4.18, 1.6.x before 1.6.10, and 1.7.x before 1.7.3 allows remote attackers to spoof WSGI headers by using an _ (underscore) character instead of a - (dash) character in an HTTP header, as demonstrated by an X-Auth_User header.
- Record
PYSEC-2015-4- Updated
- 2026-11-02
OSVSUSE-SU-2015:0563-1 No score
Security update for python-django
python-django was updated to 1.5.10 fixing bugs and security issues:
* Prevented reverse() from generating URLs pointing to other hosts to
prevent phishing attacks. (bnc#893087, CVE-2014-0480)
* Removed O(n) algorithm when uploading duplicate file names to fix
file upload denial of service. (bnc#893088, CVE-2014-0481)
* Modified RemoteUserMiddleware to logout on REMOTE_USE change to
prevent session hijacking. (bnc#893089, CVE-2014-0482)
* Prevented data leakage in contrib.admin via query string
manipulation. (bnc#893090, CVE-2014-0483)
Security Issues:
* CVE-2014-0480
<http://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2014-0480>
* CVE-2014-0481
<http://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2014-0481>
* CVE-2014-0482
<http://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2014-0482>
* CVE-2014-0483
<http://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2014-0483>
- Record
SUSE-SU-2015:0563-1- Updated
- 2026-11-02
OSVSUSE-SU-2015:0695-1 No score
Security update for python-django
python-django was updated to 1.5.10 fixing bugs and security issues:
* Prevented reverse() from generating URLs pointing to other hosts to
prevent phishing attacks. (bnc#893087, CVE-2014-0480)
* Removed O(n) algorithm when uploading duplicate file names to fix
file upload denial of service. (bnc#893088, CVE-2014-0481)
* Modified RemoteUserMiddleware to logout on REMOTE_USE change to
prevent session hijacking. (bnc#893089, CVE-2014-0482)
* Prevented data leakage in contrib.admin via query string
manipulation. (bnc#893090, CVE-2014-0483)
Security Issues:
* CVE-2014-0480
<http://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2014-0480>
* CVE-2014-0481
<http://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2014-0481>
* CVE-2014-0482
<http://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2014-0482>
* CVE-2014-0483
<http://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2014-0483>
- Record
SUSE-SU-2015:0695-1- Updated
- 2026-11-02
OSVSUSE-SU-2015:1109-1 No score
Security update for python-Django
python-django was updated to 1.6.11 to fix security issues and non-security bugs.
The following vulnerabilities were fixed:
- Made is_safe_url() reject URLs that start with control characters to mitigate possible XSS attack via user-supplied redirect URLs (bnc#923176, CVE-2015-2317)
- Fixed an infinite loop possibility in strip_tags() (bnc#923172, CVE-2015-2316)
- WSGI header spoofing via underscore/dash conflation (bnc#913053, CVE-2015-0219)
- Mitigated possible XSS attack via user-supplied redirect URLs
- Denial-of-service attack against
django.views.static.serve(bnc#913056, CVE-2015-0221) - Database denial-of-service with
ModelMultipleChoiceField(bnc#913055, CVE-2015-0222)
The update also contains fixes for non-security bugs, functional and stability issues.
- Record
SUSE-SU-2015:1109-1- Updated
- 2026-11-02
OSVSUSE-SU-2015:1112-1 No score
Security update for python-Django
python-django was updated to 1.6.11 to fix security issues and non-security bugs.
The following vulnerabilities were fixed:
- Made is_safe_url() reject URLs that start with control characters to mitigate possible XSS attack via user-supplied redirect URLs (bnc#923176, CVE-2015-2317)
- Fixed an infinite loop possibility in strip_tags() (bnc#923172, CVE-2015-2316)
- WSGI header spoofing via underscore/dash conflation (bnc#913053, CVE-2015-0219)
- Mitigated possible XSS attack via user-supplied redirect URLs
- Denial-of-service attack against
django.views.static.serve(bnc#913056, CVE-2015-0221) - Database denial-of-service with
ModelMultipleChoiceField(bnc#913055, CVE-2015-0222)
The update also contains fixes for non-security bugs, functional and stability issues.
- Record
SUSE-SU-2015:1112-1- Updated
- 2026-11-02
OSVUBUNTU-CVE-2015-0219 No score
Django before 1.4.18, 1.6.x before 1.6.10, and 1.7.x before 1.7.3 allows remote attackers to spoof WSGI headers by using an _ (underscore) character instead of a - (dash) character in an HTTP header, as demonstrated by an X-Auth_User header.
- Record
UBUNTU-CVE-2015-0219- Updated
- 2026-11-02
OSVUSN-2469-1 No score
python-django vulnerabilities
Jedediah Smith discovered that Django incorrectly handled underscores in WSGI headers. A remote attacker could possibly use this issue to spoof headers in certain environments. (CVE-2015-0219)
Mikko Ohtamaa discovered that Django incorrectly handled user-supplied redirect URLs. A remote attacker could possibly use this issue to perform a cross-site scripting attack. (CVE-2015-0220)
Alex Gaynor discovered that Django incorrectly handled reading files in django.views.static.serve(). A remote attacker could possibly use this issue to cause Django to consume resources, resulting in a denial of service. (CVE-2015-0221)
Keryn Knight discovered that Django incorrectly handled forms with ModelMultipleChoiceField. A remote attacker could possibly use this issue to cause a large number of SQL queries, resulting in a database denial of service. This issue only affected Ubuntu 14.04 LTS and Ubuntu 14.10. (CVE-2015-0222)
- Record
USN-2469-1- Updated
- 2026-11-02
Affected products
Affected packages
| Package | Affected | Fixed |
|---|---|---|
djangoPyPI |
before 1.4.18 | 1.4.18 |
djangoPyPI |
1.6 up to 1.6.10 | 1.6.10 |
djangoPyPI |
1.7 up to 1.7.3 | 1.7.3 |
python-djangoDebian:12 |
before 1.7.1-1.1 | 1.7.1-1.1 |
python-djangoDebian:13 |
before 1.7.1-1.1 | 1.7.1-1.1 |
python-djangoDebian:14 |
before 1.7.1-1.1 | 1.7.1-1.1 |
python-djangoDebian:6.0 |
before 1.2.3-3+squeeze12, plus listed versions 1.2.3-31.2.3-3+squeeze11.2.3-3+squeeze101.2.3-3+squeeze111.2.3-3+squeeze2 Show 6 moreShow less1.2.3-3+squeeze31.2.3-3+squeeze51.2.3-3+squeeze61.2.3-3+squeeze71.2.3-3+squeeze81.2.3-3+squeeze9 |
1.2.3-3+squeeze12 |
python-djangoDebian:7 |
before 1.4.5-1+deb7u9, plus listed versions 1.4.5-11.4.5-1+deb7u11.4.5-1+deb7u21.4.5-1+deb7u31.4.5-1+deb7u4 Show 7 moreShow less1.4.5-1+deb7u4~bpo60+11.4.5-1+deb7u51.4.5-1+deb7u61.4.5-1+deb7u71.4.5-1+deb7u7~bpo60+11.4.5-1+deb7u81.4.5-1+deb7u8~bpo60+1 |
1.4.5-1+deb7u9 |
djangoPyPI |
before 1.4.18, plus listed versions 1.0.11.0.21.0.31.0.41.1 Show 38 moreShow less1.1.11.1.21.1.31.1.41.21.2.11.2.21.2.31.2.41.2.51.2.61.2.71.31.3.11.3.21.3.31.3.41.3.51.3.61.3.71.41.4.11.4.101.4.111.4.121.4.131.4.141.4.151.4.161.4.171.4.21.4.31.4.41.4.51.4.61.4.71.4.81.4.9 |
1.4.18 |
djangoPyPI |
1.6 up to 1.6.10, plus listed versions 1.6.11.6.21.6.31.6.41.6.5 Show 4 moreShow less1.6.61.6.71.6.81.6.9 |
1.6.10 |
Show 9 moreShow less
| Package | Affected | Fixed |
|---|---|---|
djangoPyPI |
1.7 up to 1.7.3, plus listed versions 1.7.11.7.2 |
1.7.3 |
python-django14Mageia:4 |
before 1.4.18-1.1.mga4 | 1.4.18-1.1.mga4 |
python-djangoMageia:4 |
before 1.5.9-1.1.mga4 | 1.5.9-1.1.mga4 |
djangoPyPI |
before 1.4.18, 1.5 up to 1.6.10, 1.7 up to 1.7.3, plus listed versions 1.0.11.0.21.0.31.0.41.1 Show 45 moreShow less1.1.11.1.21.1.31.1.41.21.2.11.2.21.2.31.2.41.2.51.2.61.2.71.31.3.11.3.21.3.31.3.41.3.51.3.61.3.71.41.4.11.4.101.4.111.4.121.4.131.4.141.4.151.4.161.4.171.4.21.4.31.4.41.4.51.4.61.4.71.4.81.4.91.5.11.5.101.5.111.5.121.5.21.5.31.5.4 |
1.4.181.6.101.7.3 |
python-DjangoSUSE:Enterprise Storage 1.0 |
before 1.6.11-4.1 | 1.6.11-4.1 |
python-djangoUbuntu:14.04:LTS |
before 1.6.1-2ubuntu0.6, plus listed versions 1.5.4-1ubuntu11.6-11.6.1-11.6.1-21.6.1-2ubuntu0.1 Show 4 moreShow less1.6.1-2ubuntu0.21.6.1-2ubuntu0.31.6.1-2ubuntu0.41.6.1-2ubuntu0.5 |
1.6.1-2ubuntu0.6 |
python-bjoernopenSUSE:Tumbleweed |
before 1.4.2-1.23 | 1.4.2-1.23 |
python-bjoernopenSUSE:Tumbleweed |
before 3.2.2-1.10 | 3.2.2-1.10 |
python-bjoernopenSUSE:Tumbleweed |
before 3.2.2-2.6 | 3.2.2-2.6 |
History
| When | Changed | Sources |
|---|---|---|
| 2026-11-03 | aliases | EUVD |
| 2026-11-02 | created | CVE List, GitHub Advisories, NVD, OSV |
References
secunia.com/advisories/62718
lists.fedoraproject.org/pipermail/package-announce/2015-January/148608.html
mandriva.com/security/advisories?name=MDVSA-2015:036
lists.fedoraproject.org/pipermail/package-announce/2015-January/148696.html
secunia.com/advisories/62285
lists.opensuse.org/opensuse-updates/2015-09/msg00035.html
Show 54 moreShow less
djangoproject.com/weblog/2015/jan/13/security
ubuntu.com/usn/USN-2469-1
lists.opensuse.org/opensuse-updates/2015-04/msg00001.html
secunia.com/advisories/62309
mandriva.com/security/advisories?name=MDVSA-2015:109
advisories.mageia.org/MGASA-2015-0026.html
lists.fedoraproject.org/pipermail/package-announce/2015-January/148485.html
nvd.nist.gov/vuln/detail/CVE-2015-0219
github.com/django/django/commit/41b4bc73ee0da7b2e09f4af47fc1fd21144c710f
github.com/django/django/commit/4f6fffc1dc429f1ad428ecf8e6620739e8837450
github.com/django/django/commit/d7597b31d5c03106eeba4be14a33b32a5e25f4ee
github.com/django/daphne/blob/e49c39a4e5fac8ec170dd653641a9e90844fd3f1/daphne/http_protocol.py
web.archive.org/web/20150128111656/http://secunia.com/advisories/62285
web.archive.org/web/20150128111656/http://secunia.com/advisories/62309
web.archive.org/web/20150523054951/http://www.mandriva.com/en/support/security/advisories/advisory/MDVSA-2015:109?name=MDVSA-2015:109
web.archive.org/web/20150523054953/http://www.mandriva.com/en/support/security/advisories/advisory/MDVSA-2015:036?name=MDVSA-2015:036
web.archive.org/web/20151104201446/http://secunia.com/advisories/62718
github.com/pypa/advisory-database/tree/main/vulns/django/PYSEC-2015-4.yaml
github.com/advisories/GHSA-7qfw-j7hp-v45g
security-tracker.debian.org/tracker/CVE-2015-0219
github.com/django/django
bugs.mageia.org/show_bug.cgi?id=15045
ubuntu.com/usn/usn-2469-1
suse.com/support/update/announcement/2015/suse-su-20150563-1
bugzilla.suse.com/893087
bugzilla.suse.com/893088
bugzilla.suse.com/893089
bugzilla.suse.com/893090
bugzilla.suse.com/913053
bugzilla.suse.com/913054
bugzilla.suse.com/913055
bugzilla.suse.com/913056
bugzilla.suse.com/914706
bugzilla.suse.com/923176
suse.com/security/cve/CVE-2014-0480
suse.com/security/cve/CVE-2014-0481
suse.com/security/cve/CVE-2014-0482
suse.com/security/cve/CVE-2014-0483
suse.com/security/cve/CVE-2015-0219
suse.com/security/cve/CVE-2015-0220
suse.com/security/cve/CVE-2015-0221
suse.com/security/cve/CVE-2015-0222
suse.com/security/cve/CVE-2015-2316
suse.com/security/cve/CVE-2015-2317
suse.com/support/update/announcement/2015/suse-su-20150695-1
suse.com/support/update/announcement/2015/suse-su-20151109-1
bugzilla.suse.com/923172
suse.com/support/update/announcement/2015/suse-su-20151112-1
ubuntu.com/security/CVE-2015-0219
ubuntu.com/security/notices/USN-2469-1
cve.org/CVERecord?id=CVE-2015-0219
ubuntu.com/security/CVE-2015-0220
ubuntu.com/security/CVE-2015-0221
ubuntu.com/security/CVE-2015-0222
Left out here: 17 versions. The JSON record has them.