CVE-2024-5535
SSL_select_next_proto バッファ過剰読み取り
- 公開済み
- 2024/06/27
- 更新済み
- 2026/10/15
- CNA の割り当て
- openssl
- 観察された証拠
- 2026/08/05
プライマリ CVSS
nvd · CVSS 3.1
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:N/A:H低 · 今後 30 日間
- パーセンタイル
- 92.8%
- モデルの日付
- 2026/10/15
EPSS は統計的な推定値であり、確実性や影響の尺度ではありません。 CVSS、KEV ステータス、暴露、環境と組み合わせます。
概要
Issue summary: 空のサポート対象クライアントプロトコルバッファを指定してOpenSSL API関数SSL_select_next_protoを呼び出すと、クラッシュが発生したり、メモリ内容がピアに送信されたりする可能性があります。Impact summary: バッファの過剰読み取り(overread)は、予期しないアプリケーションの動作やクラッシュなど、さまざまな潜在的な結果を引き起こす可能性があります。特に、この問題により、メモリ内の最大255バイトの任意のプライベートデータがピアに送信され、機密性の喪失につながる可能性があります。ただし、この問題の影響を受けるのは、サポート対象クライアントプロトコルの長さ0のリストを指定してSSL_select_next_proto関数を直接呼び出すアプリケーションのみです。これは通常、有効なシナリオとなることは決してなく、通常は攻撃者の制御下にはありませんが、呼び出し元アプリケーションの設定ミスやプログラミングエラーが原因で偶然発生する可能性があります。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が長さゼロのクライアントリストで呼び出された場合、この状態を認識できず、クライアントリストポインタの直後のメモリを返します(そして、リストに重複がなかったことを報告します)。この関数は通常、ALPNのサーバー側アプリケーションコールバック、またはNPNのクライアント側アプリケーションコールバックから呼び出されます。ALPNの場合、クライアントによって提供されるプロトコルリストは、libsslによって長さがゼロになることは決してないことが保証されています。サーバープロトコルのリストはアプリケーションから提供され、通常は長さがゼロになることは想定されていません。この場合、SSL_select_next_proto関数が期待どおりに呼び出された場合(クライアントによって提供されたリストがclient/client_lenパラメータに渡された場合)、アプリケーションはこの問題に対して脆弱ではありません。アプリケーションが誤って長さゼロのサーバーリストで設定され、その長さゼロのサーバーリストを誤ってclient/client_lenパラメータに渡し、さらに「重複なし」応答を正しく処理できなかった場合(通常はALPNでハンドシェイク失敗につながります)、この問題に対して脆弱になります。NPNの場合、プロトコルは、重複がない場合にクライアントが日和見的にプロトコルを選択することを許可します。OpenSSLは、これをサポートするために、重複がない場合に最初のクライアントプロトコルを返します。クライアントプロトコルのリストはアプリケーションから提供され、通常は長さがゼロになることは想定されていません。ただし、SSL_select_next_proto関数がclient_len 0で誤って呼び出された場合、無効なメモリポインタが代わりに返されます。アプリケーションがこの出力を日和見的プロトコルとして使用する場合、機密性の喪失が発生します。この問題は、アプリケーションがALPNではなくNPNを使用している場合に脆弱になる可能性が最も高いため(ただしNPNは広く使用されていません)、深刻度は低いと評価されています。また、アプリケーションの設定またはプログラミングエラーも必要です。最後に、この問題は通常、攻撃者の制御下にはないため、積極的な悪用は起こりにくいと考えられます。3.3、3.2、3.1、3.0のFIPSモジュールは、この問題の影響を受けません。この問題の深刻度が低いため、現時点ではOpenSSLの新しいリリースを発行していません。修正は、次回のリリースが利用可能になり次第、それに含まれます。
ソース
PoC - OpenSSL NPN バッファオーバーリード
責任ある使用
脆弱性情報は、自分が所有しているシステム、またはテストを許可されているシステムでのみ使用してください。 Kitploit は公開研究メタデータにリンクしており、エクスプロイト コードや悪意のあるペイロードは保存しません。