Новости · Python и безопасность файлов

Python 3.14.7: новые патчи для tarfile, binascii и libexpat

5 августа 2026 года Python Software Foundation одновременно выпустила Python 3.14.7 и Python 3.13.15. Седьмой поддерживающий релиз ветки 3.14 содержит около 499 исправлений от 86 участников и закрывает несколько проблем безопасности, непосредственно связанных с обработкой архивов и файловых данных.

30 августа 2026 Редакция Loadfile Чтение 5 мин
Иконка Python-файла и TAR-архива с защитным экраном безопасности — обновление Python 3.14.7

Коротко: 5 августа 2026 вышли Python 3.14.7 и 3.13.15. Главный патч безопасности — tarfile.data_filter() теперь отклоняет символические ссылки, перезаписывающие директорию назначения при извлечении архива, закрывая несколько обходов фильтра. Также обновлены libexpat до 2.8.3 (CVE 2026-72522) и встроенный pip до 26.1 (CVE 2026-3219).

Содержание
  1. Что произошло
  2. Патчи tarfile: закрыты обходы фильтра
  3. Остальные исправления безопасности
  4. Кого касается обновление
  5. Источники

Что произошло

5 августа 2026 года Python Software Foundation (PSF) выпустила два плановых поддерживающих релиза: Python 3.14.7 и Python 3.13.15. Оба вышли одновременно — это стандартная практика, когда исправления безопасности применяются сразу к нескольким активным веткам.

Python 3.14.7 — седьмой поддерживающий выпуск ветки 3.14, запущенной в октябре 2025 года. По данным PSF, релиз включает около 499 исправлений от 86 участников, накопленных со времени предыдущего релиза 3.14.6. Среди них несколько патчей безопасности, непосредственно затрагивающих работу с файлами и архивами.

Параллельно с 3.14.7 вышел Python 3.13.15 — поддерживающий релиз для ветки 3.13, которая по-прежнему получает обновления безопасности. Оба релиза доступны на официальном сайте python.org.

Патчи tarfile: закрыты обходы фильтра

Наиболее значимое для работы с файлами изменение — улучшение модуля tarfile, отвечающего за чтение и запись TAR.GZ-архивов и других TAR-форматов. Конкретно: усилен механизм tarfile.data_filter().

data_filter() — это фильтр безопасного извлечения, введённый в Python 3.12 как ответ на серию уязвимостей обхода пути в TAR-архивах. Фильтр проверяет каждый элемент архива перед записью на диск и отклоняет потенциально опасные записи: абсолютные пути, элементы с .. и подозрительные символические ссылки.

В Python 3.14.7 фильтр получил дополнительную проверку: он теперь отклоняет символические ссылки, целью которых является перезапись директории назначения. Такая атака могла позволить архиву подменить папку, куда разархивируются файлы, указав на неё через симлинк, — после чего все последующие записи шли бы в произвольное место файловой системы.

Как включить безопасное извлечение в Python

При использовании tarfile.extractall() передавайте аргумент filter='data': это активирует data_filter() и все его проверки, включая исправления из Python 3.14.7. Без явного filter= поведение зависит от версии Python.

По описанию в официальном changelog, закрыто несколько обходов фильтра извлечения данных, связанных с целями символических ссылок. Это продолжение работы, начатой в Python 3.12 и усиленной в последующих релизах — в частности, ранее похожие патчи вошли в Python 3.12.14.

Остальные исправления безопасности

Помимо tarfile, Python 3.14.7 содержит несколько других патчей, связанных с обработкой данных и файлов.

libexpat 2.8.3 — закрытие CVE 2026-72522

Интерпретатор Python поставляется с встроенной копией библиотеки libexpat — XML-парсера, используемого модулями xml.etree.ElementTree, xml.parsers.expat и рядом других. В Python 3.14.7 libexpat обновлён до версии 2.8.3, которая закрывает уязвимость CVE 2026-72522. Характер уязвимости в changelog не детализирован, но обновление libexpat рекомендуется всем, кто обрабатывает XML-данные из внешних источников или пользовательских файлов.

Отдельно в этом же релизе libexpat был обновлён до 2.8.1 с патчем для CVE 2026-45186 — то есть закрыты две разных уязвимости в XML-парсере одновременно.

binascii.a2b_uu() — чтение за границей буфера

Исправлено чтение одного байта за пределами выделенного буфера в функции binascii.a2b_uu(). Эта функция декодирует данные в формате uuencoding — кодировке, исторически использовавшейся для передачи бинарных файлов через электронную почту. Хотя формат считается устаревшим, он по-прежнему встречается при обработке архивных вложений и legacy-данных. Чтение за границей буфера могло вызывать нестабильное поведение интерпретатора на специально подготовленных входных данных.

pip 26.1 — закрытие CVE 2026-3219

Встроенная в Python копия пакетного менеджера pip обновлена до версии 26.1, которая закрывает CVE 2026-3219. Детали уязвимости pip относятся к области управления пакетами, а не к работе с файловыми форматами напрямую, однако pip непосредственно загружает и распаковывает пакеты с дистрибутивными архивами — поэтому его безопасность критична для цепочки поставок пакетов.

ftplib и обработка PASV

Завершено исправление CVE-2021-4189 в модуле ftplib, отвечающем за работу с FTP-серверами. Уязвимость была связана с командой PASV (пассивный режим) и некорректной обработкой адресов в ответе сервера. Python 3.14.7 закрывает её полностью.

HTTPPasswordMgr и HTTPS-учётные данные

Исправлена утечка учётных данных между HTTPS и HTTP: ранее HTTPPasswordMgr мог передать пароль, сохранённый для HTTPS-URL, при запросе к совпадающему HTTP-адресу того же хоста. Это затрагивало код, использующий urllib для автоматической аутентификации, — например, при скачивании файлов через HTTP Basic Auth.

Кого касается обновление

Обновление актуально прежде всего для разработчиков и системных администраторов, чьи скрипты обрабатывают TAR-архивы из внешних источников. Если приложение принимает TAR.GZ, TAR.BZ2 или TAR.XZ от пользователей или загружает их из интернета и извлекает содержимое на диск — обновление следует считать приоритетным.

Пользователи Python в корпоративных окружениях, которые работают с XML-документами от внешних поставщиков (EDI, финансовые выгрузки, конфигурационные файлы), также должны обновиться из-за патчей libexpat.

Для большинства пользователей Python, работающих только с локальными архивами, риск невысок, но обновление до 3.14.7 или 3.13.15 рекомендуется — это плановый поддерживающий релиз без ломающих изменений.

Идентифицировать, какой именно формат файла перед вами, можно инструментом определения формата по сигнатуре — прямо в браузере, без установки программ.

Источники

Читайте также