CPythonに影響を与える、重大度の高い脆弱性が存在します。
ssl.SSLContext.wrap_bio()関数において、ssl.SSLContext.check_hostnameが設定されている場合でも、server_hostname引数がNoneでないことを必須としていませんでした。SSLObjectにおけるパラメータチェックの不備により、server_hostname引数が指定されない場合、ホスト名の検証が問題なくスキップされていました。
この欠陥により、SSLContext.check_hostname = Trueが設定され、ValueErrorが発生しないため、証明書のホスト名検証が*一見*成功しているように見えるプログラムが存在する可能性があります。これは、設定の誤りによるものです。
プログラムが、空文字列またはNoneではない有効なserver_hostname値を、これらのAPIのいずれかに渡す場合、証明書のホスト名検証は通常どおりに実行され、この脆弱性の影響を受けません。
この脆弱性への対策として、Pythonのアップデートやパッチの適用は不要です。対策としては、SSLContext.wrap_bio()、asyncio.create_connection()、またはasyncio.loop.start_tls()に、有効な、Noneでも空文字列でもないserver_hostname値を渡すことで、証明書のホスト名検証が通常どおりに実行されるようにします。Pythonの最新バージョンへのアップグレード、またはパッチの適用は、ホスト名検証が問題なくスキップされる状態から、server_hostnameが指定されていない場合にValueErrorが発生する状態に変更するだけです。これは、ssl.SSLContext.wrap_socket()と同様の動作になります。
影響を受けるバージョンに関する最新情報は、以下のCVE IDを参照してください。
https://www.cve.org/CVERecord?id=CVE-2026-19553
https://github.com/python/cpython/pull/158503