Django выпустил срочные патчи для трёх веток: закрыты шесть уязвимостей, одна из которых уже эксплуатируется

Django

Команда разработчиков Django выпустила обновления для поддерживаемых веток - 4.2, 5.2 и 6.0. В версиях 4.2.28, 5.2.11 и 6.0.2 исправлены шесть уязвимостей, четыре из которых отнесены к высокому уровню опасности, две - к среднему и одна - к низкому. Согласно открытым источникам, одна из критических проблем (CVE-2026-1207) уже активно используется злоумышленниками.

Детали уязвимостей

Самой серьёзной угрозой стала уязвимость в механизме растровых запросов к PostGIS (CVE-2026-1207). Она позволяет внедрить SQL-код через непроверенный индекс слоя (band index). Поскольку PostGIS - единственная реализация геопространственных растровых операций в Django, атаки возможны только при использовании этой базы данных. Разработчик Tarek Nakkouch, обнаруживший проблему, указал на необходимость предварительной валидации любых данных, поступающих от пользователя, особенно при работе с геоданными. Учитывая, что CVE-2026-1207 уже эксплуатируется, обновление следует установить незамедлительно всем, кто использует PostGIS.

В категории SQL-инъекций также оказались две другие уязвимости высокого уровня. Уязвимость CVE-2026-1287 затрагивает механизм FilteredRelation при передаче управляющих символов через словарное разворачивание в kwargs методов annotate(), aggregate(), extra(), values(), values_list() и alias(). Злоумышленник, способный контролировать содержимое передаваемого словаря, может выполнить произвольный SQL-запрос. Аналогичная проблема CVE-2026-1312 касается метода QuerySet.order_by() - внедрение кода возможно через колонки, содержащие точку, если тот же псевдоним используется в FilteredRelation. Обе уязвимости обнаружил Solomon Kebede, и разработчики уже применили патчи.

Две уязвимости средней степени тяжести связаны с отказами в обслуживании. CVE-2025-14550 позволяет удалённому злоумышленнику вызвать деградацию или полную недоступность сервера, отправляя запросы с многократно повторяющимися HTTP-заголовками при использовании ASGI-интерфейса. Проблема кроется в алгоритме объединения повторяющихся заголовков - конкатенация строк растёт суперлинейно, что при большом числе дублей приводит к исчерпанию ресурсов. Аналогичным образом CVE-2026-1285 способна истощить вычислительные мощности через HTML-методы Truncator: если передать аргументы с большим количеством незакрытых тегов, парсер будет работать квадратично долго. Эта проблема затрагивает шаблонные фильтры truncatechars_html и truncatewords_html.

Наконец, уязвимость низкого уровня CVE-2025-13473 касается timing-атаки на механизм аутентификации через mod_wsgi. Функция check_password() из модуля django.contrib.auth.handlers.modwsgi позволяла злоумышленнику перебирать имена пользователей, измеряя разницу во времени ответа. Несмотря на низкий рейтинг опасности, эта проблема может быть полезна для предварительного сбора учётных записей в комбинации с другими атаками.

Разработчики напоминают, что все перечисленные уязвимости закрыты в версиях 4.2.28, 5.2.11 и 6.0.2. Для владельцев проектов на PostGIS обновление является критическим из-за подтверждённой эксплуатации CVE-2026-1207. Остальным пользователям также рекомендуется обновить Django как можно скорее, особенно если веб-приложения используют ASGI-сервер или шаблонные фильтры для обрезки текста. В качестве временных мер защиты до установки патча можно ограничить доступ к эндпоинтам, принимающим пользовательские данные для растровых запросов, а также настроить лимиты на размер входящих заголовков и длину обрабатываемого HTML.

Выпуск патчей подтверждает общую тенденцию: Django продолжает усиливать защиту от SQL-инъекций и DoS-атак, уделяя особое внимание проверке входных данных. Разработчики благодарят исследователей, сообщивших об уязвимостях, включая команду Stackered, Jiyong Yang, Seokchan Yoon и Solomon Kebede.

Ссылки

Комментарии: 0