Уязвимость в Python XML-парсере угрожает доступности приложений

vulnerability

В базе данных уязвимостей появилась новая запись CVE-2025-12084, затрагивающая библиотеку xml.dom.minidom в CPython, эталонной реализации языка программирования Python. Уязвимость, классифицированная со средней степенью опасности (CVSS 6.3), связана с проблемой производительности, которая может привести к исчерпанию ресурсов и нарушению доступности приложений. Эксперты по безопасности рекомендуют разработчикам, работающим с обработкой XML, обратить внимание на эту проблему.

Детали уязвимости

Проблема была обнаружена в алгоритме очистки кеша идентификаторов узлов. Конкретно, функция "_clear_id_cache()" в модуле "xml.dom.minidom" демонстрирует квадратичную сложность при обработке глубоко вложенных XML-документов. Квадратичная сложность означает, что время выполнения операции растет пропорционально квадрату количества обрабатываемых элементов. На практике это приводит к резкому увеличению потребления процессорного времени и памяти при построении или модификации документов со сложной иерархической структурой.

Уязвимость проявляется при использовании методов, таких как "appendChild()", которые вызывают внутреннюю процедуру очистки кеша. Если злоумышленник может передать на обработку специально сформированный XML-документ с чрезвычайно глубоким уровнем вложенности, это может вызвать отказ в обслуживании (Denial-of-Service, DoS). В результате атаки приложение, зависящее от этой библиотеки, может перестать отвечать на запросы или аварийно завершить работу из-за нехватки вычислительных ресурсов.

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

Фонд программного обеспечения Python (Python Software Foundation), как вендор, уже отреагировал на проблему. В выпущенной версии CPython 3.15.0 данная уязвимость была устранена. Следовательно, основной рекомендацией для всех пользователей является обновление интерпретатора Python до актуальной, не подверженной уязвимости версии. Для команд, которые по каким-либо причинам не могут немедленно обновиться, существуют временные меры снижения риска.

В качестве обходного пути рекомендуется ограничивать глубину вложенности и общий размер XML-документов, поступающих из ненадежных источников, например, от пользователей или внешних систем. Это можно реализовать на уровне валидации входных данных до их передачи в парсер "minidom". Кроме того, стоит рассмотреть возможность использования альтернативных библиотек для обработки XML в Python, таких как "lxml" или "defusedxml", которые могут предлагать более устойчивые к подобным атакам реализации, хотя и требуют отдельной проверки на наличие собственных уязвимостей.

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

Ссылки

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