Pythonに緊急セキュリティ更新、侵害された証明書の鍵を遮断する3.15.2など5版が公開

コラム

プログラミング言語「Python」の開発チームが、通常の定期更新を待たずに「緊急のセキュリティ更新」を公開しました。対象はPython 3.15.2、3.14.10、3.13.18、3.12.16、3.11.18の5つのバージョンです。

きっかけは、インドの認証局(ウェブサイトの「身分証明書」を発行する機関)であるeMudhraで、証明書の発行に使う秘密の鍵が実質的に破られた状態だったと判明したことです。今回の更新で、Pythonはこの問題のある鍵を自分で見分けて拒否する仕組みを組み込みました。

この記事では、プログラミングに詳しくない方にも分かるように、何が起きたのか、誰に関係があるのか、そして何をすればよいのかを、公式発表をもとに整理します。

何が起きたのか

インターネットで「https://」から始まるサイトに接続するとき、パソコンやプログラムは相手が本物かどうかを「証明書」で確かめています。証明書は、信頼された認証局が発行する、いわばウェブサイトの身分証明書です。

eMudhraの発表によると、同社の中間認証局(親の認証局から権限を分けてもらった発行窓口)8つの鍵に問題があるとの報告を2026年10月17日に受け、翌18日にそれらを失効させました。Pythonの開発者らの解説によると、これらの鍵は極端に弱く作られており、公開されている証明書の情報から計算で割り出せる状態でした。

身分証明書の印鑑が誰にでも複製できる状態になった、とイメージすると分かりやすいでしょう。悪用されると、偽のサイトを本物と信じ込ませ、通信を途中で盗み見たり書き換えたりする「なりすまし(中間者攻撃)」につながるおそれがあります。

ブラウザ各社はすでに対応を進めています。一方、Pythonで書かれたプログラムやツールはブラウザとは別に証明書を確認するため、Python側でも対策が必要になりました。

Python公式(PSF)のXでの案内

Pythonを運営する非営利団体Python Software Foundation(PSF)は、公式Xアカウントで、Python利用者向けに証明書の更新を案内するガイダンスを公開したと告知しています。

今回の更新で直された脆弱性

公式ブログによると、5つのバージョンすべてに共通して、次の修正が含まれています。最も重要なのは、深刻度「緊急(Critical)」と評価された証明書の問題です。

識別番号内容深刻度
CVE-2026-115557問題のあるeMudhraの中間認証局の鍵を、Pythonの通信機能(sslモジュール)が拒否するようにするCVSS 4.0で9.4(Critical)
CVE-2026-114583圧縮ファイル(tar形式)を展開するとき、細工されたファイルによって、指定した保存先の外にファイルが書き込まれる問題の修正CVSS 4.0で6.9(Medium)
gh-160300Cookieの取り扱い(http.cookiejar)で、不正な値を持つCookieを拒否する修正公式発表にCVE番号・評価の記載なし

CVSSは脆弱性の深刻さを0〜10で表す世界共通の物差しで、9.0以上は最も重い「Critical」に分類されます。CVE-2026-115557の公式説明では、既知の侵害された証明書を拒否リスト(ブラックリスト)としてsslモジュールに持たせ、アプリ側の設定にかかわらず拒否する仕組みだとされています。

公式ブログはこの仕組みを、侵害された鍵の悪用に対する「最後の砦」と表現しています。さらに、この更新を入れておけば、pip(Pythonの追加部品をインストールする標準ツール)がまだ古いままでも、pip自体の更新を含めて通常の利用は今回の鍵を使った攻撃から守られると説明しています。

なお、3.13.18、3.12.16、3.11.18には、XML処理部品Expatの更新(CVE-2026-77214、CVE-2026-102633)や、Windowsでのファイル種類判定に関する修正(CVE-2024-3220)など、3.15.1と3.14.9ですでに入っていた修正もまとめて取り込まれています。

どのバージョンを使えばよいのか

Pythonは複数のバージョンが並行してサポートされています。お使いのシリーズごとに、次の版以降にすれば今回の修正が入ります。

シリーズ修正済みバージョン配布形態
3.153.15.2Windows・macOS向けインストーラーあり
3.143.14.10Windows・macOS向けインストーラーあり
3.133.13.18ソースコードのみ(自分でビルドするか、OSやツールの配布を待つ)
3.123.12.16ソースコードのみ
3.113.11.18ソースコードのみ
3.10以前修正版なしサポート終了。新しいシリーズへの移行が必要

「ソースコードのみ」とは、すぐ使えるインストーラーは配布されず、設計図だけが公開される形式のことです。一般の利用者は、後述するHomebrewやDockerなど、普段使っている配布元の更新を待って入れ替えるのが現実的です。

Python 3.10以前は公式サポートが終わっているため、今回の修正は提供されません。PSFも、3.10以前を使っている場合は修正が受けられないと明記しています。

誰に関係があるのか

影響を受けるのは、Pythonで動くプログラムのうち、証明書の確認を行うHTTPS通信をしているものです。具体的には、pipやuvでパッケージをインストールする場面や、Pythonから外部のサービス(Web APIなど)に接続する場面が該当します。

最近は、生成AIのAPIを呼び出す社内ツールや、パッケージを自動でインストールしながら作業するAIエージェントなど、Pythonで動く仕組みが業務の中に増えています。こうした仕組みもPythonの通信機能やpipを使っているため、例外ではありません。

一方で、Pythonを使っていない方、Excelやブラウザだけを使っている方は、今回のPython更新を直接気にする必要はありません。ブラウザについては、各社がすでに対応済みとされています。

自分のPythonのバージョンを確認する方法

まず、今使っているバージョンを確認します。Windowsでは「ターミナル」または「コマンドプロンプト」、macOSやLinuxでは「ターミナル」を開いて、次のように入力します。

python --version

Windowsで「py」コマンドを使っている場合や、macOS・Linuxで「python3」という名前で入っている場合は、次のように入力します。

py --version
python3 --version

表示された番号が、前の表の「修正済みバージョン」より古ければ更新の対象です。

更新のしかた

Pythonの入れ方によって、更新の手順が変わります。代表的な方法をまとめます。

Windows(Python Install Managerを使っている場合):公式ドキュメントによると、次のコマンドで、Install Managerで管理しているPythonを新しい版に入れ替えられます。

py install --update

Windows・macOS(python.orgのインストーラーを使っている場合):python.orgのダウンロードページから3.15.2または3.14.10のインストーラーを入手して実行します。3.13以前のシリーズはインストーラーが出ていないため、この機会に3.14以降への移行を検討するのも一つの方法です。

macOS(Homebrewを使っている場合):Homebrewは3.14.10をすでに配布しています。3.15については、本記事執筆時点ではまだ3.15.1のままでした。

brew update
brew upgrade python@3.14

pyenvを使っている場合:pyenv 2.8.14で5つの修正版すべてが追加されました。pyenv本体を更新してから、修正版をインストールします(Homebrewで入れた場合は「brew upgrade pyenv」で更新します)。

pyenv update
pyenv install 3.14.10

uvを使っている場合:まずuv本体を更新します。uvが管理するPythonの修正版は、配布元のpython-build-standaloneで公開済みですが、それを取り込んだuv本体の新版は本記事執筆時点で未確認です。新版が出たら、次のコマンドで入れ替えられます。

uv self update
uv python upgrade

Dockerを使っている場合:Docker公式のPythonイメージでは、3.15.2と3.14.10のタグがすでに公開されています。既存のイメージは自動では更新されないため、古いキャッシュを使わずに作り直す必要があります。

docker build --pull --no-cache .

Linuxのディストリビューション付属のPythonを使っている場合:OSの更新機能(aptやdnfなど)で配布されるのを待って更新します。提供時期はディストリビューションごとに異なります。

すぐにPythonを更新できない場合の対策

業務システムなどで、Python本体をすぐに入れ替えられないこともあります。PSFは10月20日のガイダンスで、Python本体とは別に、証明書の一覧を持っている各種ツールの更新を呼びかけています。

ツール対策済みバージョン役割
certifi2026.10.19Pythonで広く使われる「信頼できる認証局の一覧」
pip26.2.2パッケージのインストールツール
uv0.13.4高速なパッケージ・Python管理ツール
virtualenv21.14.12仮想環境の作成ツール
conda26.9.4データ分析向けの環境管理ツール
pixi0.82.1環境管理ツール
sigstore4.5.1ソフトウェア署名の確認ツール

PSFは、pipを安全に更新するために、ダウンロードするファイルの「指紋(ハッシュ値)」を指定するコマンドを案内しています。指紋が一致しないファイルは拒否されるため、通信を偽装されても偽物をつかまされにくくなります。

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

注意したいのは、プロジェクトごとに作った「仮想環境」は自動では更新されないことです。仮想環境ごとに上記の更新を行う必要があります。また、PSFはコンテナイメージについて、キャッシュを使わずに作り直すよう求めています。

実際に悪用されているのか

eMudhraは、問題の中間認証局からは証明書を発行しておらず、公表前に鍵が悪用された証拠は把握していないと説明しています。Cloudflareも、自社サービス上で実際の悪用は確認していないと公表しています。

また、本記事執筆時点で、米CISAの「悪用が確認された脆弱性」リストや、JPCERT/CCの注意喚起に今回の件は掲載されていませんでした。とはいえ、鍵は計算で割り出せる状態だったため、悪用が確認されていないうちに更新しておくことが大切です。

まとめ

今回のPython緊急更新は、外部の認証局で起きた鍵の問題に対して、Python自身が「最後の砦」として問題の鍵を拒否する仕組みを組み込んだものです。深刻度はCriticalで、Pythonで通信を行うプログラムやツールを使っている組織は早めの対応が求められます。

やることはシンプルです。まずバージョンを確認し、3.15.2、3.14.10、3.13.18、3.12.16、3.11.18以降に更新します。すぐに更新できない場合は、pipやcertifiなどのツールを最新にしておきましょう。社内でPythonを使ったAIツールや自動化を担当している方がいれば、一声かけておくと安心です。

参考リンク

この記事を書いた人
この記事を書いた人

毎日20時間以上AIの実践・研究に没頭するITエンジニア。20年以上にわたり、オンラインゲームや生活関連など幅広いジャンルのオウンドメディアで執筆・編集長を歴任。現在は上場企業グループの代表取締役を務め、複数の事業者団体で理事を兼務する経営者でもある。テクノロジーの最前線に身を置きつつ、地域の商店街や神社の運営にも深く携わるなど、地域活性化にも尽力。圧倒的な現場経験とITの専門知識、経営者の視点から、信頼性の高い有益な情報を発信している。
Olive株式会社 代表取締役

tanakaをフォローする
コラム
シェアする
tanakaをフォローする

コメント

タイトルとURLをコピーしました