Примечания к выпуску Django 2.0.3¶
6 марта 2018 г.
В Django 2.0.3 исправлены две проблемы безопасности и несколько ошибок в версии 2.0.2. Кроме того, включены последние переводы строк от Transifex.
CVE-2018-7536: возможность отказа в обслуживании в фильтрах шаблонов urlize и urlizetrnc.¶
Функция django.utils.html.urlize() чрезвычайно медленно оценивала определенные входные данные из-за катастрофических уязвимостей обратного отслеживания в двух регулярных выражениях. Функция urlize() используется для реализации фильтров шаблонов urlize и urlizetrnc, которые, таким образом, были уязвимы.
Проблемные регулярные выражения заменяются логикой синтаксического анализа, которая ведет себя аналогичным образом.
CVE-2018-7537: возможность отказа в обслуживании в фильтрах шаблонов truncatechars_html и truncatewords_html.¶
Если методам chars() и words() объекта django.utils.text.Truncator был передан аргумент html=True, они очень медленно оценивали определенные входные данные из-за катастрофической уязвимости обратного отслеживания в регулярном выражении. Методы chars() иwords() используются для реализации фильтров шаблонов truncatechars_html и truncatewords_html, которые, таким образом, были уязвимы.
Исправлена проблема с возвратом в регулярном выражении.
Исправления¶
Исправлена регрессия, приводившая к сбою фрагмента
QuerySet.distinct().order_by(), за которым следовалcount()(#29108).Установлен приоритет форматов ввода даты и времени без
%fдля тайской локали, чтобы исправить виджет выбора времени администратора, отображающий «неопределенное» (#29109).Исправлен сбой с
QuerySet.order_by(Exists(...))(#29118).Сделан
Q.deconstruct()детерминированным с несколькими ключевыми аргументами (#29125). Возможно, вам придется изменить Q в существующих миграциях или принять автоматически созданную миграцию.Исправлена регрессия, при которой происходит сбой выражения
When()с аргументом списка (#29166).Исправлен сбой при использовании выражения Window() в подзапросе (#29172).
Исправлен сбой
AbstractBaseUser.normalize_username(), если аргументusernameне является строкой (#29176).