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

1 августа 2019 г.,

Django 2.2.4 исправляет проблемы безопасности и несколько ошибок в 2.2.3.

CVE-2019-14232: возможность отказа в обслуживании в django.utils.text.Truncator

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

Регулярные выражения, используемые в Truncator, были упрощены, чтобы избежать потенциальных проблем с возвратом. Как следствие, теперь в усеченный вывод могут иногда включаться завершающие знаки препинания.

CVE-2019-14233: возможность отказа в обслуживании в strip_tags()

Из - за поведения базового актива HTMLParser, django.utils.html.strip_tags()будет крайне медленным , чтобы оценить определенные входы , содержащих большие последовательности вложенных неполных HTML сущностей. Этот strip_tags()метод используется для реализации соответствующего striptagsшаблонного фильтра, который, таким образом, также был уязвим.

strip_tags()теперь избегает рекурсивных вызовов HTMLParserпри удалении тегов, но обязательно неполных HTML-сущностей, перестает выполняться .

Помните, что абсолютно НИКАКИХ гарантий strip_tags()безопасности HTML не дается . Поэтому НИКОГДА не помечайте как безопасный результат strip_tags()вызова без предварительного экранирования, например, с помощью django.utils.html.escape().

CVE-2019-14234: возможность внедрения SQL при поиске по ключу и индексу для JSONField/ HStoreField

Key and index lookupsfor JSONFieldи for подвергались SQL-инъекции с использованием специально созданного словаря с расширением словаря, как передано в .key lookupsHStoreField**kwargsQuerySet.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 ).

Copyright ©2021 All rights reserved