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