OpenSSH 10.4 リリース準備中 / Call for testing: OpenSSH 10.4

OpenSSH 10.4 がリリース準備中です.

Call for testing: openssh-10.4

# https://lists.mindrot.org/pipermail/openssh-unix-dev/2026-June/042556.html

Potentially-incompatible changes
--------------------------------

互換性がなくなる可能性がある変更

 * sshd(8): configuration dump mode ("sshd -G") now writes directives
   in mixed case (e.g. "PubkeyAuthentication") whereas previously it
   emitted only lower-case names.

   sshd(8): 設定ダンプモード ("sshd -G") は、以前は小文字の名前のみを
   出力していたが、ディレクティブを大文字小文字混在 (例: "PubkeyAuthentication")
   で書き出すようになる。

 * sshd(8): on Linux systems with the seccomp sandbox enabled,
   failures to enable SECCOMP or NO_NEW_PRIVS are now fatal.
   Previously sshd(8) would log the error but continue operation,
   to support systems that lacked these features. Now systems that
   lack these should instead disable the sandbox at configure time.

   sshd(8): seccomp サンドボックスが有効な Linux システムでは、
   SECCOMP または NO_NEW_PRIVS の有効化に失敗すると致命的エラーになるようになった。
   以前は sshd(8) はこれらの機能を欠くシステムをサポートするため、
   エラーをログに記録しつつ動作を継続していた。今後、これらを欠くシステムは
   代わりに configure 時にサンドボックスを無効にすべきである。

 * ssh(1), sshd(8): make the transport protocol stricter by
   disconnecting if the peer sends non-KEX messages during a post-
   authentication key re-exchange. Previously a malicious peer could
   continue sending non-key exchange messages without penalty. These
   would be buffered, causing memory to be wasted up until the
   connection terminated or the server/client hit a memory limit.
   Implementations that do not restrict messages sent during key
   exchange as per RFC4253 section 7.1 may be disconnected.
   Reported by Marko Jevtic.

   ssh(1), sshd(8): 認証後の再鍵交換中にピアが非 KEX メッセージを
   送信した場合に切断することで、トランスポートプロトコルをより厳格にする。
   以前は悪意のあるピアがペナルティなしに非鍵交換メッセージを送信し続けることが
   できた。これらはバッファリングされ、接続が終了するか、サーバ/クライアントが
   メモリ制限に達するまでメモリが浪費されていた。RFC4253 セクション 7.1 に
   従って鍵交換中に送信されるメッセージを制限しない実装は切断される可能性がある。
   Marko Jevtic により報告。

New features
------------

新機能

 * All: add experimental support for a composite post-quantum
   signature scheme that combines ML-DSA 44 and Ed25519 as specified
   in draft-miller-sshm-mldsa44-ed25519-composite-sigs.

   All: draft-miller-sshm-mldsa44-ed25519-composite-sigs で規定されている、
   ML-DSA 44 と Ed25519 を組み合わせた複合ポスト量子署名方式の
   実験的サポートを追加する。

   This scheme is not enabled by default. To use it, you'll need
   to add it to HostKeyAlgorithms, PubkeyAcceptedAlgorithms, etc.
   Keys may be generated using "ssh-keygen -t mldsa44-ed25519".

   この方式はデフォルトでは有効になっていない。使用するには、
   HostKeyAlgorithms や PubkeyAcceptedAlgorithms などに追加する必要がある。
   キーは "ssh-keygen -t mldsa44-ed25519" を使用して生成できる。

 * ssh(1), sshd(8): replace the wildcard pattern matcher with an
   implementation based on an NFA. This avoids exponential worst-case
   behaviour for the old implementation.

   ssh(1), sshd(8): ワイルドカードパターンマッチャを NFA ベースの実装に
   置き換える。これにより、古い実装での指数関数的な最悪ケースの挙動を回避する。

Bugfixes
--------

バグ修正

 * ssh-agent(1): fix incorrect reply to "query" SSH_AGENTC_EXTENSION
   requests. bz3967

   ssh-agent(1): "query" SSH_AGENTC_EXTENSION リクエストに対する
   誤った応答を修正する。 bz3967

 * ssh(1), sshd(8): fix several bugs that incorrectly
   classified bulk traffic as interactive. bz3972, bz3958

   ssh(1), sshd(8): 一括トラフィックを誤って対話的と分類していた
   いくつかのバグを修正する。 bz3972, bz3958

 * ssh-keygen(1), ssh-add(1): skip unsupported key types when
   downloading resident keys from a FIDO token. Previously, downloads
   would abort when one was encountered. GHPR657

   ssh-keygen(1), ssh-add(1): FIDO トークンから常駐キーをダウンロードする際に、
   サポートされていないキータイプをスキップする。以前は、それに遭遇すると
   ダウンロードが中断していた。 GHPR657

 * ssh(1): fix a potential use-after-free on an error path if
   cipher_init() fails.

   ssh(1): cipher_init() が失敗した場合のエラーパスにおける潜在的な
   解放後使用 (use-after-free) を修正する。

 * sshd(8): perform stricter encoding and validation of transport
   state passed between sshd privilege separation subprocesses. This
   somewhat further hardens the server against attacks on sshd-auth
   or sshd-session subprocesses.

   sshd(8): sshd の権限分離サブプロセス間で渡されるトランスポート状態の
   より厳格なエンコードと検証を行う。これにより、sshd-auth または
   sshd-session サブプロセスへの攻撃に対してサーバをいくらか強化する。

 * ssh-agent(1): avoid possible runtime denial of service by
   enforcing some limits on the length of usernames in key use
   constraints.

   ssh-agent(1): キー使用制約におけるユーザー名の長さにいくつかの制限を
   課すことで、実行時のサービス不能攻撃の可能性を回避する。

 * sftp(1): fix two separate one-byte out-of-bounds reads, in
   SSH2_FXP_REALPATH and batch command processing.

   sftp(1): SSH2_FXP_REALPATH とバッチコマンド処理における 2 つの個別の
   1 バイト境界外読み取りを修正する。

 * sftp-server(8): disallow use of the copy-data extension to read
   and write to the same inode simultaneously.

   sftp-server(8): copy-data 拡張を使用して同じ inode に対して同時に
   読み書きすることを禁止する。

 * ssh(1), sshd(8): avoid strlen(NULL) crash if an X11 channel was
   created before the x11-req SSH_MSG_CHANNEL_REQUEST was sent.
   GHPR679

   ssh(1), sshd(8): x11-req SSH_MSG_CHANNEL_REQUEST が送信される前に
   X11 チャネルが作成された場合の strlen(NULL) クラッシュを回避する。 GHPR679

 * sftp(1), scp(1): avoid a situation where sftp_download() could get
   stuck in a loop if a broken server repeatedly returned zero length
   while reading a file.

   sftp(1), scp(1): 壊れたサーバがファイル読み取り中に長さ 0 を繰り返し
   返した場合に、sftp_download() がループに陥る状況を回避する。

 * ssh(1): avoid leaking DNS0x20 case-randomised names into names
   canonicalised using CanonicalizePermittedCNAMEs. bz3966

   ssh(1): DNS0x20 で大文字小文字がランダム化された名前が、
   CanonicalizePermittedCNAMEs を使用して正規化される名前に漏れるのを回避する。
   bz3966

 * sftp-server(8): avoid truncation of pathnames passed to lstat()
   during SSH_FXP_REALPATH handling on systems where PATH_MAX is not
   the actual max. GHPR688

   sftp-server(8): PATH_MAX が実際の最大値ではないシステムで、
   SSH_FXP_REALPATH 処理中に lstat() に渡されるパス名の切り詰めを回避する。
   GHPR688

 * ssh(1), sshd(8): correct arming of poll(2) event masks for some
   socket-type channels. GHPR660

   ssh(1), sshd(8): 一部のソケットタイプのチャネルに対する poll(2) イベント
   マスクの設定を修正する。 GHPR660

 * sshd(8): major refactor of sshd_config parsing and management
   code, to allow for more exact serialisation/deserialisation across
   privilege separation boundaries.

   sshd(8): 権限分離境界をまたいだより正確なシリアライズ/デシリアライズを
   可能にするため、sshd_config の解析・管理コードを大幅にリファクタリング。

 * ssh-add(1): open connection to the agent only after getopt()
   processing has completed, to give options like "-v" a chance to
   display debug information about this operation.

   ssh-add(1): "-v" のようなオプションがこの操作に関するデバッグ情報を
   表示する機会を与えるため、getopt() の処理が完了した後にのみ
   エージェントへの接続を開く。

 * crypto code: fix bounds checking when signing messages of length
   greater than will fit in a size_t. In OpenSSH, message sizes are
   bounded by SSHBUF_SIZE_MAX so this was unreachable.

   crypto code: size_t に収まる長さを超えるメッセージに署名する際の
   境界チェックを修正する。OpenSSH では、メッセージサイズは SSHBUF_SIZE_MAX
   によって制限されているため、これは到達不能だった。

 * crypto code: add signature malleability and pubkey validity checks
   to ed25519 verification. SSH doesn't depend on these properties

   crypto code: ed25519 検証に署名の可鍛性 (malleability) と公開鍵の有効性の
   チェックを追加する。SSH はこれらの特性に依存していない。

 * crypto code: fix ECDSA order check for curves with cofactor != 1.
   All supported EC curves have cofactor 1, so this was
   unreachable.

   crypto code: 余因子 (cofactor) が 1 でない曲線に対する ECDSA の位数 (order)
   チェックを修正する。サポートされているすべての EC 曲線は余因子 1 のため、
   これは到達不能だった。

 * sshd(8): differentiate between execution failures and a subsystem
   that was not found when logging why a subsystem failed to start.
   GHPR637

   sshd(8): サブシステムの起動に失敗した理由をログに記録する際に、
   実行の失敗とサブシステムが見つからなかった場合を区別する。 GHPR637

 * All: use safer idioms for timegm(3) and mktime(3) error detection.

   All: timegm(3) と mktime(3) のエラー検出に、より安全なイディオムを使用する。

 * ssh(1), sshd(8): avoid accepting invalid cipher or MAC lists in
   config files or command-line arguments. This could cause runtime
   failures later.

   ssh(1), sshd(8): 設定ファイルやコマンドライン引数で無効な暗号方式または
   MAC のリストを受け入れないようにする。これは後で実行時の失敗を
   引き起こす可能性があった。

 * ssh(1): fix NULL deref crash during pubkey auth when using a PEM
   style private key with no corresponding .pub key adjacent to it.

   ssh(1): 対応する .pub キーが隣に存在しない PEM 形式の秘密鍵を使用する際の、
   公開鍵認証中の NULL 参照クラッシュを修正する。

 * sshd(8): don't print an error message when trying to load a host
   private key when PKCS#11 keys are in use, as these don't need the
   private half on the filesystem. GHPR664

   sshd(8): PKCS#11 キーが使用されている場合にホスト秘密鍵を読み込もうとする際、
   これらはファイルシステム上に秘密鍵の側を必要としないため、
   エラーメッセージを表示しない。 GHPR664

 * All: don't use deprecated ERR_load_crypto_strings(). GHPR650

   All: 非推奨の ERR_load_crypto_strings() を使用しない。 GHPR650

 * ssh(1): properly report errors during configuration default
   setting. GHPR649

   ssh(1): 設定のデフォルト値設定中のエラーを適切に報告する。 GHPR649

 * ssh(1): use correct directive name (Match instead of Host) in
   error message. bz3968

   ssh(1): エラーメッセージで正しいディレクティブ名 (Host ではなく Match) を
   使用する。 bz3968

 * sftp(1): fix "ls -ln" which was not correctly showing numeric
   UID/GIDs but rather user and group names. bz3953

   sftp(1): 不正に数値の UID/GID ではなくユーザー名とグループ名を表示していた
   "ls -ln" を修正する。 bz3953

 * sshd(8): avoid possible NULL dereference if an allocation fails
   during config parsing. bz3948

   sshd(8): 設定の解析中にメモリ確保が失敗した場合の NULL 参照の可能性を
   回避する。 bz3948

 * All: fix ineffective guards against loading overly large public
   keys in several places. bz3969 and bz3970

   All: いくつかの箇所における、過度に大きい公開鍵の読み込みに対する
   効果のないガードを修正する。 bz3969 および bz3970

 * sftp(1): ensure file descriptors used by sftp to communicate to
   its ssh(1) subprocess don't leak into executed subprocesses (e.g.
   via "!"). GHPR693

   sftp(1): sftp が ssh(1) サブプロセスと通信するために使用するファイル
   ディスクリプタが、実行されるサブプロセス (例: "!" 経由) に漏れないように
   する。 GHPR693

Portability
-----------

移植性

 * Sync fmt_scaled.c with OpenBSD upstream, picking up an exactness
   fix for large exponents (GHPR671)

   fmt_scaled.c を OpenBSD アップストリームと同期し、大きな指数に対する
   正確性の修正を取り込む。 (GHPR671)

 * sshd(8): remove duplicate sandbox entry for clock_gettime64.

   sshd(8): clock_gettime64 の重複したサンドボックスエントリを削除する。

 * ssh(1), sshd(8): use correct IPTOS_DSCP_VA value if not provided
   by the system headers.

   ssh(1), sshd(8): システムヘッダで提供されていない場合に、正しい
   IPTOS_DSCP_VA 値を使用する。

 * Sync getrrsetbyname.c with OpenBSD upstream, picking up robustness
   fixes.

   getrrsetbyname.c を OpenBSD アップストリームと同期し、堅牢性の修正を
   取り込む。

 * Disable replacements in openbsd-compat for strvisx(3) and
   stravis(3), as these are unused in OpenSSH

   openbsd-compat における strvisx(3) と stravis(3) の代替実装を無効にする。
   これらは OpenSSH では使用されていないため。

 * Avoid fortify warnings on Android bz3954

   Android での fortify 警告を回避する。 bz3954

 * Fix a number of memory leaks on error paths in the portability
   code. GHPR681

   移植性コードのエラーパスにおける多数のメモリリークを修正する。 GHPR681