wolfSSH v1.6.0 をリリースしました

wolfSSH v1.6.0 をリリースしました。本リリースでは、5件の脆弱性修正、厳格な鍵交換(Strict KEX)のデフォルト有効化、ML-DSA によるホスト鍵とユーザー認証への対応に加え、wolfSSH 史上最大規模の堅牢化を実施しました。いくつかのデフォルト設定を変更していますので、アップグレードの前に「動作の変更点」をご確認ください。すべての変更点については ChangeLog.md をご覧ください。

脆弱性の修正

本リリースでは、5件の CVE(Critical 1件、High 1件、Medium 3件)に対処しました。

  • [Critical] CVE-2026-16516:クライアントは、サーバーのホスト鍵ブロブに含まれる ECDSA 曲線が、ネゴシエートしたアルゴリズムと一致するかを確認していませんでした。そのため中間者は、別の曲線の鍵に差し替えて検証を通過させることができました。この攻撃が成立するには、公開鍵チェックコールバックの検証が不十分であることも求められます。影響を受けるのは 1.5.0 までのバージョンです。zhangph(afldl)氏に感謝いたします
  • [High] CVE-2026-83540:Windows 版の wolfSSHd は、同時に確立されている複数の接続の間で、1つの認証コンテキストとログオントークンを共有していました。その結果、有効なアカウントを持つユーザーが、より高い権限を持つ別のユーザーとしてログインした状態になるおそれがありました。Windows 以外のビルドは影響を受けません。影響を受けるのは 1.4.15 から 1.5.0 までです。本脆弱性は社内テストで発見しました
  • [Medium] CVE-2026-84897:サーバーは、本来サーバーだけが送信する DH GEX メッセージを、認証前のクライアントから受け付けていました。これによりクライアントは、攻撃者が選んだグループに対する負荷の高い素数判定をサーバーに実行させることができました。影響を受けるのは 1.2.0 から 1.5.0 までです。Abdullah Al Ishtiaq、Kai Tu、Matthew Carter、Xiaotian Zhou、Ananna Rahman、Yilu Dong、Tianwei Yu、Ali Ranjbar、Syed Rafiul Hussain の各氏に感謝いたします
  • [Medium] CVE-2026-81535:--enable-fwd を指定したビルドで、forwarded-tcpip チャネルのオープンがフォワーディングポリシーのコールバックを経由していませんでした。また、クライアントは自身が要求していないフォワードに対するオープンも受け付けていました。影響を受けるのは 1.4.8 から 1.5.0 までです。zhangph(afldl)氏に感謝いたします
  • [Medium] CVE-2026-83742:wolfSSH_RealPath() の長さ計算がラップアラウンドするため、細工した SFTP パスによってスタックバッファの終端を越えて NUL バイトを書き込めました。この攻撃には認証済みのセッションが必要で、影響を受けるのは 1.4.11 から 1.5.0 までの Windows 以外のビルドです。Asif Nadaf 氏に感謝いたします

すべての wolfSSH ユーザーにアップグレードを推奨します。Windows で wolfSSHd を使用している場合や、クライアントアプリケーションの公開鍵チェックコールバックの検証が不十分な場合は、早急にアップグレードしてください。

動作の変更点

v1.6.0 では、多くのデフォルト設定を厳格化しました。既存のアプリケーションに影響する可能性が高い変更は次のとおりです。

  • wolfSSL を --enable-wolfssh 付きでビルドする必要があります
  • Strict KEX(Terrapin 攻撃への対策)をデフォルトで有効にしました。wolfSSH_CTX_SetStrictKex() で無効にできます
  • DH グループ交換のグループサイズの最小値を 2048 ビットにしました。RSA のユーザー認証鍵も 2048 ビット以上が必要です
  • 「none」の暗号と MAC を使用するには --enable-none-cipher が必要です
  • 認証に 6回失敗すると、サーバーは接続を切断します。この回数は wolfSSH_CTX_SetMaxAuthAttempts() で設定可能です
  • 本バージョンから、アプリケーションは stderr のデータを読み出す必要があります。WS_EXTDATA を無視すると、チャネルウィンドウを使い切ってしまいます
  • ピアからのチャネル EOF を WS_EOF として通知するようにしました。自身の EOF は wolfSSH_ChannelSendEof() で送信してください
  • wolfSSH_shutdown() が WS_WANT_WRITE を返す場合があります。完了するまで繰り返し呼び出してください
  • フォワーディングを厳格化しました。forwarded-tcpip のオープンには fwdCb が必要で、クライアントは登録済みのフォワードに一致しないオープンを拒否します
  • wolfSSHd の変更点:
    • StrictModes をデフォルトで適用します
    • LoginGraceTime のデフォルトは 120秒です
    • セッションは umask 022 で動作します
    • Match で指定できる条件を User と Group に限定しました

新機能

  • 厳格な鍵交換(wolfSSH_GetStrictKexNegotiated() を含む)
  • ML-DSA-44、-65、-87 によるホスト鍵とユーザー認証(X.509 および composite のバリアントを含む)
  • wolfSSHd における OpenSSH 証明書によるユーザー認証(--enable-ossh-certs)
  • TPM 内に格納したホスト鍵の使用(X.509 ホスト証明書を含む)
  • Windows 証明書ストアに格納したホスト鍵の使用
  • RSA と ECDSA のどちらも含まないビルドへの対応(Ed25519 のみなど)
  • クライアント側のリモートポートフォワーディング
  • wolfSSH_SFTP_SetConfinePath() による SFTP セッションのアクセス範囲の制限
  • 方向ごとに独立した暗号と MAC のネゴシエーション
  • チャネルごとの stderr のフロー制御
  • RFC 4254 のハーフクローズへの対応
  • アプリケーション主導のチャネル
  • wolfSSHd の新しいオプション:
    • PubkeyAuthentication
    • PermitRootLogin の prohibit-password と forced-commands-only
    • AuthorizedKeysFile における %u / %h の展開
  • SBOM を CycloneDX および SPDX 形式で出力する make sbom ターゲット

改善と修正

本リリースには100件を優に超える修正が含まれており、その多くは静的解析、ファジング、外部監査で見つかったものです。主な内容は次のとおりです。

  • ピアの DH および ECDH 公開鍵の検証
  • KEXINIT の解析に上限を設け、認証前の CPU DoS を解消
  • RSA 検証の定数時間化
  • ログへのインジェクションを防ぐサニタイズ
  • SCP におけるシンボリックリンクの扱いの堅牢化
  • セッションごとの SFTP ハンドルの追跡と上限設定
  • 秘密情報のゼロ化
  • wolfSSHd におけるユーザー列挙につながるタイミングオラクルの修正
  • wolfSSHd の Match でフェイルオープンとなる複数の不具合の修正
  • rekey 時、および Windows、Zephyr、Harmony 上での SFTP と SCP の動作の修正
  • FIPS 版 wolfSSL 使用時の DH-GEX とエージェントの RSA 署名に関する修正

今回のリリースサイクルで問題を報告してくださった皆様に感謝いたします。

もし弊社製品についてご質問があれば、お問い合わせ窓口info@wolfssl.jpまでご連絡をお願い致します。

原文:https://www.wolfssl.com/wolfssh-v1-6-0-release/