https://www.openssh.com/releasenotes.html#9.2 Changes since OpenSSH 9.1 ========================= OpennSSH 9.1 からの変更点 This release fixes a number of security bugs. このリリースはいくつかのセキュリティバグを修正する. Security ======== セキュリティ This release contains fixes for two security problems and a memory safety problem. The memory safety problem is not believed to be exploitable, but we report most network-reachable memory faults as security bugs. このリリースは 2 つのセキュリティ問題と 1 つのメモリ安全問題の修正 を含む. このメモリ安全問題は攻撃可能ではないと思われるが, ネットワーク到達可能なメモリ操作の欠陥のほとんどはセキュリティの 問題として報告します. * sshd(8): fix a pre-authentication double-free memory fault introduced in OpenSSH 9.1. This is not believed to be exploitable, and it occurs in the unprivileged pre-auth process that is subject to chroot(2) and is further sandboxed on most major platforms. sshd(8): OpenSSH 9.1 で導入された認証前の二重 free メモリ欠陥 を修正する. これは攻撃可能ではないと思われる. chroot(2) の元での 非特権認証前プロセス内で発生し, さらにほとんどの主要なプラットフォーム 上ではサンドボックス化されている. * ssh(8): in OpenSSH releases after 8.7, the PermitRemoteOpen option would ignore its first argument unless it was one of the special keywords "any" or "none", causing the permission list to fail open if only one permission was specified. bz3515 ssh(8): 8.7 より後の OpenSSH で, PermitRemoteOpen 設定項目は その最初の引数を, "any" や "none" といった特別なキーワードの 1 つでない場合無視している. これはただ 1 つのパーミッションを 指定している場合にパーミッションリストのオープンの失敗を 引き起す. bz3515 * ssh(1): if the CanonicalizeHostname and CanonicalizePermittedCNAMEs options were enabled, and the system/libc resolver did not check that names in DNS responses were valid, then use of these options could allow an attacker with control of DNS to include invalid characters (possibly including wildcards) in names added to known_hosts files when they were updated. These names would still have to match the CanonicalizePermittedCNAMEs allow-list, so practical exploitation appears unlikely. ssh(1): CanonicalizeHostname と CanonicalizePermittedCNAMEs 設定項目が 有効で, system/libc のリゾルバは DNS 応答中の名前が正当かチェックしない場合, これらの設定項目の利用は DNS を制御している攻撃者に known_hosts ファイルを 更新する際に追加する名前に不正な文字(ワイルドカードを含む可能性がある) を含めることを可能にする. これらの名前は CanonicalizePermittedCNAMEs の 許可リストに一致する必要がまだあるので, 実際に攻撃をすることは 難しいと思われる. Potentially-incompatible changes -------------------------------- 潜在的に非互換な変更 * ssh(1): add a new EnableEscapeCommandline ssh_config(5) option that controls whether the client-side ~C escape sequence that provides a command-line is available. Among other things, the ~C command-line could be used to add additional port-forwards at runtime. ssh(1): ssh_config(5) の新しい EnableEscapeCommandline 設定項目を 追加する. これは, コマンドラインが提供するクライアント側の ~C シーケンスが利用可能かを制御する. 特に, ~C コマンドラインは 実行時に追加のポート転送を追加するのに使われる場合がある. This option defaults to "no", disabling the ~C command-line that was previously enabled by default. Turning off the command-line allows platforms that support sandboxing of the ssh(1) client (currently only OpenBSD) to use a stricter default sandbox policy. この設定項目のデフォルトは "no" で, 以前はデフォルトで有効であった ~C コマンドラインは無効となる. このコマンドラインでの無効は, プラットフォームでの (現在 OpenBSD のみでの) より厳格なデフォルトのサンドボックスポリシーを用いる ssh(1) クライアントのサンドボックス化のサポートを可能にする. New features ------------ 新機能 * sshd(8): add support for channel inactivity timeouts via a new sshd_config(5) ChannelTimeout directive. This allows channels that have not seen traffic in a configurable interval to be automatically closed. Different timeouts may be applied to session, X11, agent and TCP forwarding channels. sshd(8): 新しい sshd_config(8) ChannelTimeout 設定項目により チャンネルのアイドルタイムアウトをサポートする. これは 設定可能な間隔でトラフィックが観測されないチャンネルを 自動的なクローズを可能にする. セッションや X11, エージェント, TCP 転送チャンネルに異なるタイムアウトが適用可能だ. * sshd(8): add a sshd_config UnusedConnectionTimeout option to terminate client connections that have no open channels for a length of time. This complements the ChannelTimeout option above. sshd(8): 一定期間開いているチャンネルがないクライアント接続を 終了させる sshd_config の UnusedConnectionTimeout を追加する. これは前述の ChannelTimeout オプションを補完する. * sshd(8): add a -V (version) option to sshd like the ssh client has. sshd(8): ssh クライアントが持っているような -V (version) オプションを sshd に追加する. * ssh(1): add a "Host" line to the output of ssh -G showing the original hostname argument. bz3343 ssh(1): ssh -G の出力に 元のホスト名引数を示す "Host" 行を追加 する. bz3343 * scp(1), sftp(1): add a -X option to both scp(1) and sftp(1) to allow control over some SFTP protocol parameters: the copy buffer length and the number of in-flight requests, both of which are used during upload/download. Previously these could be controlled in sftp(1) only. This makes them available in both SFTP protocol clients using the same option character sequence. scp(1), sftp(1): scp(1) と sftp(1) に -X オプションを追加する. これはいくつかの SFTP プロトコルのパラメーターの制御を可能にする: コピーバッファの長さと利用中のリクエストの数. どちらもアップロード/ ダルンロード中の用いられる. 以前これらは sftp(1) でのみ制御可能 だった. これにより 同じオプションの文字列を用いて両方の SFTP プロトコルクライアントでの設定が利用可能となる. * ssh-keyscan(1): allow scanning of complete CIDR address ranges, e.g. "ssh-keyscan 192.168.0.0/24". If a CIDR range is passed, then it will be expanded to all possible addresses in the range including the all-0s and all-1s addresses. bz#976 ssh-keyscan(1): 完全な CIDR アドレスの範囲, たとえば "ssh-keyscan 192.168.0.0/24" のスキャンが可能となる. CIDR の範囲が 渡されると, すべてが 0 と すべてが 1 のアドレスを含む範囲中の すべての可能なアドレスへ展開される. bz#976 * ssh(1): support dynamic remote port forwarding in escape command-line's -R processing. bz#3499 ssh(1): コマンドラインの -R の処理のエスケープでダイナミックな リモートポート転送をサポートする. bz#3499 Bugfixes -------- バグ修正 * ssh(1): when restoring non-blocking mode to stdio fds, restore exactly the flags that ssh started with and don't just clobber them with zero, as this could also remove the append flag from the set. bz3523 ssh(1): 標準出力のファイルディスクリプタのノンブロッキングモードを 回復する際, append フラグが削除される可能性があるため, 単に 0 にせずに ssh が開始されたフラグに正確に戻す. bz3523 * ssh(1): avoid printf("%s", NULL) if using UserKnownHostsFile=none and a hostkey in one of the system known hosts file changes. ssh(1): UserKnownHostsFile=none を用いていて, システムの known_hosts ファイルの 1 つにあるホスト鍵が変更された場合に printf("%s", NULL) するのを回避する. * scp(1): switch scp from using pipes to a socket-pair for communication with its ssh sub-processes, matching how sftp(1) operates. scp(1): sftp(1) の操作と合わせるため, scp とそのssh サブプロセスとの通信に pipe ではなく socket のペアを利用するよう変更する. * sshd(8): clear signal mask early in main(); sshd may have been started with one or more signals masked (sigprocmask(2) is not cleared on fork/exec) and this could interfere with various things, e.g. the login grace timer. Execution environments that fail to clear the signal mask before running sshd are clearly broken, but apparently they do exist. sshd(8): main() で早期にシグナルマスクをクリアする; sshd は 1 つ以上のシグナルをマスクして開始され (sigprocmask(2) は fork/exec で クリアされない) これは多くの物事に干渉する可能性がある, たとえば ログインの猶予タイマー. sshd が実行される前にシグナルマスクをクリアするのに 失敗する実行環境は明らかに破綻しているが, どうやら存在する模様. * ssh(1): warn if no host keys for hostbased auth can be loaded. ssh(1): ホストベース認証のためにロードできるホスト鍵がなければ 警告する. * sshd(8): Add server debugging for hostbased auth that is queued and sent to the client after successful authentication, but also logged to assist in diagnosis of HostbasedAuthentication problems. bz3507 sshd(8): HostbasedAuthentication の問題の診断を助けるために 認証成功後にキューに入れられクライアントに送信されログする ホストベース認証のサーバ側デバッグを追加する. bz3507 * ssh(1): document use of the IdentityFile option as being usable to list public keys as well as private keys. GHPR352 ssh(1): 秘密鍵と同様に公開鍵のレッキョにも利用できるとして IdentityFile 設定項目の利用を文書化する. GHPR352 * sshd(8): check for and disallow MaxStartups values less than or equal to zero during config parsing, rather than failing later at runtime. bz3489 sshd(8): 後で実行時に失敗するのではなく設定のパース時に MaxStartups の 0 以下の値をチェックし許可しない. bz3489 * ssh-keygen(1): fix parsing of hex cert expiry times specified on the command-line when acting as a CA. ssh-keygen(1): CA として振る舞う際のコマンドラインで指定された 16 進の証明書満期のパースを修正する. * scp(1): when scp(1) is using the SFTP protocol for transport (the default), better match scp/rcp's handling of globs that don't match the globbed characters but do match literally (e.g. trying to transfer a file named "foo.[1]"). Previously scp(1) in SFTP mode would not match these pathnames but legacy scp/rcp mode would. bz3488 scp(1): (デフォルトである) scp(1) が転送に SFTP プロトコルを用いる際, glob された文字には一致しないが文字通り一致する (例えば, "foo.[1]" と名付けられたファイルを転送しようとする) scp/rcp の glob の処理によりよく一致するようになる. SFTP モードでの scp(1) は以前それらのパス名に一致していなかったが, 伝統的な scp/rcp は していた. bz3488 * ssh-agent(1): document the "-O no-restrict-websafe" command-line option. ssh-agent(1): "-O no-restrict-websafe" コマンドラインオプションを 文書化する. * ssh(1): honour user's umask(2) if it is more restrictive then the ssh default (022). ssh(1): ssh のデフォルト (022) よりも厳しい場合, ユーザーの umask(2) を尊重する. Portability ----------- 移植性 * sshd(8): allow writev(2) in the Linux seccomp sandbox. This seems to be used by recent glibcs at least in some configurations during error conditions. bz3512. sshd(8): Linux の seccomp サンドボックスで writev(2) を有効にする. 最近の glibc で少なくともいくつかの構成でエラー時に用いられている ようだ. bz3512. * sshd(8): simply handling of SSH_CONNECTION PAM env var, removing global variable and checking the return value from pam_putenv. bz3508 sshd(8): SSH_CONNECTION PAM 環境変数をシンプルに扱う, グローバル変数 から削除し, pam_putenv からの返り値をチェックする. bz3508 * sshd(8): disable SANDBOX_SECCOMP_FILTER_DEBUG that was mistakenly enabled during the OpenSSH 9.1 release cycle. sshd(8): OpenSSH 9.1 のリリースサイクル中に間違えて有効になった SANDBOX_SECCOMP_FILTER_DEBUG を無効にする. * misc: update autotools and regenerate the config files using the latest autotools misc: autotools を更新し, 最新の autotools を用いて config ファイルを 再生成する. * all: use -fzero-call-used-regs=used on clang 15 instead of -fzero-call-used-reg=all, as some versions of clang 15 have miscompile code when it was enabled. bz3475 all: clang 15 では -fzero-call-used-reg=all の代わりに -fzero-call-used-regs=use を用いる. clang 15 のいくつかの バージョンでは -fzero-call-used-reg=all が有効だとコードの コンパイルに失敗する. bz3475 * sshd(8): defer PRNG seeding until after the initial closefrom(2) call. PRNG seeding will initialize OpenSSL, and some engine providers (e.g. Intel's QAT) will open descriptors for their own use that closefrom(2) could clobber. bz3483 最初の closefrom(2) 呼び出しの後まで PRNG のシーディングを 延期する. PRNG のシーディングは OpenSSL を初期化し, 他のエンジンプロバイダー (例えば Intel の QAT) は closefrom(2) た閉じてしまう 自身のためのデスクリプトを開く. bz3483 * misc: in the poll(2)/ppoll(2) compatibility code, avoid assuming the layout of fd_set. misc: poll(2)/ppoll(2) の互換モードで fd_set のレイアウトを 決めつけない. * sftp-server(8), ssh-agent(1): fix ptrace(2) disabling on older FreeBSD kernels. Some versions do not support using id 0 to refer to the current PID for procctl, so try again with getpid() explicitly before failing. sftp-server(8), ssh-agent(1): より古い FreeBSD カーネルで ptrace(2) の無効化を修正する. いくつかのバージョンは procctl の現在の PID を参照するために id 0 を用いることを サポートせず, 失敗の前に getpid() を明示的に呼び出して再試行する. * configure.ac: fix -Wstrict-prototypes in configure test code. Clang 16 now warns on this and legacy prototypes will be removed in C23. GHPR355 configure.ac: configure の テストモードでの -Wstrict-prototypes を修正する. Clang 16 はこのプロトタイプと C23 で除去されるレガシーな プロトタイプで警告するようになる. GHPR355 * configure.ac: fix setres*id checks to work with clang-16. glibc has the prototypes for setresuid behind _GNU_SOURCE, and clang 16 will error out on implicit function definitions. bz3497 configure.ac: clang-16 との setres*id チェックを修正する. glibc は _GNU_SOURCE の後ろにある setresuid のための プロトタイプを持つが, clang 16 は 暗黙の関数定義として エラーにする. bz3497