Безопасность 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-запрос, содержащий вредоносные фрагменты.

Оценка влияния
Проблема особенно серьёзна, потому что разработчики часто используют эти методы QuerySet в повседневном коде и могут непреднамеренно допустить SQL-инъекцию при обработке пользовательских данных без проверки.
Django широко используется в корпоративных системах, e-commerce и API-бэкендах, поэтому риск масштабный и критический.
Windows-специфичная уязвимость DoS (CVE-2025-64458)
Суть проблемы
CVE-2025-64458 затрагивает обработку HTTP-редиректов на Windows-серверах из-за неэффективной Unicode-нормализации (NFKC) в Python.
Под удар попадают:
HttpResponseRedirectHttpResponsePermanentRedirectredirect()
Как работает атака
- Злоумышленник отправляет URL с очень длинными последовательностями Unicode-символов.
- Сервер тратит огромное количество CPU на нормализацию строки.
- Приложение начинает тормозить или полностью перестаёт отвечать.
- Не требует аутентификации — уязвимость эксплуатируется удалённо.
Предыдущие похожие уязвимости
| Дата | 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).
