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

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

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


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

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


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

  • Тип ошибки: CWE-400 (Uncontrolled Resource Consumption) и CWE-1333 (Inefficient Regular Expression Complexity).
  • 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.
  • Условия атаки: Требуется, чтобы приложение обработало вредоносный robots.txt. Вектор указывает на необходимость взаимодействия пользователя (UI:P), что в контексте скрейпинга означает загрузку файла с внешнего ресурса.
  • Эксплуатация: Подтвержденная эксплуатация в реальных атаках не зафиксирована в доступных источниках.
  • EPSS: 0,37% (процентиль 29,87%). Вероятность эксплуатации в ближайшие 30 дней оценивается как низкая.

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


Уязвимость затрагивает пакет python-protego во всех поддерживаемых версиях Ubuntu, где он доступен в репозиториях. Библиотека Protego является чистым Python-парсером, используемым в экосистеме Scrapy.

  • 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.

Все перечисленные версии содержат уязвимый код в модуле src/protego/_urlpattern.py. Исправление доступно в версии 0.6.2 библиотеки, что требует обновления пакета в системе.

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


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

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

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


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

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

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

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


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

  • В системе установлен пакет python-protego в уязвимой версии (ниже 0.6.2).
  • Приложение использует библиотеку Protego для обработки robots.txt.
  • Атакующий имеет возможность разместить вредоносный файл robots.txt на веб-сервере, который будет посещен скрейпером.
  • Скрейпер должен загрузить и обработать этот вредоносный файл.

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


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

Библиотека парсит файл и сохраняет уязвимый регулярный шаблон. При попытке скрейпера проверить доступность следующего URL, который не соответствует паттерну, процесс зависает.

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

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


Публичный эксплойт в виде готового кода или PoC в доступных источниках не указан. Однако техническое описание уязвимости и коммит с исправлением доступны в репозитории проекта.

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

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


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

  • Высокая загрузка CPU на процессах, использующих Python и библиотеку Protego.
  • Зависание скрейперов или веб-ботов при обработке определенных URL.
  • Аномально длительное время отклика при проверке robots.txt.

Эти признаки могут быть вызваны и другими причинами, поэтому их следует рассматривать в совокупности с другими данными.

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


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

  • Мониторинг времени отклика функций protego.Protego.can_fetch и protego.Protego.parse.
  • Анализ логов скрейпера на предмет аномально длительных операций.
  • Проверка загруженных файлов robots.txt на наличие директив с большим количеством символов *.

Рекомендуется настроить алерты на превышение порогового времени выполнения операций парсинга robots.txt.

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


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

Bash:
apt-cache policy python-protego

Эта команда покажет установленную версию пакета и доступные версии в репозиториях. Также можно проверить версию библиотеки Python:

Bash:
python3 -c "import protego; print(protego.__version__)"

Если версия ниже 0.6.2, система уязвима.

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


Для устранения уязвимости необходимо обновить пакет python-protego до версии, содержащей исправление (0.6.2 или выше). В Ubuntu это делается через стандартные средства обновления:

Bash:
sudo apt update
sudo apt upgrade python-protego

После обновления убедитесь, что версия пакета соответствует исправленной. Если пакет не обновляется, проверьте, что репозитории настроены корректно и доступны.

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


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

  • Ограничьте доступ скрейпера к внешним ресурсам, которые могут отдавать вредоносные robots.txt.
  • Настройте прокси-сервер для фильтрации и кэширования файлов robots.txt.
  • Ограничьте время выполнения операций парсинга robots.txt с помощью таймаутов в приложении.

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

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


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

Bash:
apt-cache policy python-protego

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

Вывод​


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