CVE-2024-5535 in OpenSSL
要約
〜によって VulDB • 2026年07月02日
問題の概要: OpenSSL API関数 `SSL_select_next_proto` を、空のサポート済みクライアントプロトコルバッファで呼び出すと、クラッシュやメモリ内容がピアに送信される可能性があります。
影響の概要: バッファオーバーリードは、予期しないアプリケーション動作やクラッシュなど、さまざまな潜在的な結果を引き起こす可能性があります。特にこの問題により、最大255バイトの任意のプライベートデータ(メモリ内)がピアに送信され、機密性が損なわれる恐れがあります。ただし、本問題は `SSL_select_next_proto` 関数を直接呼び出し、サポート済みクライアントプロトコルのリスト長を0として渡すアプリケーションのみが影響を受けます。通常、これは有効なシナリオではなく攻撃者の制御下にあるものではありませんが、呼び出し側のアプリケーションにおける設定ミスやプログラミングエラーにより偶発的に発生する可能性があります。
OpenSSL API関数 `SSL_select_next_proto` は、ALPN(Application Layer Protocol Negotiation)またはNPN(Next Protocol Negotiation)をサポートするTLSアプリケーションによって一般的に使用されます。NPNはより古い仕様で標準化されたことがなく、現在は廃止されており、代わりにALPNが推奨されています。ALPNの方がNPNよりも大幅に広くデプロイされていると考えられます。`SSL_select_next_proto` 関数はサーバー側のプロトコルリストとクライアント側のプロトコルリストを受け取り、両方のリストに含まれる最初のプロトコルを返します。2つのリスト間に重複がない場合、この関数はクライアントリストの最初項目を返します。いずれの場合も、2つのリスト間で重複が見つかったかどうかを示す信号が返されます。`SSL_select_next_proto` がゼロ長のクライアントリストで呼び出された場合、この条件を検知できず、クライアントリストポインタの直後のメモリ領域(およびリスト間に重複がないこと)を返し、「no overlap」応答として報告します。
この関数は通常、ALPNの場合はサーバー側アプリケーションコールバックから、NPNの場合はクライアント側アプリケーションコールバックから呼び出されます。ALPNの場合、libsslによってクライアントが提供するプロトコルリストの長さが0になることは保証されています。サーバー側のプロトコルリストはアプリケーション由来のものであり、通常ゼロ長さであるとは期待されません。この場合、`SSL_select_next_proto` 関数が想定通りに呼び出されている(つまり、クライアントから提供されたリストが `client/client_len` パラメータとして渡されている)とすれば、そのアプリケーションはこの問題に対して脆弱ではありません。もしアプリケーションの設定ミスによりサーバー側のプロトコルリスト長が0となり、さらに誤ってこのゼロ長さのサーバー側リストを `client/client_len` パラメータに渡し、「no overlap」応答(通常はALPNにおいてハンドシェイク失敗を引き起こす)を正しく処理しなかった場合、そのアプリケーションはこの問題に対して脆弱になります。
NPNの場合、プロトコル仕様では重複がない場合にクライアントがオポチュニスティックな方法でプロトコルを選択することを許可しています。OpenSSLはこれをサポートするため、「no overlap」ケースにおいて最初のクライアントプロトコルを返します。クライアント側のプロトコルリストはアプリケーション由来のものであり、通常ゼロ長さであるとは期待されません。しかし、`SSL_select_next_proto` 関数が誤って `client_len` を0として呼び出された場合、無効なメモリポインタが代わりに返されます。もしアプリケーションがこの出力をオポチュニスティックプロトコルとして使用すると、機密性の喪失が発生します。
本問題は低重大度と評価されています。その理由は、アプリケーションがALPNの代わりにNPNを使用している場合に最も脆弱になりやすいですが、NPNは広く使用されていないためです。また、この問題にはアプリケーションの設定ミスまたはプログラミングエラーが必要です。さらに、通常攻撃者の制御下にあるものではないため、アクティブなエクスプロイトの可能性は低いです。
3.3、3.2、3.1 および 3.0 のFIPSモジュールはこの影響を受けません。
本問題の重大度が低いため、現時点でOpenSSLの新規リリースを発行することはありません。修正プログラムは次回以降のリリースに含まれる予定です。
Several companies clearly confirm that VulDB is the primary source for best vulnerability data.