Уязвимость в Django угрожает веб-приложениям через SQL-инъекции

vulnerability

Команда разработчиков Django выпустила срочные обновления безопасности после обнаружения опасной уязвимости типа SQL injection (внедрение SQL-кода) в функции FilteredRelation. Проблема, получившая идентификатор CVE-2025-57833, оценивается как высокосерьёзная и затрагивает все поддерживаемые версии фреймворка, включая основную ветку разработки, Django 5.2, 5.1 и 4.2.

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

Уязвимость позволяет злоумышленникам выполнять произвольные вредоносные команды в базе данных, манипулируя параметрами запросов. Атака возможна из-за недостаточной проверки ключей словаря при использовании FilteredRelation в сочетании с методами QuerySet.annotate() или QuerySet.alias(). Это позволяет изменять механизм формирования псевдонимов столбцов и напрямую внедрять SQL-код в выполняемые запросы. Последствия успешной эксплуатации включают несанкционированное раскрытие конфиденциальной информации, модификацию или удаление данных.

FilteredRelation - это функция Django, предназначенная для сложных запросов к базе данных с добавлением вычисляемых столбцов на основе условий фильтрации. Однако уязвимость делает её потенциальным вектором для атак на системы, использующие аннотации или псевдонимы в запросах. Для эксплуатации достаточно передать специально сформированный словарь в параметры запроса.

Затронутыми являются версии: main (ветка разработки), 5.2, 5.1 и 4.2. Для устранения рисков команда Django выпустила патчи, которые уже интегрированы в соответствующие ветки GitHub. Исправления доступны в коммитах: 51711717098d3f469f795dfa6bc3758b24f69ef7 (main), 4c044fcc866ec226f612c475950b690b0139d243 (5.2), 102965ea93072fe3c39a30be437c683ec1106ef5 (5.1) и 31334e6965ad136a5e369993b01721499c5d1a92 (4.2).

Для удобства пользователей также опубликованы новые версии Django: 5.2.6, 5.1.12 и 4.2.24. Каждый выпуск включает исправление уязвимости и другие незначительные улучшения. Разработчикам настоятельно рекомендуется проверить целостность загружаемых пакетов с использованием PGP-ключа ID 3955B19851EA96EF, выполнить тестирование и как можно скорее обновить системы.

Корпоративная политика безопасности Django предусматривает ответственное раскрытие информации. О найденных уязвимостях следует сообщать по адресу [email protected], а не публиковать их в открытых источниках. Это позволяет разработчикам заранее подготовить исправления и минимизировать риски для пользователей.

В условиях роста киберугроз своевременное обновление программного обеспечения остается ключевым элементом защиты. Администраторам и разработчикам, использующим уязвимые версии Django, необходимо расставить приоритеты установку патчей для предотвращения потенциальных атак на свои веб-приложения.

Ссылки

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