2025年10月9日、Python開発チームはセキュリティ修正を主目的としたメンテナンスリリースの最新版となる Python 3.12.12、3.11.14、3.10.19、および 3.9.24 を公開しました。
今回のアップデートは、すでに新機能の開発が終了し、セキュリティ修正のみが行われているバージョン群を対象としています。
特に今回の更新では、標準ライブラリの HTML5仕様への準拠強化 や、XML、アーカイブ処理に関連する深刻な脆弱性への対策が含まれています。
システムの安全性を維持するために、これらのバージョンを利用している開発者や運用担当者は、内容を確認のうえ、速やかなアップデート を検討してください。
セキュリティリリースの概要
今回のアップデートは、Python 3.9から3.12までの各ブランチにおいて発見された複数のセキュリティ上の脆弱性に対応するものです。
主な修正項目は以下の通りです。
| カテゴリ | 主な修正内容 |
|---|---|
| HTML解析 | html.parser をHTML5標準に準拠させ、特定の入力による複雑度攻撃を回避 |
| XML処理 | 同梱されている libexpat を 2.7.3 へアップグレード (CVE-2025-59375 対応) |
| アーカイブ | tarfile および zipfile の整合性検証の強化 |
| SSL/TLS | ssl モジュールにおけるプロトコル設定の不備を修正 (Python 3.9) |
| サードパーティ | 同梱の setuptools を 79.0.1 へ更新し脆弱性を修正 |
HTML5標準に準拠したパーシングの改善
今回のリリースで最も広範囲に影響を与える修正の一つが、 html.parser.HTMLParser の挙動変更です。
これは HTML5の仕様に厳密に準拠する ことで、細工された入力によるサービス拒否 (DoS) 攻撃や意図しない解析結果を防ぐことを目的としています。
html.parser における主な変更点
従来のパーサーでは許容されていた不正確な記述が、今回の修正以降は仕様通りに厳格に扱われるようになります。
- 空白文字の制限:終了タグの
</とタグ名の間に空白を入れること (例:</ script>) が禁止されました。 - 属性値の解析:属性名と値の間の複数の
=が無視されず、適切に処理されるよう変更されました。 - コメントとCDATA:
--!>によるコメントの終了や、CDATAセクションの解析ルールがHTML5の規定に従うようになりました。
これにより、悪意のあるHTML入力を処理する際の安全性が大幅に向上しています。
from html.parser import HTMLParser
# 新しい仕様に基づいた挙動を確認するカスタムパーサー
class MyParser(HTMLParser):
def handle_starttag(self, tag, attrs):
# 属性の解釈がHTML5準拠に変更されている
print(f"Start tag: {tag}, Attrs: {attrs}")
parser = MyParser()
# 以前の挙動では属性 "foo" の値が "bar" となる場合があったが、修正後は "==bar" となる
parser.feed('<a foo==bar>')
ライブラリおよびアーカイブ関連の修正
XML解析の安全性強化
XML解析ライブラリである libexpat がバージョン 2.7.3 に更新されました。
これにより、脆弱性 CVE-2025-59375 が修正され、メモリ管理に関連するリスクが軽減されています。
また、 xml.parsers.expat において、特定の条件下でガベージコレクションが正しく行われない問題も解消されました。
アーカイブファイルの検証
tarfile モジュールにおいて、アーカイブメンバーのオフセットが負の値でないかを検証する機能が追加されました。
また、 zipfile においても Zip64形式の整合性チェック が強化されています。
これにより、不正なアーカイブファイルを用いたディレクトリトラバーサルやバッファオーバーフローのリスクを低減しています。
影響を受けるバージョンと更新の推奨
本アップデートは、以下のバージョンを利用しているすべての環境が対象です。
Python 3.12.x(最新: 3.12.12)Python 3.11.x(最新: 3.11.14)Python 3.10.x(最新: 3.10.19)Python 3.9.x(最新: 3.9.24)
なお、同梱されている setuptools の更新も含まれているため、仮想環境 (venv) を利用している場合は、環境内のライブラリも最新状態に保つことが推奨されます。
まとめ
今回の Python 3.12.12 を含む一斉リリースは、セキュリティの堅牢性を高めるための重要なステップです。
特に HTML5準拠への修正 は、WebスクレイピングやWebアプリケーション開発において標準ライブラリを利用している場合に影響を与える可能性がありますが、セキュリティを担保するためには不可欠な変更です。
古いバージョンのPythonを使い続けることは、既知の脆弱性にシステムを晒すことにつながります。
各プロジェクトの管理者は、本リリースの詳細を確認し、速やかにパッチを適用したバージョンへ移行 してください。
