Refs CVE-2021-23336 -- Updated tests and release notes for affected versions.

This commit is contained in:
Nick Pope 2021-02-16 10:14:17 +00:00 committed by Carlton Gibson
parent 96a5093400
commit 0ad9fa02e0
6 changed files with 49 additions and 6 deletions

16
docs/releases/2.2.19.txt Normal file
View File

@ -0,0 +1,16 @@
===========================
Django 2.2.19 release notes
===========================
*February 19, 2021*
Django 2.2.19 fixes a security issue in 2.2.18.
CVE-2021-23336: Web cache poisoning via ``django.utils.http.limited_parse_qsl()``
=================================================================================
Django contains a copy of :func:`urllib.parse.parse_qsl` which was added to
backport some security fixes. A further security fix has been issued recently
such that ``parse_qsl()`` no longer allows using ``;`` as a query parameter
separator by default. Django now includes this fix. See :bpo:`42967` for
further details.

16
docs/releases/3.0.13.txt Normal file
View File

@ -0,0 +1,16 @@
===========================
Django 3.0.13 release notes
===========================
*February 19, 2021*
Django 3.0.13 fixes a security issue in 3.0.12.
CVE-2021-23336: Web cache poisoning via ``django.utils.http.limited_parse_qsl()``
=================================================================================
Django contains a copy of :func:`urllib.parse.parse_qsl` which was added to
backport some security fixes. A further security fix has been issued recently
such that ``parse_qsl()`` no longer allows using ``;`` as a query parameter
separator by default. Django now includes this fix. See :bpo:`42967` for
further details.

View File

@ -2,9 +2,18 @@
Django 3.1.7 release notes Django 3.1.7 release notes
========================== ==========================
*Expected March 1, 2021* *February 19, 2021*
Django 3.1.7 fixes several bugs in 3.1.6. Django 3.1.7 fixes a security issue and a bug in 3.1.6.
CVE-2021-23336: Web cache poisoning via ``django.utils.http.limited_parse_qsl()``
=================================================================================
Django contains a copy of :func:`urllib.parse.parse_qsl` which was added to
backport some security fixes. A further security fix has been issued recently
such that ``parse_qsl()`` no longer allows using ``;`` as a query parameter
separator by default. Django now includes this fix. See :bpo:`42967` for
further details.
Bugfixes Bugfixes
======== ========

View File

@ -53,6 +53,7 @@ versions of the documentation contain the release notes for any later releases.
.. toctree:: .. toctree::
:maxdepth: 1 :maxdepth: 1
3.0.13
3.0.12 3.0.12
3.0.11 3.0.11
3.0.10 3.0.10
@ -72,6 +73,7 @@ versions of the documentation contain the release notes for any later releases.
.. toctree:: .. toctree::
:maxdepth: 1 :maxdepth: 1
2.2.19
2.2.18 2.2.18
2.2.17 2.2.17
2.2.16 2.2.16

View File

@ -6,7 +6,7 @@ from django.test.client import FakePayload
class ExceptionHandlerTests(SimpleTestCase): class ExceptionHandlerTests(SimpleTestCase):
def get_suspicious_environ(self): def get_suspicious_environ(self):
payload = FakePayload('a=1&a=2;a=3\r\n') payload = FakePayload('a=1&a=2&a=3\r\n')
return { return {
'REQUEST_METHOD': 'POST', 'REQUEST_METHOD': 'POST',
'CONTENT_TYPE': 'application/x-www-form-urlencoded', 'CONTENT_TYPE': 'application/x-www-form-urlencoded',

View File

@ -11,7 +11,7 @@ TOO_MUCH_DATA_MSG = 'Request body exceeded settings.DATA_UPLOAD_MAX_MEMORY_SIZE.
class DataUploadMaxMemorySizeFormPostTests(SimpleTestCase): class DataUploadMaxMemorySizeFormPostTests(SimpleTestCase):
def setUp(self): def setUp(self):
payload = FakePayload('a=1&a=2;a=3\r\n') payload = FakePayload('a=1&a=2&a=3\r\n')
self.request = WSGIRequest({ self.request = WSGIRequest({
'REQUEST_METHOD': 'POST', 'REQUEST_METHOD': 'POST',
'CONTENT_TYPE': 'application/x-www-form-urlencoded', 'CONTENT_TYPE': 'application/x-www-form-urlencoded',
@ -117,7 +117,7 @@ class DataUploadMaxNumberOfFieldsGet(SimpleTestCase):
request = WSGIRequest({ request = WSGIRequest({
'REQUEST_METHOD': 'GET', 'REQUEST_METHOD': 'GET',
'wsgi.input': BytesIO(b''), 'wsgi.input': BytesIO(b''),
'QUERY_STRING': 'a=1&a=2;a=3', 'QUERY_STRING': 'a=1&a=2&a=3',
}) })
request.GET['a'] request.GET['a']
@ -126,7 +126,7 @@ class DataUploadMaxNumberOfFieldsGet(SimpleTestCase):
request = WSGIRequest({ request = WSGIRequest({
'REQUEST_METHOD': 'GET', 'REQUEST_METHOD': 'GET',
'wsgi.input': BytesIO(b''), 'wsgi.input': BytesIO(b''),
'QUERY_STRING': 'a=1&a=2;a=3', 'QUERY_STRING': 'a=1&a=2&a=3',
}) })
request.GET['a'] request.GET['a']