Команда безопасности CPython опубликовала три бюллетеня с описанием уязвимостей, затрагивающих стандартную библиотеку Python. Проблемы обнаружены в модулях configparser и tarfile, две из трёх получили средний уровень опасности, одна - высокий. Разработчики уже выпустили исправления, доступные через штатные каналы обновления.
Детали уязвимостей
Наиболее серьёзная уязвимость, зарегистрированная как CVE‑2026‑11940, связана с функцией tarfile.extractall(). Она позволяет злоумышленнику обходить фильтры, ограничивающие извлечение файлов заданным каталогом. Проблема заключается в том, что при обработке архива, содержащего жёсткие ссылки и символические ссылки, создаётся несоответствие между проверкой пути и реальным размещением ссылки. В результате атакующий может организовать запись или чтение файлов за пределами целевого каталога при извлечении архива. Уязвимость является неполным исправлением более ранней CVE‑2025‑4330 - тот же вектор атаки не был устранён полностью. Высокий уровень опасности назначен из‑за возможности удалённого выполнения операций с файловой системой, что может привести к компрометации целостности и конфиденциальности данных.
Две другие уязвимости оценены как средние. В модуле configparser обнаружена инъекция новой строки при записи конфигурационных файлов (CVE‑2026‑0864). Если приложение использует configparser для записи многострочных значений и злоумышленник может контролировать содержимое таких полей, он может внедрить в выводимый файл дополнительные ключи и значения. Формально это нарушение формата конфигурации, что в некоторых сценариях может привести к изменению логики работы программы или утечке данных. Проблема затрагивает метод write() - запись строк, содержащих символ возврата каретки (\r), обрабатывается некорректно.
В модуле tarfile выявлена ещё одна уязвимость - CVE‑2026‑11972. Она проявляется при открытии архива в потоковом режиме с параметром mode="r|". В этом режиме tarfile не обрабатывал корректно признак конца файла (EOF), что могло привести к бесконечному циклу при разборе специально сформированного архива. Для эксплуатации достаточно передать процессу ссылку на злонамеренный tar‑файл. Последствием является отказ в обслуживании - программа зависает или расходует ресурсы процессора, что особенно критично для серверных приложений, обрабатывающих пользовательские архивы.
Контекст этих уязвимостей важен: CPython - эталонная реализация языка Python, используемая в миллионах проектов по всему миру. Проблемы в стандартной библиотеке затрагивают широкий круг разработчиков, особенно тех, кто развёртывает веб-приложения или автоматизированные системы, обрабатывающие конфигурационные файлы и архивы. Наиболее опасная уязвимость в tarfile.extractall() может эксплуатироваться удалённо, если приложение принимает от пользователя архивы и извлекает их без дополнительных проверок. В случае успешной атаки злоумышленник может перезаписать критически важные файлы (например, скрипты или конфигурацию) или получить доступ к данным за пределами разрешённого каталога.
Исследователь Стан Ульбрих (Stan Ulbrych) сообщил о проблеме CVE‑2026‑11940. В его отчёте указано, что обход фильтра происходит из‑за неверной обработки символических ссылок, размещённых на меньшей глубине, чем связанная с ними жёсткая ссылка. Разработчики CPython признали, что исправление предыдущей уязвимости было неполным, и в этот раз закрыли вектор более тщательно. Патч доступен в pull-request на GitHub (номер 151559).
Аналогичная процедура проведена для двух других уязвимостей. CVE‑2026‑0864 описана Сетом Ларсоном (Seth Larson). Он отметил, что инъекция происходит только при записи значений, содержащих символ \r, и не затрагивает чтение конфигурационных файлов. Тем не менее, в сценариях, где приложение сохраняет пользовательский ввод в конфигурацию, риск реален. Исправление реализовано в pull-request 143929. Что касается проблемы бесконечного цикла в tarfile, Ларсон также уведомил сообщество о патче (pull-request 151982). Разработчики рекомендуют обновиться до последней версии CPython, содержащей все три исправления.
Пользователям и администраторам следует как можно скорее установить обновление, доступное через официальный сайт Python или через менеджер пакетов дистрибутива. Временные меры защиты могут включать отказ от использования потокового режима tarfile для непроверенных источников, а также ручную валидацию конфигурационных файлов, записываемых через configparser, на предмет наличия недопустимых символов. Однако полное устранение рисков обеспечивает только установка патча.
Эти уязвимости вновь напоминают, что даже зрелые языки и библиотеки не защищены от ошибок, а постоянное совершенствование механизмов безопасности остаётся необходимостью. Команда CPython подтверждает приверженность оперативному реагированию на отчёты исследователей, и публикация трёх бюллетеней в один день свидетельствует о налаженной процедуре раскрытия уязвимостей. Разработчикам стоит добавить мониторинг подобных бюллетеней в свой рабочий процесс, чтобы своевременно применять исправления.
Ссылки
- https://mail.python.org/archives/list/security-announce@python.org/thread/AXPSKKTSRKXTTJULW3XSIC74WZNAAPPB/
- https://mail.python.org/archives/list/security-announce@python.org/thread/CV4NE6AFCRJL7XQOHX7J5TSDHUWVWGJS/
- https://mail.python.org/archives/list/security-announce@python.org/thread/LD6QIISNQFQYOIEPJNEUIPV7S3V76FZH/