summaryrefslogtreecommitdiff
path: root/docs/releases/3.2.2.txt
diff options
context:
space:
mode:
authorMariusz Felisiak <felisiak.mariusz@gmail.com>2021-05-06 08:45:23 +0200
committerGitHub <noreply@github.com>2021-05-06 08:45:23 +0200
commite1e81aa1c4427411e3c68facdd761229ffea6f6f (patch)
tree6afff14e0eba2452db3add415e60fe0219aec75e /docs/releases/3.2.2.txt
parenta708f39ce67af174df90c5b5e50ad1976cec7cb8 (diff)
Fixed #32713, Fixed CVE-2021-32052 -- Prevented newlines and tabs from being accepted in URLValidator on Python 3.9.5+.
In Python 3.9.5+ urllib.parse() automatically removes ASCII newlines and tabs from URLs [1, 2]. Unfortunately it created an issue in the URLValidator. URLValidator uses urllib.urlsplit() and urllib.urlunsplit() for creating a URL variant with Punycode which no longer contains newlines and tabs in Python 3.9.5+. As a consequence, the regular expression matched the URL (without unsafe characters) and the source value (with unsafe characters) was considered valid. [1] https://bugs.python.org/issue43882 and [2] https://github.com/python/cpython/commit/76cd81d60310d65d01f9d7b48a8985d8ab89c8b4
Diffstat (limited to 'docs/releases/3.2.2.txt')
-rw-r--r--docs/releases/3.2.2.txt19
1 files changed, 17 insertions, 2 deletions
diff --git a/docs/releases/3.2.2.txt b/docs/releases/3.2.2.txt
index d47da08d6c..a899bc6e29 100644
--- a/docs/releases/3.2.2.txt
+++ b/docs/releases/3.2.2.txt
@@ -2,9 +2,24 @@
Django 3.2.2 release notes
==========================
-*Expected June 1, 2021*
+*May 6, 2021*
-Django 3.2.2 fixes several bugs in 3.2.1.
+Django 3.2.2 fixes a security issue and a bug in 3.2.1.
+
+CVE-2021-32052: Header injection possibility since ``URLValidator`` accepted newlines in input on Python 3.9.5+
+===============================================================================================================
+
+On Python 3.9.5+, :class:`~django.core.validators.URLValidator` didn't prohibit
+newlines and tabs. If you used values with newlines in HTTP response, you could
+suffer from header injection attacks. Django itself wasn't vulnerable because
+:class:`~django.http.HttpResponse` prohibits newlines in HTTP headers.
+
+Moreover, the ``URLField`` form field which uses ``URLValidator`` silently
+removes newlines and tabs on Python 3.9.5+, so the possibility of newlines
+entering your data only existed if you are using this validator outside of the
+form fields.
+
+This issue was introduced by the :bpo:`43882` fix.
Bugfixes
========