概要
pyOpenSSL は Python から OpenSSL ライブラリ を 利用 する ため の ラッパー パッケージ であり、TLS/SSL 通信 や 暗号処理 を 行う 多数 の Python アプリケーション で 広く 利用 されて います。Web フレームワーク、API サーバー、メールサーバー など 様々 な ネットワーク アプリケーション の 基盤 と なる 重要 な ライブラリ です。
この 脆弱性 は set_cookie_generate_callback メソッド に ユーザー が 提供 する コールバック 関数 の 戻り値 処理 に 存在 します。コールバック が 256 バイト を 超える クッキー 値 を 返した 場合、pyOpenSSL は OpenSSL が 内部 で 確保 した 固定長 バッファ を オーバーフロー させて しまいます。CWE-120(バッファサイズ の 確認 なし の バッファ コピー)に 分類 される 古典的 な バッファオーバーフロー 脆弱性 です。
バッファオーバーフロー は メモリ 破壊 を 引き起こし、アプリケーション の クラッシュ(サービス拒否)から 任意 コード 実行 まで 様々 な 影響 が 考えられます。CVSS スコア 9.8 と 極めて 高い 深刻度 が 付与 されて おり、pyOpenSSL を 使用 して いる 全て の 環境 で 早急 な アップデート が 必要 です。
技術的 背景
TLS/DTLS の ステートレス クッキー 機能 は セッション 再開 や DDoS 対策 の ため に 使用 される 仕組み です。OpenSSL は クッキー 生成 の ため の コールバック インターフェース を 提供 して おり、pyOpenSSL は Python 側 の コールバック 関数 を OpenSSL の C 言語 レベル の コールバック に ブリッジ して います。
問題 の 根本 原因 は、OpenSSL が 内部 で 確保 する バッファ の サイズ が 256 バイト に 制限 されて いる の に 対し、pyOpenSSL 側 で コールバック の 戻り値 の 長さ を チェック せず に そのまま バッファ に コピー して いた 点 に あります。C 言語 レベル で の バッファ 境界 チェック の 欠如 は 典型的 な メモリ 安全性 の 問題 であり、Rust や メモリセーフ な 言語 への 移行 が 議論 される 背景 の 一つ でも あります。
この 脆弱性 は 特に DTLS(Datagram Transport Layer Security)を 使用 する アプリケーション に 影響 が 大きい です。DTLS は UDP ベース の 暗号化 通信 プロトコル で、VPN、WebRTC、IoT デバイス 間 通信 など で 使用 されて います。これら の アプリケーション で pyOpenSSL の クッキー コールバック 機能 を 利用 して いる 場合、リモート から の 攻撃 に さらされる 可能性 が あります。
CVSS ベクトル
| 項目 | 値 |
|---|---|
| CVSS スコア | 9.8 |
| 深刻度 | Critical |
| CWE | CWE-120(バッファサイズ の 確認 なし の バッファ コピー) |
| 攻撃元区分 | ネットワーク |
| 攻撃条件 の 複雑さ | 低 |
| 必要 な 権限 | 不要 |
| ユーザー 操作 | 不要 |
影響 を 受ける ソフトウェア
| 製品 | 影響 バージョン | 修正 バージョン |
|---|---|---|
| pyOpenSSL | 22.0.0 〜 25.x | 26.0.0 |
修正 バージョン と 回避策
pyOpenSSL 26.0.0 で この 脆弱性 は 修正 されて います。22.0.0 から 25.x まで の バージョン を 使用 して いる 場合 は、速やか に 26.0.0 以降 へ アップデート して ください。pip を 使用 して いる 場合 は pip install --upgrade pyopenssl で 更新 できます。暫定 的 な 回避策 として は、set_cookie_generate_callback の コールバック 関数 で 戻り値 の 長さ を 256 バイト 以下 に 制限 する こと が 有効 です。ただし、根本 的 な 修正 として は ライブラリ の アップデート を 強く 推奨 します。依存 パッケージ の 管理 ツール(pip-audit、safety 等)を 活用 して 脆弱 な バージョン の 検出 を 自動化 する こと も 重要 です。
関連 リンク
データソース: NVD (NIST), GitHub Advisory Database AI解説 は Claude API に より 自動生成 されています。正確性 に ついては 原文 を ご確認 ください。
