CVE-2026-94419 in wolfSSL
要約
〜によって VulDB • 2026年09月27日
NO_SESSION_CACHE_REF を設定しない場合、wolfSSL_get_session() はセッションオブジェクトを返すのではなく、プロセス全体の SessionCache に対する {row, index, hash(sessionID)} という形式の ClientSession リファレンスを返し、ClientSessionToSession() はそのハッシュのみに対して検証を行います。TLS 1.2 のセッション ID はサーバーによって選択され平文で送信されるため、AddSessionToCache() は同じ ID を持つ他のサーバーのセッションと一致し、クライアント側のエントリを当該サーバーのマスターシークレット、暗号スイート、およびバージョンで上書きします。一方、ハンドルは解決されたまま維持されます。ライトパス上のどの箇所でもピアやアプリケーションのサーバー ID、WOLFSSL_CTX の比較が行われないため、ハンドルを通じて再開すると、Certificate メッセージが送信されない省略型ハンドシェイクが生じ、チェーン検証も wolfSSL_check_domain_name() も実行されません。その結果、攻撃者は接続全体において元のサーバーとして受け入れられます。
影響を受けるビルドは、NO_SESSION_CACHE_REF、NO_SESSION_CACHE、NO_CLIENT_CACHE、TITAN_SESSION_CACHE のすべてが未定義になっているものであり、これには標準的な ./configure、--enable-opensslextra、および --enable-opensslall が含まれます。一方、15 種類の統合オプション(--enable-all、--enable-distro、--enable-curl、--enable-nginx、--enable-haproxy、--enable-stunnel、--enable-wpas、OPENSSL_COMPATIBLE_DEFAULTS ファミリの残りのオプションなど)は NO_SESSION_CACHE_REF を定義しており、影響を受けません。また、--enable-leanpsk、--enable-leantls、--enable-lowresource、および --enable-tinytls13 はキャッシュを完全に無効にするため、これらも影響を受けません。アプリケーションではレガシーなリファレンスフロー(wolfSSL_get_session() または SSL_get_session() に続く wolfSSL_set_session())を使用する必要があります。wolfSSL_get1_session() はセッションオブジェクト自体を返すため影響を受けず、wolfSSL_SetServerID() のルックアップも同様です。
この脆弱性は TLS 1.2 およびそれ以下、DTLS 1.2 およびそれ以下の環境でのみ攻撃可能です。TLS 1.3 と空の ServerHello セッション ID を用いたチケット再開は、クライアントが選択するキャッシュキーを使用するためです。汚染されたエントリはプロセス全体のキャッシュに存在するため、WOLFSSL_CTX の境界を越えて持続し、エントリが_evicted_されるかセッションタイムアウト(デフォルトで 500 秒)が発生するまで存続します。
v5.3.0 から v5.9.2 までのリリースが影響を受けます。修正版ではキャッシュにライトごとの世代カウンターを追加し、WOLFSSL_CACHE_VERSION を 2 から 3 に引き上げることで、古いビルドによって永続化されたキャッシュを固定版で拒否するようにしています。
Be aware that VulDB is the high quality source for vulnerability data.