Pythonの脆弱性は、本体(CPython)の標準ライブラリと、pipで入れるパッケージに分けて確かめます。本体は使っている系列がサポート中かと最新版かを、パッケージは間接依存も含めて実際に入っている版を見ます。
- Python 3.10は2026年10月1日にサポートが終わりました。10月25日のsslの修正(CVE-2026-115557)は3.11以上にだけ出ています。
- Brotli・Starlette・LiteLLM・Langflowは、米CISAが悪用を確認した一覧(KEV)に載っています。
- パッケージはpip-auditかuv auditで照合し、本番で動いている版と、修正版が求めるPythonの版も確かめます。
01Pythonで今確かめたい脆弱性
Pythonの本体と、よく使われるパッケージのうち、米CISAの悪用確認の一覧(KEV)に載ったもの、深刻度が緊急のものを挙げます。2026年11月1日時点の内容です。[1]
| 脆弱性・問題 | 主な対象・条件 | 修正・対応 | 詳細 |
|---|---|---|---|
| Python本体のssl:侵害されたeMudhraの中間CA鍵 CVE-2026-115557 | HTTPSで外部に接続するPython。修正前は、失効の確認を設定していないと、侵害された鍵の証明書を受け入れるおそれがあります。PSFの評価でCVSS 4.0の9.4(緊急)。KEVには載っていません。[2] | 3.11.18・3.12.16・3.13.18・3.14.10・3.15.2。3.10以前に修正版はありません。[2][3] | CVEの記録 |
| Brotliの展開処理 CVE-2026-111497 | 外部から受け取った圧縮データを展開する環境。10月27日(米国時間)にKEVに追加。 | brotli 1.2.1・brotlicffi 1.2.1.0 | 確認方法の詳細 |
| StarletteのBadHost CVE-2026-48710 | request.urlのパスでアクセスを判定している場合。FastAPIの下でも動きます。9月2日にKEVに追加。 | 1.0.1以上 | 確認方法の詳細 |
| LiteLLMのプロキシ CVE-2026-59822ほか | プロキシとして起動している環境。2026年はSQLインジェクション、コマンド実行、MCPの認証不備の3件がKEVに追加。 | 1.106.2以降の版を==で固定(提供元の案内) | 切り分けの詳細 |
| Langflowの認証なしコード実行 CVE-2026-9198 | Langflow OSS 1.0.0〜1.10.0の既定の構成。CVSS 3.1の9.8(IBMの評価)。8月4日(米国時間)にKEVに追加。[4] | 1.10.1以上。IBMは回避策を「なし」としています。[4] | IBMの告知 |
| PillowのFlashPix読み込み CVE-2026-112398 | olefileを入れた環境で、受け取った画像を開く処理。GitHubの評価でCVSS 4.0の9.2(緊急)。PoCは公開済みで、KEVには載っていません。 | 13.0.0(Python 3.11以上が必要)[5] | 対象の詳細 |
2026年のKEVには、ほかにMLflow(CVE-2026-64849、3.15.0で修正)とRay(CVE-2025-62593)も載っています。Langflowは2026年に5件がKEVに追加されているため、1件ずつではなく最新版への更新で確かめます。[1]
02Pythonのサポート期限と更新先
Pythonは、新しい系列が年に1回出て、約2年はバグ修正、その後は公開から5年までセキュリティ修正だけが出ます。[6][7]
| 系列 | 状態 | サポート終了 | 最新版(11月1日時点) |
|---|---|---|---|
| 3.15 | バグ修正 | 2031年10月(予定) | 3.15.2 |
| 3.14 | バグ修正 | 2030年10月(予定) | 3.14.10 |
| 3.13 | セキュリティ修正のみ | 2029年10月(予定) | 3.13.18(ソースのみ) |
| 3.12 | セキュリティ修正のみ | 2028年10月(予定) | 3.12.16(ソースのみ) |
| 3.11 | セキュリティ修正のみ | 2027年10月(予定) | 3.11.18(ソースのみ) |
| 3.10 | 終了 | 2026年10月1日 | 3.10.22(最終) |
| 3.9 | 終了 | 2025年10月31日 | 3.9.25(最終) |
3.10は10月1日に終了し、10月25日のssl・tarfileの修正は出ていません。[8]セキュリティ修正のみの系列は、python.orgのWindows・macOS向けインストーラーが出ません。3.13は10月21日の3.13.17が最後のインストーラーで、3.13.18はソースだけです。インストーラーで入れている場合、今の修正を受け取れるのは3.14.10か3.15.2です。[3]
OSのパッケージやコンテナのイメージで入れたPythonは、提供元が修正を取り込むため、番号がpython.orgと一致しないことがあります。その場合は提供元の告知で確かめます。
03Pythonの依存関係の脆弱性を確かめる方法
定番はPyPAのpip-auditです。既定ではPyPIの脆弱性情報と照合し、-s osvでOSV.devも使えます。[9]
# 確かめたい仮想環境で実行する
python -m pip install pip-audit
python -m pip_audit
# requirements.txt を確かめる(すべて == で固定している場合)
pip-audit --no-deps -r requirements.txt
# pylock.*.toml(PEP 751のlockファイル)を確かめる
pip-audit --locked .uvを使うプロジェクトでは、uv.lockを読むuv auditがあります。2026年6月に追加された機能で、提供元は試験段階(preview)としています。[10]
# uv.lock を更新せずに確かめる
uv audit --frozen
# pip-audit で確かめる場合
uv export --format requirements.txt --frozen -o requirements.txt
pip-audit --no-deps -r requirements.txtパッケージの版だけを見たいときは、次のように表示します。
python -c "import sys; print(sys.version)"
python -m pip show starlette pillow brotli
# 何がその版を入れたか(uv)
uv tree --invert --package starlette
# 動いているコンテナの版を書き出して照合する
docker exec <コンテナ名> python -m pip freeze > prod.txt
pip-audit --no-deps -r prod.txt04自分の環境が対象かを確かめる手順
- lockファイルから見る:requirements.txt・uv.lock・poetry.lockに書かれた版は、間接依存を含めて実際に入る版です。pyproject.tomlの範囲指定(
>=)だけでは、どの版が入っているかは分かりません。 - 間接依存を直接確かめる:StarletteはFastAPIの下に、BrotliはHTTPクライアントの下に入ります。上のパッケージを上げても下の版が古いまま残ることがあるため、
pip showの「Required-by」やuv tree --invertで、どこから入ったかを確かめます。 - 本番で動いている版を見る:手元の仮想環境と本番は別です。動いているコンテナから
pip freezeで版を書き出し、上のpip-auditで照合します。イメージを作り直していなければ、lockファイルを直しても本番は古いままです。 - Pythonの版が更新を止めることがある:Pillow 13.0.0はPython 3.11以上が必要です。[5]3.10の環境で
pip install -U pillowを実行しても、エラーにならずに12.3.0のまま残ります。パッケージの修正版が求めるPythonの版も確かめます。 - 本体の修正はpip-auditでは見えない:pip-auditが照合するのはパッケージで、Python本体のsslやtarfileの修正は
sys.versionと表で確かめます。
05Pythonの解説記事
TwistedのHTTP/2の脆弱性、1接続でCPUを使い切らせるおそれと、HTTP/2が有効かの確かめ方・26.10.0への更新(GHSA-vpp8-g58w-m8mp)
Python向けTwistedのHTTP/2サーバーに、認証なしの1接続でCPUを使い切らせる脆弱性があり、10月30日に正式版26.10.0で直りました。HTTP/2が動く条件(h2とTLS)の確かめ方、修正の効き方、CVE番号の扱い、Python 3.9の環境での注意を説明します。
Brotliの脆弱性の確認方法、PythonとNode.jsで対象かを確かめて直す(CVE-2026-111497、コード実行のおそれ)
圧縮形式Brotliの展開処理の脆弱性CVE-2026-111497(HTTP2Shell)は、米CISAが悪用を確認しています。Pythonのbrotli・brotlicffi、Node.jsの同梱版などで、自分の版と構成が対象かを確かめる方法と修正版を、言語ごとに説明します。
Pillowの脆弱性、olefile入りの環境で細工したFlashPix画像を開くとコード実行のおそれ(CVE-2026-112398、修正は13.0.0)
PythonのPillowの脆弱性CVE-2026-112398は、olefileを入れた環境で細工したFlashPix画像をImage.openで開くと、ヒープの範囲外書き込みで任意のコード実行に至るおそれがあります。対象かの見分け方、13.0.0への更新、すぐ上げられないときの対処を説明します。
LiteLLMの脆弱性、内部ユーザーが管理者に昇格するおそれ。KEVの認証不備と不正な1.107.0もバージョンで確かめる
LiteLLMのプロキシに、internal_userの権限から管理者に昇格してコマンドを実行できる脆弱性CVE-2026-114612。KEVに載った認証不備CVE-2026-59822と、10月21日に配布された不正な1.107.0を、使っている版で切り分ける手順と、上げる先の版を説明します。
Starletteの脆弱性BadHost、Hostヘッダーでパスによる認証の確認を回避されるおそれ。FastAPIを上げても古い版が残る場合の確かめ方
Starletteの脆弱性CVE-2026-48710(BadHost)は、細工したHostヘッダーでrequest.url.pathを偽り、パスで判定するアクセスの確認を回避されるおそれがあります。9月2日にKEVに追加されました。FastAPI・vLLM・LiteLLMの下で古いStarletteが残る例と、間接依存の確かめ方を説明します。
よくある質問
FastAPIを最新にすれば、Starletteの脆弱性も直りますか?
直らない場合があります。FastAPIは古いStarletteでも動く範囲を指定しているため、pipでFastAPIだけを上げても、入っているStarletteがそのまま残ることがあります。pip show starletteで版を直接確かめ、1.0.1以上にします。
Python 3.10のまま、パッケージだけ更新すれば足りますか?
足りません。3.10は2026年10月1日にサポートが終わり、10月25日のssl・tarfileの修正は出ていません。Pillow 13.0.0のように、修正版が3.11以上を求めるパッケージもあります。
pip-auditで何も出なければ、対象外と考えてよいですか?
照合したのは、実行した環境やファイルに書かれたパッケージだけです。本番のコンテナ、Python本体の版、OSが入れたライブラリは別に確かめます。
出典・参考資料
- CISA:Known Exploited Vulnerabilities Catalog2026-10-30版(米国時間) / Brotli・Starlette・LiteLLM・Langflow・MLflow・Rayの追加日
- CVE-2026-115557(採番機関:PSF)2026-10-24 / sslの拒否リスト、対象と修正版、CVSS 4.0の9.4
- python.org:Python 3.13.182026-10-25 / eMudhraの対応、tarfileの修正、インストーラーが無いこと
- IBM:Langflow OSSの脆弱性(CVE-2026-9198)2026-07-02(8月17日更新) / 対象1.0.0〜1.10.0、修正版1.10.1、回避策なし
- PyPI:pillow 13.0.02026-10-17 / Python 3.11以上が必要
- Python Developer's Guide:Status of Python versions2026-11-01確認 / 系列ごとの状態とサポート終了日
- PEP 719:Python 3.13 Release Schedule2026-10-26更新 / 3.13.17が最後のインストーラー、2029年10月まで
- python.org:Python 3.10.222026-10-01 / 3.10の最終リリース、以後の更新なし
- PyPA:pip-audit2026-11-01確認 / コマンドと照合先、--locked・--no-deps
- Astral:Vulnerability and malware checks in uv2026-06-08 / uv auditの追加、試験段階であること
