緊急サーバー・OSS

Python の ssl が侵害された eMudhra の中間CAを拒否、certifi も緊急更新(CVE-2026-115557)

重要ポイント

  • Python の ssl モジュールが、侵害された eMudhra の中間 CA を拒否するように(CVE-2026-115557、2026年10月24日公表)
  • CVSS 4.0 は 9.4(Critical)。対象は CPython 3.16.0 より前のすべての版。修正は 3.13.18・3.12.16・3.11.18(10月25日)。3.15・3.14 は修正が取り込み済みで、次のリリース待ち
  • CA 証明書の詰め合わせ certifi も緊急更新(10月20日、Critical)。emSign のルート証明書を削除。2026.10.23 以降に更新を
  • あわせて tarfile の展開フィルタの回避(CVE-2026-114583、CVSS 6.9)も同じ版で修正
  • 悪用の報告は公表されていません。Amazon Linux 2023 の python3 の修正版(ALAS)はまだ出ていません(10月26日時点)

追記(2026年10月31日): Amazon Linux 2023 の python3.11 の修正版が公開されました(ALAS2023-2026-3356、python3.11-3.11.18-1.amzn2023.0.1)。python3.9・3.12・3.13・3.14 は修正待ちです。→ 続報の記事

バージョンと対処(まずここを確認)

製品影響を受けるバージョン修正版(これ以上にする)
CPython 3.133.13.17 以前3.13.18
CPython 3.123.12.15 以前3.12.16
CPython 3.113.11.17 以前3.11.18
CPython 3.14 / 3.153.14.9 / 3.15.1 以前修正版は未リリース(修正は取り込み済み。certifi の更新で当面の対処)
certifi(PyPI)2019.03.09 以降の古い版2026.10.18 以降(最新は 2026.10.23)
Amazon Linux 2023 の python3・python3.x—ALAS は未公表

対処: まず python3 -m pip install -U certifi pip で certifi と pip を更新し、Python 本体も上の修正版にします。コンテナのイメージ・仮想環境(venv)は作り直します。

確認: python3 --version と python3 -m pip show certifi(または python3 -c "import certifi; print(certifi.__version__)")。

概要

インドの認証局 eMudhra の中間 CA(認証局の下で証明書を発行する証明書)の秘密鍵が侵害された問題を受けて、Python Software Foundation は2026年10月20日に certifi の緊急更新を、10月24日に CPython の ssl モジュールの修正(CVE-2026-115557)を公表しました。侵害された鍵があると、第三者が正規に見える証明書を作り、通信の盗み見や改ざん(中間者攻撃)ができてしまいます。10月25日公開の Python 3.13.18・3.12.16・3.11.18 で、これらの鍵を使った証明書を必ず拒否するようになりました。同じ版で、tar ファイルの展開の安全装置を回避できる問題(CVE-2026-114583)も直っています。

影響と対処

影響を受けるもの

問題対象深刻度
CVE-2026-115557(ssl・侵害された中間 CA を拒否しない)CPython 3.16.0 より前CVSS 4.0 9.4(Critical)
GHSA-6q48-6c7w-9gw2(certifi・emSign のルートを削除)certifi 2019.03.09 以降の、2026.10.18 より前Critical
CVE-2026-114583(tarfile・tar フィルタの回避)CPython 3.16.0 より前CVSS 4.0 6.9(Medium)

requests・urllib3 など、多くのライブラリは certifi の証明書を使って HTTPS の相手を確かめます。Web サーバーで外部の API を呼ぶアプリ、バッチ、AWS Lambda の関数、CI のジョブなど、Python で HTTPS の通信をするものはどれも関係します。

どんな問題か

ssl(CVE-2026-115557): ふつう、侵害された証明書は「失効」の情報で無効になりますが、Python の ssl モジュールは既定では失効を確かめません。そこで Python は、侵害された eMudhra の中間 CA の鍵を一覧(拒否リスト)にして、証明書を確かめる設定(CERT_REQUIRED など)のときは必ず拒否するようにしました。鍵(SubjectPublicKeyInfo)のハッシュで照合するので、同じ鍵を使い回したクロス署名の証明書も拒否されます。Windows では OS の「信頼しない証明書」の一覧を Python が読まないという指摘があり、CPython の開発者のあいだで確認が続いています。

certifi: certifi 2026.10.18 以降では、emSign のルート証明書が証明書の一覧から外れました。このルートの下の中間証明書は、鍵の侵害で失効しています。Chrome・Firefox・Go などもすでに遮断しています。

tarfile(CVE-2026-114583): tarfile.extractall() に filter="tar" を付けて展開するとき、細工したリンクの入った tar ファイルで、展開先のフォルダの外にファイルを書き込まれるおそれがあります。外から受け取った tar ファイルを展開する処理(アップロードされたファイルの処理など)が対象です。

対処方法

  • certifi を更新する: python3 -m pip install -U certifi pip。requirements.txt や poetry.lock・uv.lock で版を固定している場合は、certifi を 2026.10.23 以降に上げてから入れ直します
  • Python 本体を更新する: 3.13・3.12・3.11 は 3.13.18・3.12.16・3.11.18 へ。3.14・3.15 は次のリリースを待ち、それまでは certifi の更新で対処します。3.10 はサポートが終了しています(最後の版は 3.10.22)
  • コンテナと Lambda: 公式の python イメージを使うビルドは、ベースのイメージを取り直して(docker build --pull)作り直します。Lambda はデプロイのパッケージに入れた certifi を更新します
  • tar ファイルの展開: 修正版にするまで、信頼できない tar ファイルは filter="tar" で展開しないようにします
  • Amazon Linux 2023: OS の python3・python3.x の修正版(ALAS)は10月26日時点で出ていません。出たらこのサイトでお知らせします。sudo dnf check-update --security で、OS の証明書(ca-certificates)などの更新もあわせて確認します

確認方法

Python の版は python3 --version、certifi の版は python3 -m pip show certifi で確かめます。仮想環境ごと・コンテナごとに入っているので、それぞれの環境で確認します。Amazon Linux 2023 の OS のパッケージは rpm -q python3 python3.11 python3.12 python3.13 で確かめられます(入っていないものは「インストールされていません」と出ます)。

対応チェックリスト

  • Python を使っているサーバー・コンテナ・Lambda・CI の一覧を出す
  • certifi を 2026.10.23 以降に更新する(ロックファイルも)
  • Python を 3.13.18・3.12.16・3.11.18 に更新する(3.14・3.15 は次のリリースで)
  • コンテナのイメージを作り直す
  • 外から受け取った tar ファイルを展開する処理がないか確かめる

出典