Skip to content

CVE-2017-7233 Django open redirect and possible XSS attack via user-supplied numeric redirect URLs

MediumCVSS 6.1 EPSS 2.4%
Published
Updated
Exploit status
No public exploit known

Description

Django 1.10 before 1.10.7, 1.9 before 1.9.13, and 1.8 before 1.8.18 relies on user input in some cases to redirect the user to an "on success" URL. The security check for these redirects (namely django.utils.http.is_safe_url()) considered some numeric URLs "safe" when they shouldn't be, aka an open redirect vulnerability. Also, 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.

Affected products

ProductAffected versionsFixed in
pypi django(PyPI) >= 1.10a1, < 1.10.7 1.10.7
pypi django(PyPI) = 1.10 No fix listed
pypi django(PyPI) = 1.10.1 No fix listed
pypi django(PyPI) = 1.10.2 No fix listed
pypi django(PyPI) = 1.10.3 No fix listed
pypi django(PyPI) = 1.10.4 No fix listed
pypi django(PyPI) = 1.10.5 No fix listed
pypi django(PyPI) = 1.10.6 No fix listed
pypi django(PyPI) = 1.10a1 No fix listed
pypi django(PyPI) = 1.10b1 No fix listed
pypi django(PyPI) = 1.10rc1 No fix listed
pypi django(PyPI) >= 1.9a1, < 1.9.13 1.9.13
pypi django(PyPI) = 1.9 No fix listed
pypi django(PyPI) = 1.9.1 No fix listed
pypi django(PyPI) = 1.9.10 No fix listed
pypi django(PyPI) = 1.9.11 No fix listed
pypi django(PyPI) = 1.9.12 No fix listed
pypi django(PyPI) = 1.9.2 No fix listed
pypi django(PyPI) = 1.9.3 No fix listed
pypi django(PyPI) = 1.9.4 No fix listed
pypi django(PyPI) = 1.9.5 No fix listed
pypi django(PyPI) = 1.9.6 No fix listed
pypi django(PyPI) = 1.9.7 No fix listed
pypi django(PyPI) = 1.9.8 No fix listed
pypi django(PyPI) = 1.9.9 No fix listed
Show 105 more
ProductAffected versionsFixed in
pypi django(PyPI) = 1.9a1 No fix listed
pypi django(PyPI) = 1.9b1 No fix listed
pypi django(PyPI) = 1.9rc1 No fix listed
pypi django(PyPI) = 1.9rc2 No fix listed
pypi django(PyPI) >= 1.8a1, < 1.8.18 1.8.18
pypi django(PyPI) = 1.8 No fix listed
pypi django(PyPI) = 1.8.1 No fix listed
pypi django(PyPI) = 1.8.10 No fix listed
pypi django(PyPI) = 1.8.11 No fix listed
pypi django(PyPI) = 1.8.12 No fix listed
pypi django(PyPI) = 1.8.13 No fix listed
pypi django(PyPI) = 1.8.14 No fix listed
pypi django(PyPI) = 1.8.15 No fix listed
pypi django(PyPI) = 1.8.16 No fix listed
pypi django(PyPI) = 1.8.17 No fix listed
pypi django(PyPI) = 1.8.2 No fix listed
pypi django(PyPI) = 1.8.3 No fix listed
pypi django(PyPI) = 1.8.4 No fix listed
pypi django(PyPI) = 1.8.5 No fix listed
pypi django(PyPI) = 1.8.6 No fix listed
pypi django(PyPI) = 1.8.7 No fix listed
pypi django(PyPI) = 1.8.8 No fix listed
pypi django(PyPI) = 1.8.9 No fix listed
pypi django(PyPI) = 1.8a1 No fix listed
pypi django(PyPI) = 1.8b1 No fix listed
pypi django(PyPI) = 1.8b2 No fix listed
pypi django(PyPI) = 1.8c1 No fix listed
pypi django(PyPI) >= 1.10, < 1.10.7 1.10.7
pypi django(PyPI) >= 1.9, < 1.9.13 1.9.13
pypi django(PyPI) >= 1.8, < 1.8.18 1.8.18
debian/python-django(Debian:12) < 1:1.10.7-1 1:1.10.7-1
debian/python-django(Debian:13) < 1:1.10.7-1 1:1.10.7-1
debian/python-django(Debian:14) < 1:1.10.7-1 1:1.10.7-1
djangoproject django = 1.8.0 No fix listed
djangoproject django = 1.8.0-a1 No fix listed
djangoproject django = 1.8.0-b1 No fix listed
djangoproject django = 1.8.0-b2 No fix listed
djangoproject django = 1.8.0-c1 No fix listed
djangoproject django = 1.8.1 No fix listed
djangoproject django = 1.8.2 No fix listed
djangoproject django = 1.8.3 No fix listed
djangoproject django = 1.8.4 No fix listed
djangoproject django = 1.8.5 No fix listed
djangoproject django = 1.8.6 No fix listed
djangoproject django = 1.8.7 No fix listed
djangoproject django = 1.8.8 No fix listed
djangoproject django = 1.8.9 No fix listed
djangoproject django = 1.8.10 No fix listed
djangoproject django = 1.8.11 No fix listed
djangoproject django = 1.8.12 No fix listed
djangoproject django = 1.8.13 No fix listed
djangoproject django = 1.8.14 No fix listed
djangoproject django = 1.8.15 No fix listed
djangoproject django = 1.8.16 No fix listed
djangoproject django = 1.8.17 No fix listed
djangoproject django = 1.9 No fix listed
djangoproject django = 1.9-a1 No fix listed
djangoproject django = 1.9-b1 No fix listed
djangoproject django = 1.9-rc1 No fix listed
djangoproject django = 1.9-rc2 No fix listed
djangoproject django = 1.9.1 No fix listed
djangoproject django = 1.9.2 No fix listed
djangoproject django = 1.9.3 No fix listed
djangoproject django = 1.9.4 No fix listed
djangoproject django = 1.9.5 No fix listed
djangoproject django = 1.9.6 No fix listed
djangoproject django = 1.9.7 No fix listed
djangoproject django = 1.9.8 No fix listed
djangoproject django = 1.9.9 No fix listed
djangoproject django = 1.9.10 No fix listed
djangoproject django = 1.9.11 No fix listed
djangoproject django = 1.9.12 No fix listed
djangoproject django = 1.10.0 No fix listed
djangoproject django = 1.10.0-a1 No fix listed
djangoproject django = 1.10.0-b1 No fix listed
djangoproject django = 1.10.0-rc1 No fix listed
djangoproject django = 1.10.1 No fix listed
djangoproject django = 1.10.2 No fix listed
djangoproject django = 1.10.3 No fix listed
djangoproject django = 1.10.4 No fix listed
djangoproject django = 1.10.5 No fix listed
djangoproject django = 1.10.6 No fix listed
alpine/py-django(Alpine:v3.10) < 1.10.7-r0 1.10.7-r0
alpine/py-django(Alpine:v3.2) < 1.8.18-r0 1.8.18-r0
alpine/py-django(Alpine:v3.3) < 1.8.18-r0 1.8.18-r0
alpine/py-django(Alpine:v3.4) < 1.8.18-r0 1.8.18-r0
alpine/py-django(Alpine:v3.5) < 1.8.18-r0 1.8.18-r0
alpine/py-django(Alpine:v3.6) < 1.10.7-r0 1.10.7-r0
alpine/py-django(Alpine:v3.7) < 1.10.7-r0 1.10.7-r0
alpine/py-django(Alpine:v3.8) < 1.10.7-r0 1.10.7-r0
alpine/py-django(Alpine:v3.9) < 1.10.7-r0 1.10.7-r0
alpine/py3-django(Alpine:v3.11) < 1.10.7-r0 1.10.7-r0
alpine/py3-django(Alpine:v3.12) < 1.10.7-r0 1.10.7-r0
alpine/py3-django(Alpine:v3.13) < 1.10.7-r0 1.10.7-r0
alpine/py3-django(Alpine:v3.14) < 1.10.7-r0 1.10.7-r0
alpine/py3-django(Alpine:v3.15) < 1.10.7-r0 1.10.7-r0
alpine/py3-django(Alpine:v3.16) < 1.10.7-r0 1.10.7-r0
alpine/py3-django(Alpine:v3.17) < 1.10.7-r0 1.10.7-r0
alpine/py3-django(Alpine:v3.18) < 1.10.7-r0 1.10.7-r0
alpine/py3-django(Alpine:v3.19) < 1.10.7-r0 1.10.7-r0
alpine/py3-django(Alpine:v3.20) < 1.10.7-r0 1.10.7-r0
alpine/py3-django(Alpine:v3.21) < 1.10.7-r0 1.10.7-r0
alpine/py3-django(Alpine:v3.22) < 1.10.7-r0 1.10.7-r0
alpine/py3-django(Alpine:v3.23) < 1.10.7-r0 1.10.7-r0
alpine/py3-django(Alpine:v3.24) < 1.10.7-r0 1.10.7-r0

References