Hазработчики CPython выпустили обновление, устраняющее уязвимость высокого уровня опасности (CVE-2026-15308). Ошибка обнаружена в инкрементальном HTML-парсере (html.parser.HTMLParser) и позволяет удалённо истощить ресурсы центрального процессора (CPU) без аутентификации. Проблеме присвоен рейтинг 8,7 по шкале CVSS 4.0 - это означает, что эксплуатация не требует сложных условий и доступна из сети.
Уязвимость CVE-2026-15308
Суть уязвимости кроется в способности парсера попадать в бесконечный цикл при обработке специально сформированных незавершённых объявлений разметки. Если злоумышленник отправляет на обработку приложению, использующему HTMLParser из CPython, повторяющиеся фрагменты такого типа, парсер начинает потреблять всё больше вычислительных ресурсов. В результате уязвимая система перестаёт отвечать на легитимные запросы - наступает отказ в обслуживании (DoS). При этом вектор атаки не требует от нападающего привилегированного доступа или каких-либо учётных данных.
Проблема затрагивает все версии CPython до 3.15.0. Это означает, что под ударом находится огромное количество развёрнутых решений - от веб-приложений на Django и Flask до инструментов автоматизации и скриптов, обрабатывающих недоверенный HTML. Особенно опасна ситуация для серверных сред, где парсер может быть вызван для каждого входящего запроса, а также для встроенных систем, использующих Python для разбора пользовательского контента на веб-страницах. Учитывая популярность CPython, потенциальное число пострадавших систем оценивается в миллионы.
Разработчики из Python Software Foundation уже опубликовали патч, входящий в состав релиза CPython 3.15.0. В официальном бюллетене подчёркивается, что причиной уязвимости стал недостаток в логике парсера при работе с неполными конструкциями HTML - реализация не проверяла наличие закрывающего символа и зацикливалась. Администраторам рекомендуется как можно скорее обновить интерпретатор до версии 3.15.0 или применить предложенный коммит из репозитория, указанный в соответствующем запросе на слияние (pull request). Временным решением может служить отключение обработки непроверенного HTML через HTMLParser, однако это не всегда возможно в рабочих сценариях.
Это не первая уязвимость в стандартных библиотеках Python, вызванная неэффективной обработкой некорректного ввода. Ранее подобные проблемы находили в модулях tarfile и zipfile, а также в парсерах других распространённых языков. Тенденция показывает, что даже простые на первый взгляд ошибки проектирования могут приводить к серьёзным последствиям при масштабном использовании. С учётом высокого рейтинга уязвимости и доступности эксплойта (отсутствие ограничений по сети, без аутентификации), пользователям CPython стоит проявить бдительность и не откладывать установку обновления.
Ссылки
- https://www.cve.org/CVERecord?id=CVE-2026-15308
- https://mail.python.org/archives/list/security-announce@python.org/thread/F6453LWKSHKCTWFLCOURWPLETNUIW2Z5/
- https://github.com/python/cpython/pull/153031