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 не выпустит обновленный пакет, рекомендуется:
- Отслеживать обновления Debian Security Tracker.
- Рассмотреть возможность установки sqlparse версии 0.6.0 из PyPI, если это не нарушает политику безопасности и совместимость.
- Ограничить использование sqlparse в критических путях обработки внешних данных.
Как только Debian выпустит исправленный пакет, выполните:
Bash:
sudo apt update
sudo apt install sqlparse
Временные меры защиты
До выпуска официального исправления можно применить следующие временные меры:
- Валидация ввода: Внедрите строгую валидацию SQL-запросов на уровне приложения, отклоняя запросы с несбалансированными комментариями или доллар-квотированными литералами.
- Ограничение длины: Установите максимальную длину SQL-запросов.
- Таймауты: Настройте таймауты для функций парсинга.
- Изоляция: Запускайте компоненты, использующие 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 и применять исправление сразу после его выпуска.
Официальные источники
История обновлений статьи
- 18.08.2026 — Опубликована первая версия материала.
