Безопасность Django: критическая уязвимости SQL Injection

chatgpt image 6 нояб. 2025 г., 17 39 02

Безопасность Django: критическая уязвимости SQL Injection и DoS требуют немедленных действий

Серьёзные уязвимости в базовой функциональности Django подвергают приложения риску манипуляции базой данных и атак на отказ в обслуживании.

Фонд Django Software выпустил экстренные патчи безопасности, устраняющие две критические уязвимости, представляющие значительную угрозу для веб-приложений, построенных на популярном Python-фреймворке. Обновления, выпущенные 5 ноября 2025 года для Django версий 5.2.8, 5.1.14 и 4.2.26, закрывают уязвимость критического уровня, связанную с SQL-инъекцией, и уязвимость средней опасности, связанную с отказом в обслуживании (DoS) на серверах Windows.


Критическая уязвимость SQL Injection (CVE-2025-64459)

Суть проблемы

Уязвимость CVE-2025-64459 затрагивает ключевые методы QuerySet в Django, включая:

  • QuerySet.filter()
  • QuerySet.exclude()
  • QuerySet.get()
  • Класс Q()

когда используется раскрытие словаря с помощью аргумента _connector.

Если в _connector передаётся непроверенный пользовательский ввод, злоумышленник может внедрять произвольный SQL-код.

Почему это опасно

При недостаточной валидации полей, передаваемых при построении QuerySet, возможно:

  • Извлечение данных: несанкционированный доступ к чувствительным записям
  • Манипуляции: изменение или удаление данных
  • Обход аутентификации: обход логики контроля доступа
  • Повышение привилегий: выполнение SQL-команд с правами БД

Пример эксплуатации

# Уязвимый код
user_input = request.GET.get('filter_params')
Model.objects.filter(**user_input, _connector='AND')

Если user_input содержит специально сформированные ключи или значения, ORM может сформировать SQL-запрос, содержащий вредоносные фрагменты.

chatgpt image 6 нояб. 2025 г., 17 37 24
chatgpt image 6 нояб. 2025 г., 17 37 24

Оценка влияния

Проблема особенно серьёзна, потому что разработчики часто используют эти методы QuerySet в повседневном коде и могут непреднамеренно допустить SQL-инъекцию при обработке пользовательских данных без проверки.

Django широко используется в корпоративных системах, e-commerce и API-бэкендах, поэтому риск масштабный и критический.


Windows-специфичная уязвимость DoS (CVE-2025-64458)

Суть проблемы

CVE-2025-64458 затрагивает обработку HTTP-редиректов на Windows-серверах из-за неэффективной Unicode-нормализации (NFKC) в Python.

Под удар попадают:

  • HttpResponseRedirect
  • HttpResponsePermanentRedirect
  • redirect()

Как работает атака

  1. Злоумышленник отправляет URL с очень длинными последовательностями Unicode-символов.
  2. Сервер тратит огромное количество CPU на нормализацию строки.
  3. Приложение начинает тормозить или полностью перестаёт отвечать.
  4. Не требует аутентификации — уязвимость эксплуатируется удалённо.

Предыдущие похожие уязвимости

Дата CVE Проблема
Дек 2024 CVE-2024-53907 DoS через strip_tags() с вложенными HTML-сущностями
Дек 2024 CVE-2024-53908 SQL-инъекция в Oracle JSONField HasKey
Авг 2024 CVE-2024-42005 SQL-инъекция через ключи JSONField в values()

Немедленные меры

1. Обновите Django

Ваша версия Обновить до
5.2.x 5.2.8
5.1.x 5.1.14
4.2.x 4.2.26
6.0 beta установить последние патчи
pip install --upgrade django==5.2.8

2. Проверьте установленную версию

python -c "import django; print(django.get_version())"

3. Проведите аудит кода

Ищите:

  • Использование _connector в QuerySet
  • Динамическую передачу словарей в ORM-фильтры
  • Неочищенный пользовательский ввод в запросах
  • Обработку redirect для входных URL на Windows-серверах

Лучшие практики долгосрочной защиты

Проверка и очистка ввода

Когда сомневаетесь — не доверяйте данным.

# Хорошо
if not is_safe_parameter(user_param):
    raise ValidationError()
Model.objects.filter(field=user_param)

# Плохо
Model.objects.filter(**{user_param: value})

Используйте ORM правильно

  • Избегайте необработанных raw() запросов
  • Используйте параметризованные выражения
  • Включайте логирование SQL-запросов в разработке

Многоуровневая защита

База данных:

  • минимальные привилегии
  • мониторинг запросов
    Приложение:
  • WAF
  • rate limiting
    Инфраструктура:
  • регулярные обновления
  • автоматическое сканирование зависимостей

Мониторинг

Следите за:

  • ростом нагрузки CPU на Windows-нодах
  • необычными паттернами SQL-запросов
  • ошибками аутентификации
  • длинными или подозрительными URL

Вывод

Эти уязвимости затрагивают значительную часть установленных Django-проектов и представляют реальную угрозу безопасности.
Особенно уязвимость SQL-инъекции — она способна привести к полномасштабной компрометации данных.

Если вы используете Django — обновитесь немедленно.


Исследователи: cyberstan (CVE-2025-64459) и Seokchan Yoon (CVE-2025-64458).