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 или выше. До обновления следует рассмотреть временные меры, такие как настройка таймаутов и изоляция процессов скрейпера.Официальные источники
История обновлений статьи
- 30.08.2026 — Опубликована первая версия материала.
