Примечания к выпуску Django 2.2.4¶
1 августа 2019 г.
В Django 2.2.4 исправлены проблемы безопасности и несколько ошибок версии 2.2.3.
CVE-2019-14232: возможность отказа в обслуживании в django.utils.text.Truncator.¶
Если методам chars() и words() объекта django.utils.text.Truncator был передан аргумент html=True, они очень медленно оценивали определенные входные данные из-за катастрофической уязвимости обратного отслеживания в регулярном выражении. Методы chars() и words() используются для реализации фильтров шаблонов truncatechars_html и truncatewords_html, которые, таким образом, были уязвимы.
Регулярные выражения, используемые Truncator, были упрощены, чтобы избежать потенциальных проблем с возвратом. Как следствие, конечные знаки препинания теперь могут иногда включаться в усеченный вывод.
CVE-2019-14234: возможность внедрения SQL при поиске по ключу и индексу для JSONField/HStoreField.¶
Поиск по ключу и индексу для django.contrib.postgres.fields.JSONField и поиск ключей для HStoreField подвергался SQL-инъекции с использованием соответствующим образом созданного словаря с расширением словаря, поскольку **kwargs передается в QuerySet.filter().
CVE-2019-14235: потенциальное нехватка памяти в django.utils.encoding.uri_to_iri()¶
При передаче определенных входных данных django.utils.encoding.uri_to_iri() может привести к значительному использованию памяти из-за чрезмерной рекурсии при повторном процентном кодировании недопустимых последовательностей октетов UTF-8.
uri_to_iri() теперь позволяет избежать рекурсии при повторном процентном кодировании недопустимых последовательностей октетов UTF-8.
Исправления¶
Исправлена регрессия в Django 2.2, когда порядок
QuerySet.union(),intersection()илиdifference()по типу поля, присутствующему более одного раза, приводит к использованию неправильного порядка (#30628).Исправлен сбой миграции в PostgreSQL при добавлении проверочного ограничения с поиском
containsдляDateRangeFieldилиDateTimeRangeField, если правая часть выражения имеет тот же тип (#30621).Исправлена регрессия в Django 2.2, при которой автоперезагрузка аварийно завершала работу, если путь к файлу содержит нулевые символы (
'\x00') (#30506).Исправлена регрессия в Django 2.2, при которой автоперезагрузка аварийно завершала работу, если каталог перевода не был разрешен (#30647).