Уязвимость Python USN-8524-1: защита от XML DoS атак
В безопасности системного администрирования критически важно своевременно реагировать на уязвимости в интерпретаторах языков программирования, которые используются в системных скриптах и веб-приложениях. Недавнее уведомление от Ubuntu Security Notices (USN-8524-1) предупреждает об уязвимости в Python, которая может привести к отказу в обслуживании (DoS).
Суть уязвимости: Hash-flooding в XML-парсерах
Проблема заключается в недостаточном использовании энтропии для защиты от атак типа hash-flooding в модулях xml.parsers.expat и xml.etree.ElementTree. Данная уязвимость позволяет злоумышленнику вызвать аварийное завершение работы (crash) интерпретатора Python при обработке специально сформированного XML-документа.
Атаки типа hash-flooding эксплуатируют особенности работы хеш-таблиц. Если входные данные подобраны таким образом, чтобы вызывать коллизии хеш-функции, это приводит к резкому росту нагрузки на процессор и переполнению ресурсов, что делает невозможным дальнейшую работу приложения или всей системы.
Затронутые версии Python
Уязвимость затрагивает следующие версии интерпретатора:
- Python 2.7
- Python 3.5
Администраторам необходимо проверить наличие установленных версий этих интерпретаторов в своих системах, особенно если на серверах развернуты устаревшие приложения или скрипты автоматизации, использующие данные версии.
Способы устранения и минимизация рисков
Для устранения уязвимости требуется обновление соответствующих пакетов Python до версий, в которых реализована корректная защита с использованием достаточного объема энтропии. В дистрибутивах семейства Ubuntu стандартным и наиболее безопасным способом является выполнение системного обновления.
Обновление системы
Для обновления пакетов в Ubuntu используйте стандартный менеджер пакетов apt. Перед выполнением операций с системными пакетами рекомендуется убедиться в наличии резервной копии данных.
# Обновление списка пакетов
sudo apt update
# Применение обновлений безопасности
sudo apt upgrade
После завершения процесса обновления рекомендуется перезапустить сервисы, использующие Python, или перезагрузить систему для гарантии применения всех исправлений в оперативной памяти.
Проверка результата
После обновления можно проверить текущую версию установленного Python с помощью команды:
python --version
# или
python3 --version
Однако, поскольку уязвимость связана с внутренними механизмами модулей XML, наиболее надежным способом проверки является подтверждение того, что установленная версия пакета соответствует исправленной версии из репозитория безопасности Ubuntu.
Заключение
Уязвимость в модулях обработки XML представляет серьезную угрозу для доступности сервисов. Рекомендуется не откладывать обновление Python до критических сбоев, особенно если ваши системы обрабатывают XML-данные из внешних, потенциально недоверенных источников.