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

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

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


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

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


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

  • Тип ошибки: CWE-400 (неограниченное потребление ресурсов) и CWE-1333 (ReDoS).
  • 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.
  • Условия атаки: Сеть (Network), низкая сложность, отсутствие прав (PR:N), требуется взаимодействие пользователя (UI:P).
  • Эксплуатация: В каталоге CISA KEV не подтверждена.
  • EPSS: 0,37% (процентиль 29,79%). Вероятность эксплуатации в ближайшие 30 дней оценивается как низкая.

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


Уязвимость затрагивает пакет python-protego в нескольких версиях Ubuntu. Все перечисленные ниже версии содержат уязвимый код в файле src/protego/_urlpattern.py.

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

Обратите внимание, что в Ubuntu 26.04 LTS установлена версия 0.6.0, которая все еще уязвима, так как исправление вышло в версии 0.6.2.

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


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

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

Это приводит к тому, что процесс тратит вычислительные ресурсы на перебор вариантов совпадения, что и вызывает отказ в обслуживании. Уязвимый путь: src/protego/_urlpattern.py в логике сопоставления _URLPattern.

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


Атакующий не требует доступа к файловой системе жертвы. Механизм атаки основан на обработке внешних данных. Злоумышленник размещает специально сформированный файл robots.txt на веб-сервере, который посещает скрапер, использующий библиотеку Protego.

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

Из-за структуры регулярного выражения процесс начинает долгий цикл бэктрекинга. Время, которое тратится на эту операцию, контролируется атакующим через сложность паттерна. В результате скрапер перестает отвечать, что приводит к отказу в обслуживании.

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


Для успешной эксплуатации уязвимости необходимо соблюдение следующих условий:

  • Наличие уязвимой версии: Система должна использовать пакет python-protego версии ниже 0.6.2 (включая все перечисленные версии Ubuntu).
  • Доступ к robots.txt: Атакующий должен иметь возможность разместить или модифицировать файл robots.txt на веб-сервере, который посещает уязвимый скрапер.
  • Использование Protego: Приложение-жертва должно использовать библиотеку Protego для парсинга robots.txt и проверки разрешений на доступ к URL.
  • Взаимодействие пользователя: По вектору CVSS требуется взаимодействие пользователя (UI:P), что в контексте скрапинга может означать, что скрапер инициирует запрос к специальному ресурсу.

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


Сценарий атаки начинается с подготовки вредоносного файла robots.txt. Атакующий создает директивы, содержащие длинные последовательности символов *, которые при преобразовании в регулярное выражение создают условия для экспоненциального бэктрекинга.

Этот файл размещается на целевом веб-сервере. Когда уязвимый скрапер обращается к этому серверу, он загружает robots.txt и вызывает protego.Protego.parse. В этот момент уязвимый паттерн инициализируется.

Затем скрапер пытается проверить доступ к конкретному URL, вызывая protego.Protego.can_fetch. Происходит сопоставление URL с уязвимым паттерном.

Процесс Python начинает интенсивный бэктрекинг, CPU-ядро загружается на 100%, и скрапер перестает обрабатывать другие запросы. Атакующий достигает цели: отказ в обслуживании скрапера.

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


В предоставленных источниках нет информации о публичном эксплойте или подтвержденной эксплуатации в реальных атаках. CVE-2026-55520 не включен в каталог CISA KEV.

Существует техническое описание уязвимости и исправление в версии 0.6.2. Отсутствие сведений о публичном эксплойте не означает, что он не существует, но на данный момент подтвержденных данных о его использовании в дикой природе нет.

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


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

Однако можно обратить внимание на следующие неспецифичные признаки:

  • Внезапное увеличение нагрузки на CPU процесса скрапера.
  • Зависание или медленная работа веб-скрапера без видимых причин.
  • Запросы к веб-серверам с подозрительно сложными файлами robots.txt (если логируют содержимое заголовков или тела запросов).

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


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

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

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

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


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

Bash:
# Проверка версии Ubuntu
cat /etc/os-release

# Проверка версии ядра (для контекста)
uname -r

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

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

Если в выводе apt-cache policy указана версия ниже 0.6.2 (например, 0.1.16, 0.2.1, 0.3.0, 0.4.0 или 0.6.0), система уязвима.

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


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

Для пользователей Ubuntu рекомендуется:

  • Обновить систему до последней доступной версии, если исправление уже выпущено в репозиториях.
  • Если исправление еще не доступно в официальных репозиториях вашей версии Ubuntu, рассмотрите возможность установки пакета из PyPI (если это допустимо политикой безопасности) или ожидания официального обновления от Canonical.

Команда для обновления (после подтверждения наличия исправления в репозитории):

Bash:
sudo apt update
sudo apt upgrade python-protego

Всегда проверяйте, что после обновления версия стала 0.6.2 или выше.

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


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

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

Эти меры не устраняют уязвимость, но снижают риск и последствия атаки.

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


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

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

Bash:
apt-cache policy python-protego

Убедитесь, что установленная версия равна 0.6.2 или выше.

  • Проверьте, что обновление применилось:

Bash:
dpkg -l python-protego

  • Если возможно, протестируйте скрапер на тестовом файле robots.txt с большим количеством символов *, чтобы убедиться, что зависание не происходит.

Если версия 0.6.2 или выше установлена, уязвимость CVE-2026-55520 устранена.

Вывод​


CVE-2026-55520 представляет собой уязвимость типа ReDoS в библиотеке Protego, которая может привести к отказу в обслуживании веб-скраперов. Хотя вероятность эксплуатации в ближайшие 30 дней низкая (EPSS 0,37%), риск для систем, активно использующих скрапинг, реален.

Администраторам 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 — Опубликована первая версия материала.
  • 01.09.2026 — Уточнены сведения об уязвимых версиях, оценке риска или исправлении.
 
Последнее редактирование:
Назад
Верх Низ