Every CVE Search/ Get API key

CVE-2015-2317

Django cross-site scripting (XSS) attack via user-supplied redirect URLs

4.3 MediumFix available

CVE-2015-2317 is a medium vulnerability (CVSS 4.3) 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 4.97%, the 92nd percentile. Fixed in django 1.4.20.

The utils.http.is_safe_url function in Django before 1.4.20, 1.5.x, 1.6.x before 1.6.11, 1.7.x before 1.7.7, and 1.8.x before 1.8c1 does not properly validate URLs, which allows remote attackers to conduct cross-site scripting (XSS) attacks via a control character in a URL, as demonstrated by a \x08javascript: URL.

Exploit likelihood

4.97%Up 3.0 points since Feb 4, 2022
90%50%10%1%

What each source reports

NVD Score used 4.3

The utils.http.is_safe_url function in Django before 1.4.20, 1.5.x, 1.6.x before 1.6.11, 1.7.x before 1.7.7, and 1.8.x before 1.8c1 does not properly validate URLs, which allows remote attackers to conduct cross-site scripting (XSS) attacks via a control character in a URL, as demonstrated by a \x08javascript: URL.

Record
CVE-2015-2317
CVSS 2.0
4.3 MediumAV:N/AC:M/Au:N/C:N/I:P/A:N
Weakness
CWE-79
Updated
2026-11-02
CVE List No score

The utils.http.is_safe_url function in Django before 1.4.20, 1.5.x, 1.6.x before 1.6.11, 1.7.x before 1.7.7, and 1.8.x before 1.8c1 does not properly validate URLs, which allows remote attackers to conduct cross-site scripting (XSS) attacks via a control character in a URL, as demonstrated by a \x08javascript: URL.

Record
CVE-2015-2317
Updated
2026-11-02
EUVDEUVD-2015-0018 No score

The utils.http.is_safe_url function in Django before 1.4.20, 1.5.x, 1.6.x before 1.6.11, 1.7.x before 1.7.7, and 1.8.x before 1.8c1 does not properly validate URLs, which allows remote attackers to conduct cross-site scripting (XSS) attacks via a control character in a URL, as demonstrated by a \x08javascript: URL.

Record
EUVD-2015-0018
Updated
2026-11-03
GitHub AdvisoriesGHSA-7fq8-4pv5-5w5c 5.3

Django cross-site scripting (XSS) attack via user-supplied redirect URLs

The utils.http.is_safe_url function in Django before 1.4.20, 1.5.x, 1.6.x before 1.6.11, 1.7.x before 1.7.7, and 1.8.x before 1.8c1 does not properly validate URLs, which allows remote attackers to conduct cross-site scripting (XSS) attacks via a control character in a URL, as demonstrated by a \x08javascript: URL.

Record
GHSA-7fq8-4pv5-5w5c
CVSS 4.0
5.3 MediumCVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:P/VC:N/VI:N/VA:N/SC:L/SI:L/SA:N
CVSS 3.1
6.1 MediumCVSS:3.1/AV:N/AC:L/PR:N/UI:R/S:C/C:L/I:L/A:N
Weakness
CWE-79
Updated
2026-11-02
OSVGHSA-7fq8-4pv5-5w5c 5.3

Django cross-site scripting (XSS) attack via user-supplied redirect URLs

The utils.http.is_safe_url function in Django before 1.4.20, 1.5.x, 1.6.x before 1.6.11, 1.7.x before 1.7.7, and 1.8.x before 1.8c1 does not properly validate URLs, which allows remote attackers to conduct cross-site scripting (XSS) attacks via a control character in a URL, as demonstrated by a \x08javascript: URL.

Record
GHSA-7fq8-4pv5-5w5c
CVSS 4.0
5.3 MediumCVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:P/VC:N/VI:N/VA:N/SC:L/SI:L/SA:N
CVSS 3.1
6.1 MediumCVSS:3.1/AV:N/AC:L/PR:N/UI:R/S:C/C:L/I:L/A:N
Weakness
CWE-79
Updated
2026-11-02
OSV No score

The utils.http.is_safe_url function in Django before 1.4.20, 1.5.x, 1.6.x before 1.6.11, 1.7.x before 1.7.7, and 1.8.x before 1.8c1 does not properly validate URLs, which allows remote attackers to conduct cross-site scripting (XSS) attacks via a control character in a URL, as demonstrated by a \x08javascript: URL.

Record
CVE-2015-2317
Updated
2026-11-02
Show 10 moreShow less
OSVDEBIAN-CVE-2015-2317 No score

The utils.http.is_safe_url function in Django before 1.4.20, 1.5.x, 1.6.x before 1.6.11, 1.7.x before 1.7.7, and 1.8.x before 1.8c1 does not properly validate URLs, which allows remote attackers to conduct cross-site scripting (XSS) attacks via a control character in a URL, as demonstrated by a \x08javascript: URL.

Record
DEBIAN-CVE-2015-2317
Updated
2026-11-02
OSVMGASA-2015-0127 No score

Updated python-django packages fix security vulnerabilities

Updated python-django and python-django14 packages fix security vulnerabilities:

The ModelAdmin.readonly_fields attribute in the Django admin allows displaying model fields and model attributes. While the former were correctly escaped, the latter were not. Thus untrusted content could be injected into the admin, presenting an exploitation vector for XSS attacks (CVE-2015-2241).

Django relies on user input in some cases to redirect the user to an "on success" URL. The security checks for these redirects accepted URLs with leading control characters and so considered URLs like \x08javascript:... safe. This issue doesn't affect Django currently, however, if a developer relies on is_safe_url() to provide safe redirect targets and puts such a URL into a link, they could suffer from an XSS attack as some browsers such as Google Chrome ignore control characters at the start of a URL in an anchor href (CVE-2015-2317).

Note that the CVE-2015-2241 issue does not affect python-django14 directly, but client code using it may be affected. Please see the March 9th upstream advisory for more information on this.

Record
MGASA-2015-0127
Updated
2026-11-02
OSVPYSEC-2015-9 No score

The utils.http.is_safe_url function in Django before 1.4.20, 1.5.x, 1.6.x before 1.6.11, 1.7.x before 1.7.7, and 1.8.x before 1.8c1 does not properly validate URLs, which allows remote attackers to conduct cross-site scripting (XSS) attacks via a control character in a URL, as demonstrated by a \x08javascript: URL.

Record
PYSEC-2015-9
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:0694-1 No score

Security update for python-Django

python-Django has been updated to fix two vulnerabilities:

* URLs starting with control characters could have allowed XSS
  (cross-site-scripting) attacks via user-supplied redirect URLs
  (CVE-2015-2317)
* An infinite loop possibility could be triggered in the strip_tags()
  function, which allowed denial of service attacks (CVE-2015-2316)

Security Issues:

* CVE-2015-2316
  <http://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2015-2316>
* CVE-2015-2317
  <http://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2015-2317>
Record
SUSE-SU-2015:0694-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-2317 No score

The utils.http.is_safe_url function in Django before 1.4.20, 1.5.x, 1.6.x before 1.6.11, 1.7.x before 1.7.7, and 1.8.x before 1.8c1 does not properly validate URLs, which allows remote attackers to conduct cross-site scripting (XSS) attacks via a control character in a URL, as demonstrated by a \x08javascript: URL.

Record
UBUNTU-CVE-2015-2317
Updated
2026-11-02
OSVUSN-2539-1 No score

python-django vulnerabilities

Andrey Babak discovered that Django incorrectly handled strip_tags. A remote attacker could possibly use this issue to cause Django to enter an infinite loop, resulting in a denial of service. This issue only affected Ubuntu 14.04 LTS and Ubuntu 14.10. (CVE-2015-2316)

Daniel Chatfield 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-2317)

Record
USN-2539-1
Updated
2026-11-02

Affected products

Affected packages

Affected packages
PackageAffectedFixed
django
PyPI
before 1.4.20
1.4.20
django
PyPI
1.5 up to 1.6.11
1.6.11
django
PyPI
1.7 up to 1.7.7
1.7.7
django
PyPI
1.8a1 up to 1.8c1
1.8c1
python-django
Debian:12
before 1.7.7-1
1.7.7-1
python-django
Debian:13
before 1.7.7-1
1.7.7-1
python-django
Debian:14
before 1.7.7-1
1.7.7-1
python-django
Debian:6.0
before 1.2.3-3+squeeze13, plus listed versions
1.2.3-31.2.3-3+squeeze11.2.3-3+squeeze101.2.3-3+squeeze111.2.3-3+squeeze12
Show 7 moreShow less
1.2.3-3+squeeze21.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+squeeze13
python-django
Debian:7
before 1.4.5-1+deb7u11, plus listed versions
1.4.5-11.4.5-1+deb7u11.4.5-1+deb7u101.4.5-1+deb7u11~bpo60+11.4.5-1+deb7u2
Show 10 moreShow less
1.4.5-1+deb7u31.4.5-1+deb7u41.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+11.4.5-1+deb7u9
1.4.5-1+deb7u11
django
PyPI
before 1.4.20, plus listed versions
1.0.11.0.21.0.31.0.41.1
Show 40 moreShow less
1.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.181.4.191.4.21.4.31.4.41.4.51.4.61.4.71.4.81.4.9
1.4.20
Show 8 moreShow less
Affected packages
PackageAffectedFixed
django
PyPI
1.5 up to 1.6.11, plus listed versions
1.5.11.5.101.5.111.5.121.5.2
Show 18 moreShow less
1.5.31.5.41.5.51.5.61.5.71.5.81.5.91.61.6.11.6.101.6.21.6.31.6.41.6.51.6.61.6.71.6.81.6.9
1.6.11
django
PyPI
1.7 up to 1.7.7, plus listed versions
1.7.11.7.21.7.31.7.41.7.51.7.6
1.7.7
django
PyPI
1.8a1 up to 1.8c1, plus listed versions
1.8b11.8b2
1.8c1
python-django
Mageia:4
before 1.5.9-1.2.mga4
1.5.9-1.2.mga4
python-django14
Mageia:4
before 1.4.20-1.mga4
1.4.20-1.mga4
django
PyPI
before 1.4.20, 1.5 up to 1.6.11, 1.7 up to 1.7.7, 1.8a0 up to 1.8c1, plus listed versions
1.0.11.0.21.0.31.0.41.1
Show 45 moreShow less
1.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.181.4.191.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.2
1.4.201.6.111.7.71.8c1
python-Django
SUSE:Enterprise Storage 1.0
before 1.6.11-4.1
1.6.11-4.1
python-django
Ubuntu:14.04:LTS
before 1.6.1-2ubuntu0.8, plus listed versions
1.5.4-1ubuntu11.6-11.6.1-11.6.1-21.6.1-2ubuntu0.1
Show 5 moreShow less
1.6.1-2ubuntu0.21.6.1-2ubuntu0.31.6.1-2ubuntu0.41.6.1-2ubuntu0.51.6.1-2ubuntu0.6
1.6.1-2ubuntu0.8

History

History
WhenChangedSources
2026-11-03aliasesEUVD
2026-11-02createdCVE List, GitHub Advisories, NVD, OSV

References

Show 47 moreShow less
This page doesn't list everything

Left out here: 27 versions. The JSON record has them.

MoveEnter Open