脆弱性の開示:wolfSSLにおいて予測可能な乱数値を使用するおそれ (CVE-2025-7394)

影響を受けるユーザ

v5.8.2より前のwolfSSLでOpenSSL互換レイヤーを用いて、RAND_bytes()fork()操作の両方を呼び出すアプリケーションを使用するユーザ。

これは内部TLS操作やRAND_bytes()を明示的に使用しないアプリケーションには影響しません。

概要

wolfSSLのOpenSSL互換レイヤーにおいて、RAND_poll()関数が期待通りに動作せず、fork()システムコール後にRAND_bytes()から返される値が予測可能になる可能性がある脆弱性が発見されました。

アプリケーションがfork()を呼び出して子プロセスを作成すると、親プロセスと子プロセスの両方が同じ内部乱数生成器の状態を継承します。適切な再シードが行われないと、両方のプロセスが同一の「ランダムな」数値を生成する可能性があり、予測不可能な乱数値に依存する暗号処理が本来のセキュリティレベルを保てないおそれがあります。

この問題は、特に以下のすべてを実行するアプリケーションに影響します。

  1. wolfSSLのOpenSSL互換レイヤーを使用する
  2. 明示的にRAND_bytes()を呼び出して乱数を生成する
  3. fork()操作を実行して子プロセスを作成する

この脆弱性は、別の乱数生成メカニズムを使用するwolfSSLの内部TLS操作には影響しません。

OpenSSLのRAND_bytes()のドキュメントには最初にRAND_poll()を呼び出さずにfork()と併用することは安全ではないと記載されていますが、多くのアプリケーション実装ではこの要件を認識していない可能性があります。

より良い互換性とセキュリティを提供するため、wolfSSLはRAND_poll()の修正を超えた追加の改善を実装しました。Hash-DRBG(決定論的乱数ビット生成器)は、fork()呼び出し後に新しいプロセスで実行されていることを自動的に検出し、自己再シードを行うため、RAND_bytes()が最近のバージョンのOpenSSLと同様にデフォルトでより安全に動作するようになりました。

この脆弱性を発見し、報告してくださったAppgateのPer Allansson氏に感謝いたします。

ご質問がございましたら、info@wolfssl.jp までお問い合わせください。

原文:https://www.wolfssl.com/vulnerability-disclosure-wolfssl-cve-2025-7394