21 октября 2026 года релиз-менеджер Хьюго ван Кеменаде объявил в блоге Python Insider о срочных выпусках Python 3.15.1, 3.14.9 и 3.13.17. Новых функций в них нет: во всех трёх обновлён встроенный pip до версии 26.2.2, а вместе с ним набор корневых сертификатов certifi 2026.10.19. Причина в инциденте с удостоверяющим центром eMudhra (emSign).
Если у вас на сервере крутятся скрипты, боты или сайт на Python, важно не только поставить новый релиз. Старый pip сидит в каждом виртуальном окружении отдельно, и его нужно обновить руками.
Что случилось с eMudhra
По данным страницы инцидента, закрытые ключи восьми промежуточных сертификатов eMudhra оказались скомпрометированы. Эти сертификаты связаны с корнями, которым доверяют Mozilla, Microsoft, Apple и Chrome. С таким ключом можно выпустить сертификат на любой сайт и выдать себя за него, то есть устроить атаку «человек посередине».
Ключи удостоверяющий центр сгенерировал с ошибкой, и восстановить их можно прямо из самих сертификатов. Такая возможность была с апреля 2025 года, когда эти сертификаты выпустили. Автор находки 17 октября подписал тестовое сообщение каждым из восьми ключей и отправил доказательство в корневые программы браузеров. Разработчик CPython Кристиан Хаймс в обсуждении на discuss.python.org уточнил, что у всех восьми ключей закрытое значение было меньше 256, а у одного вообще равно 4.
Firefox и Chrome блокируют эти сертификаты с 17 октября, Windows с 20-го, продукты Apple с 22-го. Браузерам помогает и Certificate Transparency: в публичных журналах нет сертификатов от этих промежуточных центров, так что подделку браузер бы не принял. А вот curl, Python-скрипты и прочие консольные клиенты CT обычно не проверяют. Использовал ли кто-то ошибку против них, неизвестно.
Почему мало обновить ca-certificates
Разработчик CPython Сет Ларсон 20 октября опубликовал на discuss.python.org список минимальных безопасных версий. Корень emSign убран из certifi, и обновить нужно всё, что тащит свой набор сертификатов:
- certifi 2026.10.19 (рекомендуют именно её, а не 2026.10.18 из первого бюллетеня);
- pip 26.2.2;
- uv 0.13.4;
- sigstore 4.5.1;
- conda 26.9.4;
- pixi 0.82.1.
Главная ловушка в pip. Как пояснил Кристиан Хаймс, pip всегда грузит сертификаты из своего встроенного certifi вдобавок к системному хранилищу, и отключить это штатно нельзя. Переменная REQUESTS_CA_BUNDLE и ключ –cert только добавляют центры, а не убирают. Поэтому любой pip старше 26.2.2 продолжает доверять скомпрометированным сертификатам, даже если в системе их уже вычистили. В uv можно включить системное хранилище через UV_SYSTEM_CERTS=true, но надёжнее просто обновиться.
Что сделать на сервере
Сначала системные сертификаты. В Debian и Ubuntu исправленный пакет ca-certificates уже вышел, в Alpine, Fedora, RHEL 8-10 и Arch тоже. Обычное обновление системы его подтянет:
sudo apt update && sudo apt install --only-upgrade ca-certificates
Потом pip в каждом виртуальном окружении. Команда разработчиков Python советует ставить новый pip прямо из колеса с проверкой хеша, чтобы старый pip не скачивал обновление по уязвимому каналу. Активируйте venv и выполните:
python -m pip install "pip @ https://files.pythonhosted.org/packages/3f/06/3e4420302363fbb71be3c7f35ce042f54bfca330e3e66b3a2e3c4cca579f/pip-26.2.2-py3-none-any.whl#sha256=fd7f4dfa8190e014013b9f08f3e973f4e4c26ffd179a204895533a7254813a70" python -m pip install --upgrade certifi python -m pip --version python -c "import certifi; print(certifi.__version__)"
Версия certifi должна быть не ниже 2026.10.19. Если стоит uv, его тоже нужно поднять хотя бы до 0.13.4, например командой uv self update для отдельной установки. Docker-образы с Python стоит пересобрать без кэша слоёв, иначе в них останутся старые сертификаты:
docker build --no-cache -t myapp .
Проверить клиента можно на странице инцидента: там есть тестовые адреса с сертификатами от скомпрометированных центров. Ошибка сертификата значит, что всё в порядке, успешный ответ значит, что клиент им ещё доверяет. Например, для Python:
python -c "import urllib.request; urllib.request.urlopen('https://dv-g3b-emudhra.we-have-a-problem.com/')"
Ещё в выпусках
Обычно в ветку только с исправлениями безопасности pip не обновляют, чтобы ничего не сломать. Для 3.13 сделали исключение: она только что перешла в этот режим, и команда решила выпустить её с установщиками. А установщик для macOS теперь собран с предварительной версией Tk, где исправлено возможное зависание tkinter и IDLE на macOS 27.0.
Итог простой: поставьте свежий Python, если пользуетесь сборками с python.org, обновите ca-certificates, а главное, pip, certifi и uv во всех окружениях и контейнерах. Без этого скрипты продолжат верить сертификатам, которые браузеры отвергают с 17 октября.