Выпуски безопасности Django: 3.2.2, 3.1.10 и 2.2.22
В соответствии с политикой выпуска безопасности, команда Django выпускает Django 3.2.2, Django 3.1.10 и Django 2.2.22. В этих выпусках устранена проблема безопасности со степенью серьезности "умеренная", описанная ниже. Мы рекомендуем всем пользователям Django как можно скорее выполнить обновление.
CVE-2021-32052: возможность внедрения заголовка, поскольку URLValidator принимает символы новой строки во вводе на Python 3.9.5+
В Python 3.9.5+ URLValidator
не запрещал переводы строки и табуляции. Если вы использовали значения с символами новой строки в HTTP-ответе, вы могли пострадать от атак путем внедрения заголовка. Сам Django не был уязвим, потому что HttpResponse
запрещает новые строки в заголовках HTTP.
Более того, поле формы URLField
, которое использует URLValidator
, незаметно удаляет новые строки и вкладки в Python 3.9.5+, поэтому возможность ввода новых строк в ваши данные существовала только в том случае, если вы используете этот валидатор вне полей формы.
Эта проблема возникла из-за исправления bpo-43882 .
Затронутые поддерживаемые версии
- Основная ветка Django
- Джанго 3.2
- Django 3.1
- Django 2.2
Решения
Исправления для решения этой проблемы были применены к основной ветке Django и к веткам выпуска 3.2, 3.1 и 2.2. Патчи могут быть получены из следующих наборов изменений:
- На главной ветке
- В ветке выпуска 3.2
- В ветке выпуска 3.1
- В ветке выпуска 2.2
Выпущены следующие релизы:
- Django 3.2.2 ( скачать Django 3.2.2 | 3.2.2 контрольные суммы )
- Django 3.1.10 ( скачать Django 3.1.10 | 3.1.10 контрольные суммы )
- Django 2.2.22 ( скачать Django 2.2.22 | контрольные суммы 2.2.22 )
В этом выпуске используется идентификатор ключа PGP: Mariusz Felisiak: 2EF56372BA48CD1B.