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

15 Sep, 2024 - 7 minutes

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

Call for testing: OpenSSH 9.9

https://lists.mindrot.org/pipermail/openssh-unix-dev/2024-September/041574.html

Future deprecation notice
=========================

将来非推奨となる機能の告知

OpenSSH plans to remove support for the DSA signature algorithm in
early 2025. This release disables DSA by default at compile time.

OpenSSH は 2025年前半に DSA 署名アルゴリズムに対するサポートを除く
ことを計画している.
このリリースでコンパイル時にデフォルトでは DSA を無効にする.

DSA, as specified in the SSHv2 protocol, is inherently weak - being
limited to a 160 bit private key and use of the SHA1 digest. Its
estimated security level is only 80 bits symmetric equivalent.

SSHv2 プロトコルで指定された DSA は 本質的に弱い - 秘密鍵が 160 bit
に制限されていて SHA1 ハッシュを用いている. 見積もられるセキュリティレベル
は共通鍵暗号の 80 bit しかない.

OpenSSH has disabled DSA keys by default since 2015 but has retained
run-time optional support for them. DSA was the only mandatory-to-
implement algorithm in the SSHv2 RFCs, mostly because alternative
algorithms were encumbered by patents when the SSHv2 protocol was
specified.

OpenSSH は 2015 年以降 DSA 鍵をデフォルトで無効にしているが, 
ランタイムでの(任意の)サポートは維持している. DSA は,
SSHv2 プロトコルが仕様化された際に代替のアルゴリズムが特許で阻まれていた
ため, SSHv2 RFC[3] 中で実装が必須の唯一のアルゴリズムだ.

This has not been the case for decades at this point and better
algorithms are well supported by all actively-maintained SSH
implementations. We do not consider the costs of maintaining DSA
in OpenSSH to be justified and hope that removing it from OpenSSH
can accelerate its wider deprecation in supporting cryptography
libraries.

現時点では何十年もこのような(特許による障害がある)場合は起こっておらず, 
すべての活発に維持されている SSH の実装でよりよいアルゴリズムが
十分にサポートされている. 我々は OpenSSH で DSA を維持するコストが
正当化されるとは考えておらず, OpenSSH から DSA を除くことが
(DSAを) サポートしている暗号ライブラリでのより広い DSA の非推奨への加速
を期待している.

Currently DSA is disabled at compile time by default. The final
step of removing DSA support entirely is planned for the first
OpenSSH release of 2025.

現在 DSA はデフォルトでコンパイル時に無効となっている. DSA サポートの
完全な除去の最後の段階は 2025 年の最初の OpenSSH のリリースで
予定されている.

DSA support may be re-enabled in OpenBSD by setting "DSAKEY=yes"
in Makefile.inc. To enable DSA support in portable OpenSSH, pass
the "--enable-dsa-keys" option to configure.

DSA のサポートは OpenBSD では Makefile.inc で "DSAKEY=yes" と
設定することで再有効化できる. 移植版 OpenSSH で DSA サポートを
有効にするには configure に "--enable-dsa-keys" を渡す.

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

潜在的に非互換な変更

 * ssh(1): remove support for pre-authentication compression.
   OpenSSH has only supported post-authentication compression in
   the server for some years. Compression before authentication
   significantly increases the attack surface of SSH servers and risks
   creating oracles that reveal information about information sent
   during authentication.

   ssh(1): 認証前の圧縮のサポートを除去する. OpenSSH はこの数年
   サーバーでの認証後の圧縮のみをサポートしている. 認証前の圧縮は
   SSH サーバーの攻撃面を顕著に増加させ, 認証中に送られた情報について
   の情報を明らかにするオラクルを作成されるリスクも高める.

 * ssh(1), sshd(8): processing of the arguments to the "Match"
   configuration directive now follows more shell-like rules for
   quoted strings, including allowing nested quotes and \-escaped
   characters. If configurations contained workarounds for the
   previous simplistic quote handling then they may need to be
   adjusted.

   "Match" 設定項目の引数の処理が, ネストされたクオートや \ で
   エスケープされた文字を許すことを含む, クオート文字に対する
   よりシェルのようなルールに従うようになる. 設定が以前の単純な
   クオート処理に対するワークアラウンドを含んでいる場合,
   調整が必要となるかもしれない.

Changes since OpenSSH 9.8
=========================

OpenSSH 9.8 からの変更

This release contains a number of new features and bugfixes.

このリリースはたくさんの新機能とバグ修正を含んでいる.

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

新機能

 * ssh(1), sshd(8): add support for a new hybrid post-quantim key
   exchange based on on the FIPS 203 Module-Lattice Key Enapsulation
   mechanism (ML-KEM) combined with X25519 ECDH as described by
   https://datatracker.ietf.org/doc/html/draft-kampanakis-curdle-ssh-pq-ke-03
   This algorithm "mlkem768x25519-sha256" is available by default.

   FIPS 203 Module-Lattice Enapsulation mechanism (ML-KEM) と
   X25519 ECDH を組み合わせ (詳細は
   https://datatracker.ietf.org/doc/html/draft-kampanakis-curdle-ssh-pq-ke-03
   )をベースにする新しいハイブリッド耐量子
   鍵交換のサポートを追加する. 
   このアルゴリズム "mlkem768x25519-sha256" はデフォルトで利用可能だ.

 * ssh(1): the ssh_config "Include" directive can now expand
   environment as well as the same set of %-tokens "Match Exec"
   supports.

   ssh(1): ssh_config の "Include" 設定項目は "Match Exec" でサポート
   されている %-トークンと同じセットのように環境変数を展開できる.

 * sshd(8): add a sshd_config "RefuseConnection" option that, if set
   will terminate the connection at the first authentication request.

   sshd(8): sshd_config に "RefuseConnection" 設定項目を追加する.
   設定すると最初に認証リクエストの時点で接続を終了する.

 * sshd(8): add a "refuseconnection" penalty class to sshd_config
   PerSourcePenalties that is applied when a connection is dropped by
   the new RefuseConnection keyword.

   sshd(8): sshd_config の PerSourcePenalties に "refuseconnection"
   ペナルティクラスを追加する. 新しい RefuseConnection 設定項目に
   よって接続が切断された場合に適用される.

 * sshd(8): add a "Match invalid-user" predicate to sshd_config Match
   options that matches when the target username is not valid on the
   server.

   sshd(8): "Match invalid-user" 述語を sshd_config の Match 設定項目に
   追加する. ターゲットユーザー名がサーバで有効でない場合にマッチする.

 * ssh(1), sshd(8): update the Streamlined NTRUPrime code to a
   substantially faster implementation.

   ssh(1), sshd(8): Streamlined NTRUPrime のコードを大幅に高速な
   実装に更新する.

 * ssh(1), sshd(8): the hybrid Streamlined NTRUPrime/X25519 key
   exchange algorithm now has an IANA-assigned name in addition to
   the "@openssh.com" vendor extension name. This algorithm is now
   also available under this name "sntrup761x25519-sha512"

   ssh(1), sshd(8): ハイブリッド Streamlined NTRUPrime/X25519 鍵交換
   アルゴリズムは今や "@openssh.com" のベンダー拡張名に加えて IANA 
   に割り当てられた名前も持つ. これによりアルゴリズムは今や
   "sntrup761x25519-sha512" という名前でも利用可能だ.

 * ssh(1), sshd(8), ssh-agent(1): prevent private keys from being
   included in core dump files for most of their lifespans. This is
   in addition to pre-existing controls in ssh-agent(1) and sshd(8)
   that prevented coredumps. This feature is supported in OpenBSD,
   Linux and FreeBSD.

   ssh(1), sshd(8), ssh-agent(1): 秘密鍵をその生存期間のほとんどに
   おいてコアダンプファイルに含まれないようにする. これは ssh-agent(1) と
   sshd(8) がコアダンプを阻止する既存の制御への追加だ. この機能は
   OpenBSD と Linux, FreeBSD でサポートされている.

 * All: convert key handling to use the libcrypto EVP_PKEY API, with
   the exception of DSA.

   すべて: DSA を除いて, 鍵の処理を libcrypto EVP_PKEY API を用いる
   ように変換する.

 * sshd(8): add a random amount of jitter (up to 4 seconds) to the
   grace login time to make its expiry unpredictable.

   sshd(8): 期限切れを予測不能とするため, 猶予ログイン時間に
   ランダムなジッタ(最大4秒)を追加する.

Bugfixes
--------

バグ修正

 * sshd(8): relax absolute path requirement back to what it was prior
   to OpenSSH 9.8, which incorrectly required that sshd was started
   with an absolute path in inetd mode. bz3717

   sshd(8): 絶対パスの要求を OpenSSH 9.8 より前のものに戻して緩和する.
   OpenSSH 9.8 では sshd が inetd モードで起動する際に絶対パスで起動
   することを誤って要求していた.

 * sshd(8): fix regression introduced in openssh-9.8 that swapped the
   order of source and destination addresses in some sshd log messages.

   sshd(8): いくつかのログメッセージで送信元アドレスと宛先アドレスの
   順番が入れ替わる openssh-9.8 で導入されたリグレッションを修正する.

 * sshd(8): do not apply authorized_keys options when signature
   verification fails. Prevents more restrictive key options being
   incorrectly applied to subsequent keys in authorized_keys. bz3733

   sshd(8): 署名検証が失敗した場合に authorized_keys のオプションを
   適用しない. より厳しい鍵のオプションが誤って authorized_keys
   の後続の鍵に適用されていたのを防ぐ. bz3733

 * ssh-keygen(1): include pathname in some of ssh-keygen passphrase
   prompts. Helps the user know what's going on when ssh-keygen is
   invoked via other tools. Requested in GHPR503

   ssh-keygen(1): ssh-keygen のパスフレーズのプロンプトのいくつかに
   パス名を含む. ssh-keygen が他のツールから呼び出された場合に
   ユーザーが状況を把握するのを助ける. GHPR503 で要求された.

 * ssh(1), ssh-add(1): make parsing user@host consistently look for
   the last '@' in the string rather than the first. This makes it
   possible to more consistently use usernames that contain '@'
   characters.

   ssh(1), ssh-add(1): user@host の解析を一貫して 文字列中の最初の 
   '@' ではなく 最後の '@' をを探すようにする. これにより '@' 文字
   を含むユーザー名がより一貫して利用できるようになる.

 * ssh(1), sshd(8): be more strict in parsing key type names. Only
   allow short names (e.g "rsa") in user-interface code and require
   full SSH protocol names (e.g. "ssh-rsa") everywhere else. bz3725

   ssh(1), sshd(8): 鍵タイプ名のパースをより厳格にする. ユーザー
   インターフェイスのコードでのみ短い名前(例えば "rsa") を許し,
   全ての箇所で完全な SSH プロトコル名 (例えば "ssh-rsa") を
   要求する. bz3725

 * regress: many performance and correctness improvements to the
   re-keying regression test.

   regress: re-keying 回帰テストのたくさんのパフォーマンスと正確性の改善.

 * ssh-keygen(1): clarify that ed25519 is the default key type
   generated and clarify that rsa-sha2-512 is the default signature
   scheme when RSA is in use. GHPR505

   ssh-keygen(1): ed25519 が生成される鍵タイプのデフォルトなことを明確に
   する. また RSA が用いられる際 rsa-sha-512 がデフォルトの署名スキーム
   なことを明確にする. GHPR505

 * sshd(8): fix minor memory leak in Subsystem option parsing; GHPR515

   sshd(8): Subsystem 設定項目の解析での小さなメモリリークを修正する;
   GHPR515

 * All: additional hardening and consistency checks for the sshbuf
   code.

   すべて: sshbuf コードに対する追加の堅牢化と一貫性の検査.

 * sshd(8): reduce default logingrace penalty to ensure that a single
   forgotton login that times out will be below the penalty threshold.

   sshd(8): タイムアウトした単一のログイン忘れが ペナルティの閾値を
   下回るようデフォルトの logingrace ペナルティを低減する.

 * ssh(1): fix proxy multiplexing (-O proxy) bug. If a mux started with
   ControlPersist then later has a forwarding added using mux proxy
   connection and the forwarding was used, then when the mux proxy
   session terminated, the mux master process would issue a bad message
   that terminated the connection.

   ssh(1): プロキシの多重化 (-O proxy) のバグを修正する. ControlPersist
   と共に開始された多重化が, 後で多重化プロキシ接続を用いて転送が追加され,
   その転送が利用されると, 多重化プロキシセッションが終了する際に
   多重化マスタープロセスは接続を終了させる不正なメッセージを発行していた.

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

移植性

 * sync contrib/ssh-copy-id to the latest upstream version.

   contrib/ssh-copy-id を最新のアップストリームのバージョンに同期する.

 * regress: improve portablility for some awk(1) usage (e.g. Solaris)

   regress: いくつかの awk(1) 利用 (例: Solaris) での移植性を改善する

 * In the contrib/redhat RPM spec file, without_openssl was previously
   incorrectly enabled unconditionally.

   contrib/redhat RPM spec ファイルで, without_openssl が
   以前は誤って無条件に有効になっていた.

 * sshd(8) restore audit call before exit that regressed in openssh-9.8
   Fixes an issue where the SSH_CONNECTION_ABANDON event was not
   recorded.

   sshd(8): openssh-9.8 で後退した exit 前の監査呼び出しを復元する.
   これにより SSH_CONNECTION_ABANDON イベントが記録されていなかった
   問題を修正する.

 * sshd(8): add support for class-imposed loging restrictions on FreeBSD.
   Allowing auth_hostok(3) and auth_timeok(3) to control logins.

   sshd(8): FreeBSD でのクラスによるログ制限のサポートを追加する.
   auth_hostok(3) と auth_timeok(3) でのログインの制御が可能になる.

 * Build fixes for Musl libc.

   Musl ライブラリのビルドの修正.

 * Fix detection of setres*id on GNU/Hurd

   GNU/Hurd での setres*id の検知の修正.

2024/07 学習のまとめ

31 Jul, 2024 - 2 minutes

2023/11 より案件をやっておらずブラブラしています. (よいお話があれば仕事しますのでなんらかの連絡方法で連絡してください)

最近は再学習もそれなりにやっているので月末にやったことなどをまとめておくといいかなと思いこのようなものを書いてみます

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

18 Jun, 2024 - 8 minutes

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

Call for testing: openssh-9.8

重要と思える変更点は次です.

  • 署名アルゴリズム DSA のサポートがコンパイル時にデフォルトで無効になります
  • これまでの sshd バイナリが リスナーのバイナリ sshd とセッションごとのバイナリ sshd-session に分離されます
    • 一部のログメッセージに変更があります
  • (fail2ban のようなサードパーティのソフトウェアを利用せずに) sshd に認証までの段階で攻撃が疑われるクライアントアドレスからの接続をブロックする機能が追加されます
    • 認証失敗, 認証未完了, sshd のクラッシュ など
    • デフォルトで有効になります

アップグレードには慎重な対応が求められる場合があるでしょう

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

5 Mar, 2024 - 4 minutes

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

Call for testing: OpenSSH 9.7

バグ修正中心のリリースとなる予定です. DSA の無効化に向けての動きがあります.

https://lists.mindrot.org/pipermail/openssh-unix-dev/2024-March/041181.html

Future deprecation notice
=========================

将来非推奨となる機能の告知

OpenSSH plans to remove support for the DSA signature algorithm in
early 2025 and compile-time disable it later this year.

OpenSSH は 2025年前半に DSA 署名アルゴリズムに対するサポートを除き,
今年(2024)の後半にコンパイル時に無効にすることを計画している.

DSA, as specified in the SSHv2 protocol, is inherently weak - being
limited to a 160 bit private key and use of the SHA1 digest. Its
estimated security level is only 80 bits symmetric equivalent.

SSHv2 プロトコルで指定された DSA は 本質的に弱い - 秘密鍵が 160 bit
に制限されていて SHA1 ハッシュを用いている. 見積もられるセキュリティレベル
は共通鍵暗号の 80 bit しかない.

OpenSSH has disabled DSA keys by default since 2015 but has retained
run-time optional support for them. DSA was the only mandatory-to-
implement algorithm in the SSHv2 RFCs[3], mostly because alternative
algorithms were encumbered by patents when the SSHv2 protocol was
specified.

OpenSSH は 2015 年以降 DSA 鍵をデフォルトで無効にしているが, 
ランタイムでの(任意の)サポートは維持している. DSA は,
SSHv2 プロトコルが仕様化された際に代替のアルゴリズムが特許で阻まれていた
ため, SSHv2 RFC[3] 中で実装が必須の唯一のアルゴリズムだ.

This has not been the case for decades at this point and better
algorithms are well supported by all actively-maintained SSH
implementations. We do not consider the costs of maintaining DSA in
OpenSSH to be justified and hope that removing it from OpenSSH can
accelerate its wider deprecation in supporting cryptography
libraries.

現時点では何十年もこのような(特許による障害がある)場合は起こっておらず, 
すべての活発に維持されている SSH の実装でよりよいアルゴリズムが
十分にサポートされている. 我々は OpenSSH で DSA を維持するコストが
正当化されるとは考えておらず, OpenSSH から DSA を除くことが
(DSAを) サポートしている暗号ライブラリでのより広い DSA の非推奨への加速
を期待している.

This release makes DSA support in OpenSSH compile-time optional,
defaulting to on. We intend the next release to change the default
to disable DSA at compile time. The first OpenSSH release of 2025
will remove DSA support entirely.

このリリースは OpenSSH の DSA のサポートをコンパイル時に選択可能にする.
デフォルトは有効. 我々は次のリリースでコンパイル時に DSA を無効にするのを
デフォルトにする予定だ. 2025 年の 最初の OpenSSH のリリースで DSA の
サポートを完全に無効にするつもりだ.

Changes since OpenSSH 9.6
=========================

OpenSSH 9.6 からの変更点

This release contains mostly bugfixes.

このリリースは主にバグ修正を含む.

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

新機能

 * ssh(1), sshd(8): add a "global" ChannelTimeout type that watches
   all open channels and will close all open channels if there is no
   traffic on any of them for the specified interval. This is in
   addition to the existing per-channel timeouts added recently.

   ssh(1), sshd(8): すべての開いているチャンネルを監視し
   指定された間隔でそのすべてについてトラフィックがなかったりら
   すべての開いているチャンネルを閉じる "global" ChannelTimeout を
   追加する. これは最近追加された既存のチャンネルごとの timeout に
   追加される.

   This supports situations like having both session and x11
   forwarding channels open where one may be idle for an extended
   period but the other is actively used. The global timeout could
   close both channels when both have been idle for too long.

   これはセッションと X11 転送のチャンネルが開かれていて 一方は
   長い期間 idle だがもう一方は活発に使われている といった場合を
   サポートする. global な timeout は両方が長い間 idle になると
   両方を閉じる.

 * All: make DSA key support compile-time optional, defaulting to on.

   すべて: DSA 鍵のサポートをコンパイル時に選択可能とする. デフォルトは有効.

Bugfixes
--------

バグ修正

 * sshd(8): don't append an unnecessary space to the end of subsystem
   arguments (bz3667)

   sshd(8): サブシステムの引数の最後に不要な空白を追加しない (bz3667)

 * ssh(1): fix the multiplexing "channel proxy" mode, broken when
   keystroke timing obfuscation was added. (GHPR#463)

   ssh(1): 多重化する "channel proxy" モードを修正する. 
   キーストロークのタイミングの不明瞭化を追加した際に壊れていた.
   (GHPR#463)

 * ssh(1), sshd(8): fix spurious configuration parsing errors when
   options that accept array arguments are overridden (bz3657).

   ssh(1), sshd(8): 配列の引数を許容する設定項目が上書きされた場合に
   間違った設定のパースを修正する (bz3657)

 * Many fixes to manual pages and other documentation, including
   GHPR#462, GHPR#454, GHPR#442 and GHPR#441.

   GHPR#462 と GHPR#454, GHPR#442, GHPR#441 を含むマニュアルや
   他の文書の沢山の修正.

 * Greatly improve interop testing against PuTTY.

   PuTTY に対する相互運用性テストのすごい改善.

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

移植性

 * Improve the error message when the autoconf OpenSSL header check
   fails (bz#3668)

   autoconf の OpenSSL ヘッダーのチェックに失敗した場合の
   エラーメッセージを改善する (bz#3668)

 * Improve detection of broken toolchain -fzero-call-used-regs support
   (bz3645).

   こわれた toolchain の -fzero-call-used-regs サポートの検出を
   改善する (bz3645).

 * Fix regress/misc/fuzz-harness fuzzers and make them compile without
   warnings when using clang16

   regress/misc/fuzz-harness fuzzer を修正し, clang16 を利用時のコンパイルで
   警告が出ないようにする.

OpenSSH 9.6p1 がリリースされました

18 Dec, 2023 - 9 minutes

2023/12/18, OpenSSH 9.6p1 がリリースされました.

セキュリティ修正を含むリリースです.

https://www.openssh.com/releasenotes.html#9.6p1

https://twitter.com/sempreff/status/1737072694116647095
でご指摘頂いた誤字を修正しました (2023-12-19 20:35)

Changes since OpenSSH 9.5
=========================

OpenSSH 9.5 からの変更点

This release contains a number of security fixes, some small features
and bugfixes.

このリリースは複数のセキュリティ修正といくつかの小さな機能追加,
バグ修正を含んでいる

Security
========

セキュリティ

This release contains fixes for a newly-discovered weakness in the
SSH transport protocol, a logic error relating to constrained PKCS#11
keys in ssh-agent(1) and countermeasures for programs that invoke
ssh(1) with user or hostnames containing invalid characters.

このリリースは, SSH トランスポートプロトコルで新しく発見された弱点と
ssh-agent(1) での制限された PKCS#11 鍵に関連するロジックエラーに対する
修正と, ユーザーないしホスト名に不正な文字を含む場合に ssh(1) を起動する
プログラムに対する対抗策を含んでいる.

 * ssh(1), sshd(8): implement protocol extensions to thwart the
   so-called "Terrapin attack" discovered by Fabian Bäumer, Marcus
   Brinkmann and Jörg Schwenk. This attack allows a MITM to effect a
   limited break of the integrity of the early encrypted SSH transport
   protocol by sending extra messages prior to the commencement of
   encryption, and deleting an equal number of consecutive messages
   immediately after encryption starts. A peer SSH client/server
   would not be able to detect that messages were deleted.

   ssh(1), sshd(8): Fabian Bäumer と Marcus Brinkmann, Jörg Schwenk
   によって発見された いわゆる "Terrapin attack" を妨害する
   プロトコル拡張を実装する. この攻撃は, 暗号化の開始の前に余分な
   メッセージを送信し暗号化の開始後すぐに同数の連続したメッセージを
   削除することで初期の暗号化された SSH トランスポートプロトコルの
   完全性を限定的に破ることで MITM を可能にする. SSH
   クライアント/サーバー ピアはメッセージが削除されたことを検出できない.

   While cryptographically novel, the security impact of this attack
   is fortunately very limited as it only allows deletion of
   consecutive messages, and deleting most messages at this stage of
   the protocol prevents user user authentication from proceeding and
   results in a stuck connection.

   暗号的には目新しいものだが, この攻撃のセキュリティへの影響は,
   幸運なことに非常に限られている.
   この攻撃が可能にするのは連続したメッセージの削除のみで, プロトコルの
   この段階で多くのメッセージを削除するとユーザー認証が妨害されて
   結果として接続はスタックする.

   The most serious identified impact is that it lets a MITM to
   delete the SSH2_MSG_EXT_INFO message sent before authentication
   starts, allowing the attacker to disable a subset of the keystroke
   timing obfuscation features introduced in OpenSSH 9.5. There is no
   other discernable impact to session secrecy or session integrity.

   認識されているもっとも重大な影響は, MITM によって
   認証の開始前に送られた SSH2_MSG_EXT_INFO
   メッセージが削除されることで,
   攻撃者は OpenSSH 9.5 で導入された キーストロークのタイミングを
   不明瞭にする特徴を無効にできる.
   これはセッションの秘匿性やセッションの完全性に対してそれ以外の
   認識できる影響は及ぼさない.

   OpenSSH 9.6 addresses this protocol weakness through a new "strict
   KEX" protocol extension that will be automatically enabled when
   both the client and server support it. This extension makes
   two changes to the SSH transport protocol to improve the integrity
   of the initial key exchange.

   OpenSSH 9.6 は このプロトコルの弱点に対し, 新しい "strict KEX"
   プロトコル拡張で対処する. この拡張はクライアントとサーバー両方で
   サポートされている場合に自動的に有効になる. この拡張は
   最初の鍵交換での完全性を向上する 2 点の変更を SSH トランスポート
   プロトコルに適用する.

   Firstly, it requires endpoints to terminate the connection if any
   unnecessary or unexpected message is received during key exchange
   (including messages that were previously legal but not strictly
   required like SSH2_MSG_DEBUG). This removes most malleability from
   the early protocol.

   まず, この拡張は鍵交換中に不要なメッセージや予測されないメッセージを
   受け取った場合に接続を終了することを要求する(SSH2_MSG_DEBUG のように
   以前は正当であったが厳密には必須ではないメッセージも含む). これにより
   以前のプロトコルから多くの柔軟性を除かれる.

   Secondly, it resets the Message Authentication Code counter at the
   conclusion of each key exchange, preventing previously inserted
   messages from being able to make persistent changes to the
   sequence number across completion of a key exchange. Either of
   these changes should be sufficient to thwart the Terrapin Attack.

   次に, この拡張は 鍵交換の完了のたびにメッセージ認証コード(MAC)
   をリセットし, 以前はできた鍵交換の完了にまたがったシーケンス番号の
   永続的な変更を可能にするメッセージの挿入を防止する. これらの変更
   のどちらかがあれば Terrapin 攻撃を妨害するのに十分と考えられる.

   More details of these changes are in the PROTOCOL file in the
   OpenSSH source distribition.

   OpenSSH のソース配布の PROTOCOL ファイルにこれらの変更のより詳細な
   記述がある.

 * ssh-agent(1): when adding PKCS#11-hosted private keys while
   specifying destination constraints, if the PKCS#11 token returned
   multiple keys then only the first key had the constraints applied.
   Use of regular private keys, FIDO tokens and unconstrained keys
   are unaffected.

   ssh-agent(1): 転送先の制限を指定された PKCS#11 形式の秘密鍵を
   追加する際, PKCS#11 トークンが複数の鍵を返すと, 最初の鍵のみに
   制限が適用されていた. 通常の秘密鍵や FIDO トークン, 制限されていない
   鍵の利用には影響しない.

 * ssh(1): if an invalid user or hostname that contained shell
   metacharacters was passed to ssh(1), and a ProxyCommand,
   LocalCommand directive or "match exec" predicate referenced the
   user or hostname via %u, %h or similar expansion token, then
   an attacker who could supply arbitrary user/hostnames to ssh(1)
   could potentially perform command injection depending on what
   quoting was present in the user-supplied ssh_config(5) directive.

   ssh(1): シェルのメタ文字を含む不正なユーザー名やホスト名が ssh(1)
   や ProxyCommand, LocalCommand 設定項目, ユーザーやホスト名を %u, %h
   で参照する "match exec" 述語や同様の展開トークンに渡されると,
   任意のユーザー/ホスト名を ssh(1) に適用できる攻撃者は潜在的に
   ユーザーが提供する ssh_config(5) の設定項目にある引用を利用して
   コマンドインジェクションを実行できる.

   This situation could arise in the case of git submodules, where
   a repository could contain a submodule with shell characters in
   its user/hostname. Git does not ban shell metacharacters in user
   or host names when checking out repositories from untrusted
   sources.

   この状況は git レポジトリがそのユーザー/ホスト名にシェル文字を含む
   submodule を持つ場合に発生しうる. git は信頼していないソースから
   レポジトリをチェックアウトする際ユーザーやホスト名でのシェル
   メタ文字を禁止していない.

   Although we believe it is the user's responsibility to ensure
   validity of arguments passed to ssh(1), especially across a
   security boundary such as the git example above, OpenSSH 9.6 now
   bans most shell metacharacters from user and hostnames supplied
   via the command-line. This countermeasure is not guaranteed to be
   effective in all situations, as it is infeasible for ssh(1) to
   universally filter shell metacharacters potentially relevant to
   user-supplied commands.

   ssh(1) に渡す引数の正当性を検証するのはユーザーの責任であると
   我々は考えているが,
   (特に前出の git の例でのセキュリティ境界を越える場合などでは)
   OpenSSH 9.6ではコマンドラインから提供されるユーザー/ホスト名について
   ほとんどのシェルメタ文字を禁止する. この対抗策はすべての場合に
   ついて効果があるとは保証されない.
   ユーザーが提供するコマンドに関連しうるシェルメタ文字を例外なくフィルター
   することは ssh(1) には不可能だからだ.

   User/hostnames provided via ssh_config(5) are not subject to these
   restrictions, allowing configurations that use strange names to
   continue to be used, under the assumption that the user knows what
   they are doing in their own configuration files.

   ssh_config(5) で提供されるユーザー/ホスト名はこれらの制限の対象外で,
   ユーザーは自身の設定ファイルで行なわれていることを知っているという仮定に基づき
   設定では奇妙な名前を引き続き利用可能だ.

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

潜在的に非互換な変更

 * ssh(1), sshd(8): the RFC4254 connection/channels protocol provides
   a TCP-like window mechanism that limits the amount of data that
   can be sent without acceptance from the peer. In cases where this
   limit was exceeded by a non-conforming peer SSH implementation,
   ssh(1)/sshd(8) previously discarded the extra data. From OpenSSH
   9.6, ssh(1)/sshd(8) will now terminate the connection if a peer
   exceeds the window limit by more than a small grace factor. This
   change should have no effect of SSH implementations that follow
   the specification.

   ssh(1), sshd(8): RFC4254 接続/チャンネルプロトコルはピアからの
   受諾なしに送信できるデータ量を制限する TCP 的な window 機構を
   提供する. 不適格なピアの SSH 実装がこの制限を越える場合, 
   ssh(1)/sshd(8) はこれまで余分なデータを捨てていた. OpenSSH 9.6
   からは, ピアがすこしの慈悲の要素を越えて window の制限を越えてきたら,
   ssh(1)/sshd(8) は接続を終了する. この変更は仕様に従う SSH の実装には
   影響がないはずだ.

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

新機能

 * ssh(1): add a %j token that expands to the configured ProxyJump
   hostname (or the empty string if this option is not being used)
   that can be used in a number of ssh_config(5) keywords. bz3610

   ssh(1): ssh_config(5) のキーワードとして利用できる
   設定された ProxyJump ホスト名
   (ないしこのオプションが設定されていなければ空文字列)を展開する %j
   トークンを追加する.

 * ssh(1): add ChannelTimeout support to the client, mirroring the
   same option in the server and allowing ssh(1) to terminate
   quiescent channels.

   ssh(1): ChannelTimeout サポートをクライアントに追加する.
   サーバー側の同じオプションに対応するもので, ssh(1) が
   利用されていないチャンネルを停止できる.

 * ssh(1), sshd(8), ssh-add(1), ssh-keygen(1): add support for
   reading ED25519 private keys in PEM PKCS8 format. Previously
   only the OpenSSH private key format was supported.

   ssh(1), sshd(8), ssh-add(1), ssh-keygen(1): PEM PKCS8 形式の
   ED25519 秘密鍵の読み取りのサポートを追加する. 以前は 
   OpenSSH 秘密鍵形式のみをサポートしていた.

 * ssh(1), sshd(8): introduce a protocol extension to allow
   renegotiation of acceptable signature algorithms for public key
   authentication after the server has learned the username being
   used for authentication. This allows varying sshd_config(5)
   PubkeyAcceptedAlgorithms in a "Match user" block.

   ssh(1), sshd(8): サーバーが認証で使われたユーザー名を認識したあとで
   公開鍵認証で受け入れる署名のアルゴリズムを再交渉できるプロトコル
   拡張を導入する. これにより, sshd_config(5) の "Match user" ブロックで
   PubkeyAcceptedAlgorithms を可変にできる.

 * ssh-add(1), ssh-agent(1): add an agent protocol extension to allow
   specifying certificates when loading PKCS#11 keys. This allows the
   use of certificates backed by PKCS#11 private keys in all OpenSSH
   tools that support ssh-agent(1). Previously only ssh(1) supported
   this use-case.

   ssh-add(1), ssh-agent(1): PKCS#11 鍵のロードの際に証明書を指定できる
   エージェントプロトコルの拡張を追加する. ssh-agent(1) をサポートする
   すべての OpenSSH ツールで PKCS#11
   秘密鍵を使う証明書の利用を可能にする
   以前は ssh(1) のみがこのユースケースをサポートしていた.

Bugfixes
--------

バグ修正

 * ssh(1): when deciding whether to enable the keystroke timing
   obfuscation, enable it only if a channel with a TTY is active.

   ssh(1): キーストロークのタイミングの不明瞭化を有効にするかを
   決定する際に, TTY が有効なチャンネルのみで有効にする.

 * ssh(1): switch mainloop from poll(3) to ppoll(3) and mask signals
   before checking flags set in signal handler. Avoids potential
   race condition between signaling ssh to exit and polling. bz3531

   ssh(1): メインループを poll(3) から ppoll(3) に変更し, 
   シグナルハンドラーで設定されるフラグをチェックする前にシグナルを
   マスクする. ssh へのシグナルでの終了とポーリング間でありえた
   レースコンディションを避ける. bz3531
 
 * ssh(1): when connecting to a destination with both the
   AddressFamily and CanonicalizeHostname directives in use,
   the AddressFamily directive could be ignored. bz5326

   ssh(1): AddressFamily と CanonicalizeHostname 設定項目の両方が
   設定されている接続先に接続する際 AddressFamily が無視される
   bz5326(訳注: bz3526 が正しい)

 * sftp(1): correct handling of the limits@openssh.com option when
   the server returned an unexpected message.

   sftp(1): サーバーが予期せぬメッセージを返した場合の
   limits@openssh.com の扱いを修正する.

 * A number of fixes to the PuTTY and Dropbear regress/integration
   tests.

   PuTTY と Dropbear の回帰/結合テストを多数修正

 * ssh(1): release GSS OIDs only at end of authentication, avoiding
   unnecessary init/cleanup cycles. bz2982

   ssh(1): 認証の最後にのみ GSS OID を解放する.
   不要な初期化/クリーンアップサイクルを行なわないようにするため.
   bz2982

 * ssh_config(5): mention "none" is a valid argument to IdentityFile
   in the manual. bz3080

   ssh_config(5): マニュアルでの IdentityFile の正当な引数として
   "none" を記述する. bz3080

 * scp(1): improved debugging for paths from the server rejected for
   not matching the client's glob(3) pattern in old SCP/RCP protocol
   mode.

   scp(1): 古い SCP/RCP プロトコルモードでのクライアントの glob(3)
   パターンにマッチしないためにサーバーから拒否されたパスの
   デバッグを改良する.

 * ssh-agent(1): refuse signing operations on destination-constrained
   keys if a previous session-bind operation has failed. This may
   prevent a fail-open situation in future if a user uses a mismatched
   ssh(1) client and ssh-agent(1) where the client supports a key type
   that the agent does not support.

   ssh-agent(1): 以前のセッションに束縛された操作が失敗した場合,
   接続先が制限された鍵での署名操作を拒否する. 
   エージェントがサポートしていない鍵のタイプをクライアントがサポートしている
   バージョンが一致しない ssh(1) と ssh-agent(1) をユーザーが利用する場合に
   fail-open を防ぐことができる.

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

移植性

 * Better identify unsupported and unstable compiler flags, such as
   -fzero-call-used-regs which has been unstable across a several
   clang releases.

   サポートされていないかつ不安定なコンパイラのフラグを識別しやすくした.
   いくつかの clang のリリースで不安定となっている
   -fzero-call-used-regs など.

 * A number of fixes to regression test reliability and log
   collection.

   回帰テストの信頼性とログの回収での多くの修正

 * Update the OpenSSL dependency in the RPM specification.

   RPM 仕様での OpenSSL 依存性を更新する

 * sshd(8): for OpenSolaris systems that support privilege limitation
   via the getpflags() interface, prefer using the newer PRIV_XPOLICY
   to PRIV_LIMIT. bz2833

   sshd(8): OpenSolaris システムで getpflags()
   インターフェイスを利用する特権制限をサポートする.
   PRIV_LIMIT よりも より新しい PRIV_XPOLICY を利用する .