CVE-2026-59893 в Debian: квадратичное потребление CPU в sqlparse

CVE: CVE-2026-59893
Продукт: Debian
Дата публикации: 17.08.2026
Критичность: HIGH
CVSS: 7.5 (3.1)
EPSS: нет данных; процентиль нет данных
CISA KEV: нет подтверждения в каталоге CISA KEV

Краткое описание​


Python-модуль sqlparse содержит уязвимость, приводящую к квадратичному росту потребления процессорного времени при разборе SQL-запросов с определенными синтаксическими конструкциями. В Debian статус уязвимости остается открытым для всех поддерживаемых веток (bookworm, bullseye, trixie, forky, sid). Официальные исправленные пакеты для дистрибутива еще не выпущены.

Основные характеристики​


Уязвимость классифицируется как отказ в обслуживании (DoS) с уровнем серьезности HIGH (CVSS 7.5). Вектор атаки сетевой (AV:N), сложность эксплуатации низкая (AC:L), аутентификация не требуется (PR:N). Проблема затрагивает функции sqlparse.parse(), sqlparse.format() и sqlparse.split(). При обработке входных данных, содержащих несопоставленные доллар-квотированные литералы или многострочные комментарии, парсер выполняет избыточные повторные сканирования, что приводит к квадратичному потреблению CPU.

Какие продукты и версии затронуты​


В Debian уязвим пакет sqlparse во всех активных ветках. Согласно Debian Security Tracker, статус уязвимости открыт (open) для следующих релизов:

  • Debian 12 (bookworm): версия 0.4.2-1+deb12u1
  • Debian 11 (bullseye): версии 0.4.1-1 и 0.4.1-1+deb11u1
  • Debian Trixie (testing): версия 0.5.3-1
  • Debian Forky (unstable): версия 0.5.5-2
  • Debian Sid: версия 0.5.5-2
    Исправленная версия 0.6.0 пока не интегрирована в официальные репозитории Debian.

Причина уязвимости​


Причиной является алгоритмическая неэффективность в реализации парсера. Регулярное выражение SQL_REGEX в файле sqlparse/keywords.py и цикл по позициям в sqlparse/lexer.py многократно сканируют строку при встрече несопоставленных разделителей доллар-квотированных литералов ($$) или многострочных комментариев (/* ... */). Это вызывает избыточные итерации и квадратичную сложность O(n^2) при обработке специально сформированных входных данных.

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


Атакующий формирует SQL-запрос, содержащий паттерны, заставляющие парсер входить в режим избыточного сканирования. Примеры таких паттернов: открывающий тег доллар-квотированного литерала без закрывающего или вложенные/несбалансированные многострочные комментарии. При передаче такого запроса в функции parse, format или split, процесс Python начинает потреблять непропорционально большое количество CPU-циклов. В зависимости от длины и структуры данных, это может привести к полной блокировке потока или процесса, использующего библиотеку.

Условия успешной эксплуатации​


Для эксплуатации требуется, чтобы целевая система использовала Python-модуль sqlparse версии ниже 0.6.0. Приложение должно принимать SQL-запросы от внешних источников и передавать их в функции парсера без предварительной валидации или ограничения длины. Атакующий должен иметь возможность контролировать входные данные. Поскольку вектор атаки сетевой, аутентификация не требуется.

Возможный сценарий атаки​


Веб-приложение на Python использует sqlparse для логирования или анализа SQL-запросов, отправляемых пользователями. Атакующий отправляет запрос с SQL-кодом, содержащим специально сконструированный паттерн несопоставленных доллар-квотированных литералов. Сервер принимает запрос и передает его в sqlparse.parse(). Парсер входит в цикл избыточного сканирования, потребляя значительные ресурсы CPU. В многопоточном приложении это может привести к исчерпанию пула потоков, в однопоточном — к временной недоступности сервиса.

Есть ли публичный эксплойт​


В открытом доступе отсутствуют подтвержденные эксплойты или PoC-коды, специально нацеленные на массовую эксплуатацию CVE-2026-59893. Техническое описание уязвимости позволяет сгенерировать payload, вызывающий квадратичное потребление CPU. Отсутствие публичного эксплойта не означает отсутствие риска для систем, где sqlparse используется в критических путях обработки данных.

Признаки эксплуатации​


Специфичные индикаторы компрометации (IOC) для этой уязвимости не определены. Общие признаки могут включать:

  • Необычно высокое потребление CPU процессами Python, использующими sqlparse.
  • Задержки в ответе приложений, использующих SQL-парсинг.
  • Логи, содержащие SQL-запросы с аномально длинными или несбалансированными комментариями/литералами.
    Эти признаки неспецифичны и могут быть вызваны другими причинами.

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


Для обнаружения потенциальной эксплуатации рекомендуется мониторинг ресурсов системы. Используйте инструменты вроде top, htop или ps для отслеживания процессов Python с высоким потреблением CPU. Анализируйте логи приложений на наличие SQL-запросов с подозрительными паттернами. Если возможно, внедрите логирование времени выполнения функций парсера sqlparse. Мониторинг сетевого трафика на наличие аномально больших или повторяющихся SQL-запросов также может быть полезен.

Как проверить свою версию​


Для проверки версии установленного пакета sqlparse в Debian используйте следующие команды:

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

Сравните полученную версию с уязвимыми версиями: 0.4.2-1+deb12u1 (bookworm), 0.4.1-1 (bullseye), 0.5.3-1 (trixie), 0.5.5-2 (forky/sid). Если версия ниже 0.6.0, система уязвима.

Исправление​


Официальное исправление для Debian еще не выпущено. В upstream-репозитории sqlparse исправление доступно в версии 0.6.0. Пока Debian не выпустит обновленный пакет, рекомендуется:

  1. Отслеживать обновления Debian Security Tracker.
  2. Рассмотреть возможность установки sqlparse версии 0.6.0 из PyPI, если это не нарушает политику безопасности и совместимость.
  3. Ограничить использование sqlparse в критических путях обработки внешних данных.

Как только Debian выпустит исправленный пакет, выполните:

Bash:
sudo apt update
sudo apt install sqlparse

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


До выпуска официального исправления можно применить следующие временные меры:

  1. Валидация ввода: Внедрите строгую валидацию SQL-запросов на уровне приложения, отклоняя запросы с несбалансированными комментариями или доллар-квотированными литералами.
  2. Ограничение длины: Установите максимальную длину SQL-запросов.
  3. Таймауты: Настройте таймауты для функций парсинга.
  4. Изоляция: Запускайте компоненты, использующие sqlparse, в изолированных контейнерах или процессах с ограничением ресурсов (cgroups).

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


После установки исправления (когда оно станет доступно) проверьте результат:

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

Убедитесь, что версия пакета соответствует исправленной (>= 0.6.0). Тестирование с безопасным payload не рекомендуется для проверки исправления, так как оно не подтверждает отсутствие уязвимости.

Вывод​


CVE-2026-59893 представляет собой угрозу для систем Debian, использующих Python-модуль sqlparse. Уязвимость позволяет инициировать отказ в обслуживании через квадратичное потребление CPU. В настоящее время исправление для Debian еще не выпущено, поэтому администраторам необходимо принять временные меры защиты. Рекомендуется регулярно проверять обновления Debian Security Tracker и применять исправление сразу после его выпуска.

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


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

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


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