CVE-2026-54284 в Debian: алгоритмическая сложность в sqlparse

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.
    Эти признаки неспецифичны и могут быть вызваны другими причинами.

Как обнаружить атаку​


Для обнаружения потенциальных атак рекомендуется:

  1. Мониторинг нагрузки CPU на процессах Python.
  2. Анализ логов приложений на наличие SQL-запросов с подозрительно высокой вложенностью.
  3. Проверка версий установленных пакетов 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'.

Рекомендуемые действия:

  1. Следите за обновлениями в Debian Security Tracker.
  2. При возможности, обновите пакет sqlparse вручную из PyPI (pip install sqlparse>=0.6.0), если это не нарушает целостность системы.
  3. Ограничьте доступ к сервисам, использующим sqlparse, только доверенным источникам.
  4. Рассмотрите возможность замены sqlparse на альтернативные парсеры, если они доступны и совместимы.

Временные меры защиты​


До выхода официального патча:

  1. Ограничьте длину входных SQL-запросов на уровне приложения или веб-сервера.
  2. Внедрите таймауты на выполнение функций парсинга.
  3. Используйте WAF (Web Application Firewall) для фильтрации запросов с аномальной структурой.
  4. Изолируйте сервисы, использующие sqlparse, в отдельных контейнерах или виртуальных машинах с ограничением ресурсов CPU.

Как проверить устранение уязвимости​


После применения временных мер или установки обновления (когда оно станет доступно):

  1. Проверьте версию пакета:

Bash:
dpkg-query -W -f='${Package} ${Version}\n' python3-sqlparse

  • Убедитесь, что версия пакета соответствует или превышает 0.6.0.
  • Протестируйте приложение на наличие ошибок после обновления.
  • Мониторьте логи на предмет повторных попыток атаки.

Вывод​


CVE-2026-54284 представляет серьезный риск для систем Debian, использующих библиотеку sqlparse. Уязвимость позволяет осуществлять отказ в обслуживании через простое SQL-сообщение. В настоящее время исправление не интегрировано в официальные репозитории Debian. Администраторам следует принять временные меры защиты и внимательно следить за выпуском обновлений безопасности.

Официальные источники​


  1. NVD — CVE-2026-54284
  2. Debian Security Tracker — CVE-2026-54284

История обновлений статьи​


  • 18.08.2026 — Опубликована первая версия материала.
 
Назад
Верх Низ