25 октября 2026 года вышел Python 3.15.2 — внеплановое обновление безопасности, которое запрещает использование скомпрометированных сертификатов eMudhra при проверке HTTPS-соединений. Защита работает внутри модуля ssl, в том числе когда программа использует собственный набор доверенных сертификатов. Релиз также закрывает проблемы при распаковке TAR-архивов, обработке cookie и одновременной загрузке модулей несколькими потоками.

Python 3.15.2 отклоняет TLS-сертификаты с опасными ключами eMudhra
После компрометации промежуточных ключей удостоверяющего центра eMudhra возникла проблема для приложений, проверяющих подлинность HTTPS-сайтов. Если программа продолжает доверять затронутой цепочке сертификатов, злоумышленник при возможности перехватить сетевое соединение может попытаться выдать свой сервер за настоящий. Подобная атака опасна и при обращении к репозиториям программных пакетов, включая PyPI.
В Python 3.15.2 для этого случая изменили сам механизм проверки сертификатов в модуле ssl. Он отклоняет TLS-цепочки с известными скомпрометированными промежуточными ключами eMudhra. Проверка привязана к открытому ключу сертификата, поэтому блокировка распространяется и на сертификаты, подписанные другим центром, если в них повторно использован тот же ключ.
Почему блокировка потребовалась на уровне Python? Системные хранилища доверенных сертификатов обновляются с разной скоростью, а некоторые библиотеки поставляют собственные наборы центров сертификации. В результате одна и та же HTTPS-цепочка могла считаться недоверенной в браузере, но проходить проверку в другом приложении. Исправление CVE-2026-115557 создаёт дополнительный барьер внутри интерпретатора, когда проверка сертификатов включена. Соединения с отключённой проверкой (CERT_NONE) этим механизмом не защищены.
Чем защита Python 3.15.2 отличается от обновления 3.15.1
21 октября вышел Python 3.15.1. Тогда разработчики обновили поставляемый вместе с интерпретатором pip до версии 26.2.2 с набором сертификатов certifi 2026.10.19. Это было связано с тем же инцидентом eMudhra: pip использует встроенные доверенные сертификаты при загрузке пакетов.
У такого исправления оставалось ограничение. В уже существующем виртуальном окружении могла сохраняться старая версия pip и её прежний набор сертификатов. Python 3.15.2 переносит проверку опасных ключей глубже — в модуль ssl. По заявлению команды релиза, обычные операции pip, включая обновление самого менеджера пакетов, теперь защищены от атак с использованием именно этих ключей, даже если pip пока не обновлён.
При этом новая проверка ssl не заменяет все механизмы защиты соединений и не устраняет другие возможные проблемы со старыми зависимостями. Её действие ограничено определёнными скомпрометированными ключами и соединениями с включённой проверкой сертификатов.
Фильтр tarfile больше не допускает подмену каталога распаковки
Второе исправление безопасности, CVE-2026-114583, относится к стандартному модулю tarfile. Он используется для чтения и извлечения TAR-архивов, в том числе полученных из внешних источников.
Проблема была связана с символическими и жёсткими ссылками внутри архива. В определённых условиях ссылка могла заменить каталог назначения распаковки и изменить путь, по которому будут извлекаться последующие файлы. Защитный фильтр tarfile.tar_filter некорректно обрабатывал такие записи.
Теперь фильтр отклоняет ссылки, способные подменить сам каталог назначения. Это важно для сервисов, которые автоматически принимают и распаковывают архивы: путь файла внутри архива нельзя считать безопасным только потому, что он выглядит относительным. Исправление касается конкретного обхода фильтра, а не всех возможных рисков обработки недоверенных архивов.
http.cookiejar устранил обход проверки домена через отрицательную версию cookie
Ещё одна ошибка находилась в http.cookiejar — библиотеке, которая хранит cookie и передаёт их при HTTP-запросах. Раньше параметр Version с отрицательным значением позволял обойти проверку принадлежности cookie домену.
В такой ситуации сервер одного сайта мог заставить общий контейнер CookieJar сохранить или перезаписать cookie, предназначенную для другого домена. Это создавало риск вмешательства в состояние последующих HTTP-запросов. Разработчики уточняют, что сама ошибка не давала атакующему серверу прочитать чужие cookie. В Python 3.15.2 cookie с отрицательной версией отклоняются.
Исправлен взаимный блок потоков при импорте модулей
В официальной документации Python 3.15.2 отдельно отмечено исправление importlib. После изменения механизма импорта в Python 3.15.0 несколько потоков, впервые загружавших вложенные модули одного пакета, могли столкнуться с взаимной блокировкой или неожиданными ошибками импорта.
Теперь блокировка импорта пакета освобождается сразу после завершения его __init__. Скорректировано и поведение importlib.import_module() при циклическом импорте, распределённом между потоками: оно согласовано с обычным оператором import. Изменение затрагивает приложения с параллельной инициализацией модулей, в которых подобный сбой мог проявляться нерегулярно.
Срочные исправления получили и другие поддерживаемые версии Python
В Python 3.15.2 вошло около 130 исправлений ошибок, изменений сборки и документации от 70 участников после выпуска 3.15.1. Одновременно команда опубликовала Python 3.14.10, 3.13.18, 3.12.16 и 3.11.18 с аналогичными исправлениями безопасности. Для веток 3.15 и 3.14 доступны готовые установщики; обновления 3.13, 3.12 и 3.11 выпущены в виде исходного кода.
Последовательность октябрьских релизов показывает, как менялась защита Python от инцидента eMudhra: 3.15.1 обновил сертификаты, поставляемые вместе с pip, а 3.15.2 добавил блокировку скомпрометированных ключей при проверке TLS внутри ssl. Отдельные исправления tarfile и http.cookiejar закрывают проблемы, не связанные с центром сертификации. Для соединений без проверки сертификатов ограничения прежние: новая блокировка ssl на них не распространяется.
Источники
- Python.org — Python 3.15.2, официальный релиз от 25 октября 2026 года
- Python Core Development — объявление о пяти срочных обновлениях от 26 октября
- Документация Python — изменения в Python 3.15.2
- Python Core Development — разъяснение инцидента с сертификатами eMudhra
- CPython — исправление обработки ссылок в tarfile
- CPython — ошибка проверки домена в http.cookiejar