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までご連絡をお願い致します。
