Python 3.14.8 и 3.12.15 появились в одном внеплановом пакете исправлений безопасности: обновления закрывают проблемы в ssl, tarfile, zipfile, urllib.request и других компонентах стандартной библиотеки. Ветка 3.14 получила около 354 исправлений и полноценные сборки, тогда как Python 3.12.15 распространяется только в исходном коде.

Python 3.14.8 вышел раньше запланированного графика
Python 3.14.8 датирован 30 сентября 2026 года, хотя в официальном графике Python 3.14 релиз 3.14.8 ожидался 6 октября. Команда CPython пометила выпуск как expedited security release — ускоренный релиз безопасности.
Причина хорошо видна по содержимому обновления. В новой версии закрыли сразу несколько уязвимостей в сетевых функциях, обработке архивов и SSL. Параллельно разработчики включили обычный для maintenance-релиза набор исправлений: около 354 изменений в коде, сборочной системе и документации от 142 участников после Python 3.14.7.
Официальная страница Python 3.14.8 содержит установочные варианты для поддерживаемых платформ и исходные архивы. Серия 3.14 остаётся основной стабильной веткой Python с регулярными исправлениями ошибок.
Две ошибки в SSL затрагивали работу с контекстами и именем сервера
CVE-2026-19445 связана с SSLContext на стороне сервера. Ошибка типа use-after-free могла возникнуть, когда SNI callback переключал SSL-контекст, а исходный объект больше не удерживался ссылкой. Такой класс дефектов опасен тем, что программа продолжает обращаться к уже освобождённой области памяти, что способно привести к падению процесса и непредсказуемому поведению.
CVE-2026-19553 касается SSLContext.wrap_bio(). Метод недостаточно строго проверял параметр server_hostname. В актуальных ветках Python добавлена валидация аргументов, а asyncio теперь проверяет server_hostname при создании TLS-соединений.
Поведение различается между поколениями Python. В 3.10–3.12 отсутствие имени хоста при включённом check_hostname вызывает DeprecationWarning ради совместимости. В Python 3.13 и новее такая ситуация приводит к ValueError.
tarfile получил несколько исправлений фильтров распаковки
Сразу несколько CVE относятся к tarfile — модулю стандартной библиотеки для работы с TAR-архивами.
CVE-2026-82049 закрывает сценарий, при котором комбинация жёсткой ссылки и символической ссылки могла позволить изменить файл за пределами каталога распаковки или раскрыть его содержимое. Уязвимость затрагивала механизм extraction filters, который как раз должен ограничивать опасные пути и типы объектов внутри архива.
CVE-2026-19672 исправляет другой обход фильтров: архив мог сформировать путь, который сначала выходит за пределы целевого каталога, а затем возвращается обратно. Такой сценарий позволял создавать каталоги вне ожидаемого места назначения.
Python 3.12.15 получил ещё CVE-2026-87910. Исправление заставляет tarfile повторно учитывать extraction filter в ситуации, когда обработка ссылки откатывается к извлечению другого элемента архива. Если фильтр отклоняет такой элемент, распаковка его пропускает.
В списке Python 3.14.8 CVE-2026-87910 отсутствует, поэтому набор исправлений двух релизов совпадает не полностью.
zipfile ограничил объём памяти при распаковке сжатых данных
CVE-2026-15310 затрагивает zipfile. Проблема позволяла небольшому сжатому элементу архива запросить чрезмерно большой объём памяти при распаковке Bzip2, LZMA, а в Python 3.14 — ещё и Zstandard.
Исправление ограничивает объём данных, который декомпрессор может вернуть за одно чтение. Практический смысл здесь понятен даже без погружения во внутренности ZIP: специально подготовленный архив больше не должен провоцировать неконтролируемое выделение памяти тем же способом.
Разработчики отдельно уточнили границы исправления. Сторонние декомпрессоры, которые подменяют внутреннюю функцию _get_decompressor() и не поддерживают ожидаемый интерфейс needs_input и двухаргументный decompress(), могут сохранять прежнее поведение.
urllib.request больше не смешивает учётные данные разных URL-схем
CVE-2026-15806 связана с urllib.request.HTTPPasswordMgr. До исправления сохранённые учётные данные для одной URL-схемы могли использоваться при совпадающем адресе другой схемы.
Типичный пример — пара HTTPS и HTTP. После исправления менеджер паролей учитывает схему URL, поэтому данные, сохранённые для HTTPS, не должны автоматически применяться к соответствующему HTTP-адресу.
Ещё одно изменение касается stringprep и IDNA. CVE-2026-17084 ограничивает обработку атрибутами Unicode, определёнными в RFC 3454 и Unicode 3.2.0. Это возвращает реализацию к набору данных, на который опирается исходная спецификация StringPrep.
Python 3.14.8 обновил OpenSSL до 3.5.9
В Python 3.14.8 встроенная версия OpenSSL обновлена до 3.5.9 для Windows, macOS, Android и iOS. Для пользователей готовых сборок это изменение приходит вместе с самим интерпретатором.
Одновременно bundled Expat обновлён до 2.8.5. Expat используется в XML-стеке Python и входит в поставку CPython на ряде платформ.
Для Python 3.12.15 ситуация другая: релиз распространяется только исходным кодом и не включает bundled OpenSSL. Поэтому строка об OpenSSL 3.5.9 относится именно к более новой ветке 3.14.
Python 3.12.15 существует только как security-релиз в исходниках
Python 3.12 перешёл в фазу security fixes only. По странице Python 3.12.15 ветка больше не получает регулярные исправления ошибок, а security-релизы выходят нерегулярно и только в исходном виде до октября 2028 года.
Последним полноценным bugfix-релизом Python 3.12 с бинарными установщиками был Python 3.12.10. В 3.12.15 доступны исходные архивы .tar.gz и .tar.xz, снабжённые Sigstore-подписями, SBOM и контрольными суммами.
Такое различие хорошо показывает текущий жизненный цикл двух веток. Python 3.14.8 объединяет исправления безопасности с обычной maintenance-работой и готовыми сборками. Python 3.12.15 обслуживает уже существующие установки за счёт точечных security-патчей.
Один пакет релизов закрыл общий набор проблем сразу в нескольких ветках Python
Официальный Python Insider 1 октября 2026 года одновременно объявил Python 3.10.22, 3.11.17, 3.12.15, 3.13.16 и 3.14.8. Большая часть перечисленных уязвимостей закрыта сразу в нескольких поддерживаемых сериях, что указывает на общий код стандартной библиотеки, который продолжает использоваться параллельно в разных поколениях CPython.
Для Python 3.14.8 этот выпуск стал восьмым maintenance-релизом и внеплановым security-обновлением. Для Python 3.12.15 он подтверждает другой этап жизненного цикла: ветка получает только исправления безопасности и больше не выпускает штатные Windows- и macOS-инсталляторы.
Следующая развилка уже заложена в расписании Python: 3.14 продолжит получать регулярные bugfix-релизы, а 3.12 останется на нерегулярных source-only security-выпусках до октября 2028 года. Частота следующих исправлений 3.12 будет зависеть от появления новых уязвимостей.