Уязвимость в обработке XML в CPython позволяет вызвать отказ в обслуживании

Python

В популярном языке программирования Python обнаружена уязвимость, связанная с обработкой XML-документов. Из-за ошибки в алгоритме работы с XPath-выражениями злоумышленник может отправить специально сформированный файл, который приведёт к резкому замедлению работы приложения и последующему отказу в обслуживании.

Уязвимость CVE-2026-6879

Проблема получила идентификатор CVE-2026-6879. Уязвимость затрагивает компонент xml.etree.ElementPath, который используется для поиска элементов в XML-структурах. Суть ошибки заключается в неэффективной обработке запросов с индексными предикатами - например, при поиске первого, последнего или N-го элемента среди множества однотипных узлов. В таких случаях время выполнения операций растёт нелинейно, что позволяет атакующему перегрузить систему, отправив документ с большим количеством одинаковых элементов.

Стоит отметить, что уязвимость имеет низкую степень опасности. По шкале CVSS v4.0 ей присвоен балл 2.0. Для эксплуатации требуются определённые условия: атакующий должен иметь возможность передать приложению обрабатываемый XML-файл, а также обладать достаточными привилегиями и убедить пользователя выполнить операцию. Тем не менее, даже низкий уровень угрозы не отменяет необходимости своевременного обновления, особенно в средах, где обработка XML-документов происходит на серверной стороне.

Затронуты все версии CPython до 3.15.0. Это значит, что большинство текущих установок языка, включая популярные дистрибутивы третьей ветки, требуют обновления. Разработчики уже включили исправление в репозиторий проекта, а также опубликовали подробности в официальном бюллетене безопасности Python. Пользователям рекомендуется установить последние доступные версии интерпретатора, а при невозможности обновления - временно ограничить приём недоверенных XML-документов.

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

Важно подчеркнуть, что уязвимость проявляется не во всех сценариях использования XML-поиска. Например, запросы, которые прекращают работу после первого совпадения, не создают значительной нагрузки. Однако операции, требующие полного перебора всех элементов, такие как поиск последнего узла или использование функций вроде last(), становятся аномально медленными на больших документах. Это делает уязвимость потенциально интересной для атак на парсеры публичных сервисов, принимающих XML от сторонних пользователей.

Разработчики Python уже отреагировали на обнаружение проблемы, выпустив патч в ветке разработки. Сообщество проекта призывает пользователей тестировать обновления в своих окружениях и планировать их развёртывание. Для тех, кто использует контейнерные образы или системы сборки, достаточно заменить базовый образ интерпретатора на актуальный. В случае, когда используется сторонний дистрибутив Python, следует дождаться выхода исправленной версии от соответствующего поставщика.

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

Ссылки

Комментарии: 0