Примечания к выпуску Django 2.0.3

Март 6, 2018

Django 2.0.3 исправляет две проблемы безопасности и несколько ошибок в 2.0.2. Также включены последние переводы строк от Transifex.

CVE-2018-7536: Возможность отказа в обслуживании в фильтрах шаблонов urlize и urlizetrunc

Функция django.utils.html.urlize() крайне медленно оценивала определенные входные данные из-за катастрофической уязвимости обратного отката в двух регулярных выражениях. Функция urlize() используется для реализации фильтров шаблонов urlize и urlizetrunc, которые, таким образом, были уязвимы.

Проблемные регулярные выражения заменяются логикой разбора, которая ведет себя аналогично.

CVE-2018-7537: Возможность отказа в обслуживании в фильтрах шаблонов truncatechars_html и truncatewords_html

Если методам django.utils.text.Truncator chars() и words() передавался аргумент html=True, они крайне медленно оценивали определенные входные данные из-за катастрофической уязвимости в регулярном выражении. Методы chars() и words() используются для реализации шаблонных фильтров truncatechars_html и truncatewords_html, которые, таким образом, были уязвимы.

Исправлена проблема отката в регулярном выражении.

Исправления

  • Исправлена регрессия, из-за которой нарезка QuerySet.distinct().order_by() с последующим count() приводила к сбою (#29108).
  • Приоритет форматов ввода даты и времени без %f для тайской локали, чтобы исправить виджет выбора времени в админке, отображающий «undefined» (#29109).
  • Исправлен сбой при QuerySet.order_by(Exists(...)) (#29118).
  • Сделали Q.deconstruct() детерминированным с несколькими ключевыми аргументами (#29125). Вам может понадобиться изменить Q в существующих миграциях или принять автогенерируемую миграцию.
  • Исправлена регрессия, в которой при использовании выражения When() с аргументом в виде списка происходил сбой (#29166).
  • Исправлен сбой при использовании выражения Window() в подзапросе (#29172).
  • Исправлено падение AbstractBaseUser.normalize_username(), если аргумент username не является строкой (#29176).
Вернуться на верх