CVE-2026-55520 в Ubuntu: отказ в обслуживании парсера robots.txt и порядок обновления

CVE: CVE-2026-55520
Продукт: Ubuntu
Дата публикации: 28.08.2026
Критичность: HIGH
CVSS: 7.1 (4.0)
EPSS: 0,37%; процентиль 29,67%
CISA KEV: нет подтверждения в каталоге CISA KEV

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


Уязвимость в пакете python-protego позволяет атакующему вызвать отказ в обслуживании веб-скрейпера через специально сформированный файл robots.txt. В статье разобран механизм экспоненциального бэктрекинга, затронутые версии Ubuntu и практические шаги по проверке и обновлению системы.

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


Риск заключается в возможности заставить процесс парсинга robots.txt работать неопределённо долго, что приводит к отказу в обслуживании (DoS) для приложений, использующих библиотеку Protego.

  • Тип ошибки: CWE-400 (неограниченное потребление ресурсов) и CWE-1333 (небезопасное использование регулярных выражений).
  • CVSS 4.0: 7.1 (HIGH). Вектор: CVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:P/VC:N/VI:N/VA:H/SC:N/SI:N/SA:N/E:X/CR:X/IR:X/AR:X/MAV:X/MAC:X/MAT:X/MPR:X/MUI:X/MVC:X/MVI:X/MVA:X/MSC:X/MSI:X/MSA:X/S:X/AU:X/R:X/V:X/RE:X/U:X.
  • Условия атаки: Сетевой доступ, низкая сложность, отсутствие необходимости в привилегиях, но требуется пассивное взаимодействие пользователя.
  • Эксплуатация: В каталоге CISA KEV не подтверждена.
  • EPSS: 0,37% (процентиль 29,67%).

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


Уязвимость затрагивает пакет python-protego в нескольких версиях Ubuntu. Библиотека Protego используется для парсинга robots.txt, и уязвимость присутствует во всех версиях до 0.6.2.

  • Ubuntu 20.04 LTS (focal): версия пакета 0.1.16+dfsg-1.
  • Ubuntu 22.04 LTS (jammy): версия пакета 0.2.1+dfsg-1.
  • Ubuntu 24.04 LTS (noble): версия пакета 0.3.0+dfsg-1.
  • Ubuntu 25.10 (questing): версия пакета 0.4.0+dfsg-1.
  • Ubuntu 26.04 LTS (resolute): версия пакета 0.6.0+dfsg-1.

Для всех перечисленных дистрибутивов бинарный пакет называется python3-protego.

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


Причина уязвимости кроется в функции _prepare_pattern_for_regex в модуле src/protego/_urlpattern.py. При обработке директив Allow или Disallow из файла robots.txt каждая встречающаяся звёздочка (*) преобразуется в ленивый регулярный шаблон (lazy regex wildcard).

Если в директиве содержится большое количество звёздочек, сформированное регулярное выражение становится сложным. При последующем сопоставлении URL с таким шаблоном в функции can_fetch возникает экспоненциальный бэктрекинг (exponential backtracking). Это приводит к тому, что процессорное время, затрачиваемое на проверку одного URL, возрастает нелинейно, что и вызывает отказ в обслуживании.

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


Атакующий формирует файл robots.txt, содержащий директивы с большим количеством символов *. Этот файл предоставляется веб-скрейперу, который использует библиотеку Protego.

Когда скрейпер вызывает protego.Protego.parse для обработки этого файла, а затем protego.Protego.can_fetch для проверки конкретного URL, происходит сопоставление. Из-за структуры регулярного выражения, созданного из директивы, алгоритм регулярных выражений начинает экспоненциальный бэктрекинг. В результате процесс может зависнуть или работать крайне медленно, что приводит к отказу в обслуживании для данного скрейпера.

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


Для успешной эксплуатации уязвимости необходимо, чтобы приложение на целевой системе использовало уязвимую версию библиотеки Protego для парсинга robots.txt.

  • Сетевой доступ: Атакующий должен иметь возможность предоставить целевому скрейперу специально сформированный файл robots.txt.
  • Взаимодействие пользователя: Вектор CVSS указывает на UI:P (User Interaction: Passive), что подразумевает, что атакующий должен каким-то образом заставить приложение обработать вредоносный файл (например, через навигацию к сайту с таким robots.txt).
  • Отсутствие привилегий: Атакующему не нужны специальные права доступа к системе жертвы.

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


Веб-скрейпер, работающий на Ubuntu с установленным пакетом python3-protego версии ниже 0.6.2, начинает обход сайта. Атакующий размещает на целевом сайте файл robots.txt с директивой, содержащей множество звёздочек.

Скрейпер загружает и парсит этот файл. При попытке проверить, разрешен ли доступ к какому-либо URL, функция can_fetch запускает сопоставление с вредоносным шаблоном. Процессорное время процесса резко возрастает, и скрейпер перестает отвечать или начинает работать крайне медленно, что приводит к отказу в обслуживании.

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


В предоставленных источниках отсутствуют сведения о публичном эксплойте, PoC или подтвержденной эксплуатации в реальных атаках. CVE имеет статус "Received", а в каталоге CISA KEV уязвимость не фигурирует. Отсутствие информации о публичном эксплойте не означает, что он не существует, но на данный момент официальных подтверждений нет.

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


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

  • Неспецифичные признаки: Внезапное увеличение времени отклика веб-скрейпера, зависание процессов Python, использующих Protego, аномальное потребление CPU в процессах парсинга.
  • Логи: Проверка логов приложения на предмет длительных операций парсинга robots.txt или ошибок таймаута.

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


Для обнаружения потенциальной эксплуатации или наличия уязвимости рекомендуется проверить версии установленных пакетов и мониторинг производительности.

  • Проверка версии пакета: Используйте команду apt-cache policy python-protego для проверки установленной версии.
  • Мониторинг CPU: Настройте алерты на аномальное потребление CPU процессами Python, особенно теми, которые занимаются парсингом веб-контента.
  • Логи приложений: Анализируйте логи веб-скрейпера на предмет необъяснимых задержек при обработке robots.txt.

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


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

Bash:
# Проверка версии пакета
apt-cache policy python-protego

# Проверка версии ОС
cat /etc/os-release

# Проверка статуса безопасности Ubuntu
ubuntu-security-status

Если версия пакета ниже 0.6.2, система уязвима. Обратите внимание, что в Ubuntu версии пакетов могут иметь суффиксы (например, +dfsg-1), но основная версия (0.1.16, 0.2.1 и т.д.) должна быть не ниже 0.6.2.

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


Единственным подтвержденным способом устранения уязвимости является обновление пакета python-protego до версии 0.6.2 или выше.

  • Обновление через apt: Выполните sudo apt update и затем sudo apt upgrade python-protego.
  • Проверка доступности: Убедитесь, что в репозиториях Ubuntu доступна исправленная версия. Для некоторых LTS-версий исправление может быть доступно только в обновленных репозиториях.
  • Перезапуск сервисов: После обновления перезапустите все сервисы, использующие библиотеку Protego, чтобы изменения вступили в силу.

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


Пока обновление не установлено, можно рассмотреть следующие временные меры:

  • Ограничение доступа: Ограничьте доступ веб-скрейпера к внешним сайтам, если это возможно, или используйте прокси-сервер для фильтрации файлов robots.txt.
  • Таймауты: Настройте короткие таймауты на операции парсинга robots.txt в приложении, чтобы предотвратить зависание процесса.
  • Изоляция: Запускайте веб-скрейпер в изолированной среде (например, в контейнере), чтобы отказ в обслуживании не влиял на основную систему.

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


После обновления пакета проверьте, что уязвимость устранена:

Bash:
# Проверка версии пакета
apt-cache policy python-protego

Убедитесь, что версия пакета не ниже 0.6.2. Также можно провести функциональное тестирование веб-скрейпера, убедившись, что он корректно обрабатывает файлы robots.txt без аномальных задержек.

Вывод​


Уязвимость CVE-2026-55520 представляет риск отказа в обслуживании для систем, использующих библиотеку Protego для парсинга robots.txt. Атака возможна через специально сформированный файл robots.txt, вызывающий экспоненциальный бэктрекинг в регулярных выражениях.

Администраторам Ubuntu рекомендуется проверить версии пакета python-protego и обновить его до 0.6.2 или выше. До обновления следует рассмотреть временные меры, такие как настройка таймаутов и изоляция процессов скрейпера.

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


  1. NVD — CVE-2026-55520
  2. Ubuntu OSV — CVE-2026-55520
  3. FIRST EPSS — CVE-2026-55520

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


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