CVE: CVE-2026-54284
Продукт: Debian
Дата публикации: 17.08.2026
Критичность: HIGH
CVSS: 8.7 (4.0)
EPSS: нет данных; процентиль нет данных
CISA KEV: нет подтверждения в каталоге CISA KEV
Краткое описание
Уязвимость CVE-2026-54284 затрагивает Python-модуль sqlparse, поставляемый с Debian. Ошибка приводит к квадратичному росту потребления CPU при обработке вложенных SQL-структур, что создает риск отказа в обслуживании (DoS). В настоящее время исправление для дистрибутива Debian не выпущено, статус уязвимости остается открытым во всех поддерживаемых ветках.
Основные характеристики
Уязвимость классифицируется как отказ в обслуживании (DoS) с высоким уровнем серьезности (CVSS 8.7). Она связана с алгоритмической неэффективностью (CWE-1333) и неоптимальным управлением ресурсами (CWE-407). Проблема возникает в модуле sqlparse версий ниже 0.6.0. Атака возможна удаленно (AV:N) без необходимости аутентификации (PR:N) и участия пользователя (UI:N). Вектор атаки предполагает передачу специально сформированных SQL-запросов, которые вызывают чрезмерное потребление процессорного времени при парсинге.
Какие продукты и версии затронуты
В Debian уязвим пакет python3-sqlparse (source package: sqlparse). Затронуты следующие релизы:
- Debian 12 (bookworm): версия 0.4.2-1+deb12u1
- Debian 11 (bullseye): версии 0.4.1-1 и 0.4.1-1+deb11u1
- Debian 13 (trixie): версия 0.5.3-1
- Debian forky (testing): версия 0.5.5-2
- Debian sid (unstable): версия 0.5.5-2
Во всех перечисленных релизах статус уязвимости указан как 'open', исправленная версия не назначена.
Причина уязвимости
Причина уязвимости кроется в реализации функций group_parenthesis и group_case в файле sqlparse/sql.py. При построении объекта TokenList и его последующем преобразовании в строку, код многократно выполняет операцию 'flatten' (разворачивание) вложенных поддеревов токенов. Эта операция имеет квадратичную сложность по отношению к глубине вложенности или количеству токенов. Хотя в модуле существуют лимиты глубины и количества токенов, они срабатывают слишком поздно, после того как процессор уже выполнил значительный объем вычислений, что приводит к блокировке потока выполнения.
Как работает атака
Атакующий формирует SQL-запрос с высокой степенью вложенности скобок или конструкций CASE. При передаче такого запроса в функцию sqlparse.parse(), sqlparse.format() или sqlparse.split(), интерпретатор Python начинает рекурсивную обработку токенов. Из-за алгоритмической ошибки, каждый уровень вложенности вызывает повторное переобход и разворачивание уже обработанных структур. Это приводит к квадратичному росту времени выполнения. В результате, поток, обрабатывающий запрос, занимает 100% ядра CPU на длительное время, делая сервис недоступным для других запросов.
Условия успешной эксплуатации
Для эксплуатации требуется доступ к сервису, который использует библиотеку sqlparse для парсинга пользовательского ввода (SQL-запросов). Атакующий должен иметь возможность передать контролируемую SQL-строку в функцию парсинга. Не требуется аутентификация или права суперпользователя. Уязвимость срабатывает локально (scope: local), но если сервис доступен по сети, атака возможна удаленно.
Возможный сценарий атаки
Администратор запускает веб-приложение на Python, использующее sqlparse для логирования или форматирования SQL-запросов. Атакующий отправляет HTTP-запрос, содержащий SQL-строку с глубоко вложенными круглыми скобками или операторами CASE. Сервер принимает запрос и передает его в sqlparse.parse(). Процессор сервера загружается на 100%, время отклика приложения стремится к бесконечности. Другие легитимные пользователи не могут получить доступ к сервису. После исчерпания лимитов глубины или токенов, процесс может завершиться с ошибкой или вернуть результат, но ущерб (потеря времени CPU) уже нанесен.
Есть ли публичный эксплойт
Публичные эксплойты или PoC-коды, специфичные для этой уязвимости, не зафиксированы в официальных источниках. Однако, учитывая природу уязвимости (алгоритмическая сложность), создание PoC не требует сложных обходов защиты: достаточно сгенерировать строку с достаточной вложенностью. Отсутствие публичного кода не означает отсутствие риска эксплуатации в реальных атаках.
Признаки эксплуатации
Специфичные индикаторы компрометации (IOC) для этой уязвимости отсутствуют. Общие признаки атаки включают:
- Необычно высокое потребление CPU процессами Python.
- Задержки в ответе сервисов, использующих sqlparse.
- Логи, содержащие SQL-запросы с аномально высокой вложенностью скобок или конструкций CASE.
Эти признаки неспецифичны и могут быть вызваны другими причинами.
Как обнаружить атаку
Для обнаружения потенциальных атак рекомендуется:
- Мониторинг нагрузки CPU на процессах Python.
- Анализ логов приложений на наличие SQL-запросов с подозрительно высокой вложенностью.
- Проверка версий установленных пакетов sqlparse.
Используйте команды из раздела 'Version Check' для аудита системы.
Как проверить свою версию
Проверьте версию установленного пакета sqlparse в вашей системе Debian:
Bash:
dpkg-query -W -f='${Package} ${Version}\n' python3-sqlparse
Также можно проверить политику пакетов:
Bash:
apt-cache policy python3-sqlparse
Сравните полученную версию с уязвимыми версиями, перечисленными в разделе 'Affected Products'. Если версия ниже 0.6.0, система уязвима.
Исправление
Официальное исправление для Debian (пакет sqlparse версии 0.6.0 или выше) пока не выпущено. Статус уязвимости во всех релизах Debian (bookworm, bullseye, trixie, forky, sid) остается 'open'.
Рекомендуемые действия:
- Следите за обновлениями в Debian Security Tracker.
- При возможности, обновите пакет sqlparse вручную из PyPI (pip install sqlparse>=0.6.0), если это не нарушает целостность системы.
- Ограничьте доступ к сервисам, использующим sqlparse, только доверенным источникам.
- Рассмотрите возможность замены sqlparse на альтернативные парсеры, если они доступны и совместимы.
Временные меры защиты
До выхода официального патча:
- Ограничьте длину входных SQL-запросов на уровне приложения или веб-сервера.
- Внедрите таймауты на выполнение функций парсинга.
- Используйте WAF (Web Application Firewall) для фильтрации запросов с аномальной структурой.
- Изолируйте сервисы, использующие sqlparse, в отдельных контейнерах или виртуальных машинах с ограничением ресурсов CPU.
Как проверить устранение уязвимости
После применения временных мер или установки обновления (когда оно станет доступно):
- Проверьте версию пакета:
Bash:
dpkg-query -W -f='${Package} ${Version}\n' python3-sqlparse
- Убедитесь, что версия пакета соответствует или превышает 0.6.0.
- Протестируйте приложение на наличие ошибок после обновления.
- Мониторьте логи на предмет повторных попыток атаки.
Вывод
CVE-2026-54284 представляет серьезный риск для систем Debian, использующих библиотеку sqlparse. Уязвимость позволяет осуществлять отказ в обслуживании через простое SQL-сообщение. В настоящее время исправление не интегрировано в официальные репозитории Debian. Администраторам следует принять временные меры защиты и внимательно следить за выпуском обновлений безопасности.
Официальные источники
История обновлений статьи
- 18.08.2026 — Опубликована первая версия материала.
