OpenSSH 8.5 がリリースされました
2021/03/03, OpenSSH 8.5 がリリースされました.
- OpenSSH 8.5 Release Note 中の OpenSSH 8.5 での変更点の翻訳
- この記事にも添付します.
- OpenSSH 移植版付属文書の翻訳
https://www.openssh.com/txt/release-8.5
Future deprecation notice
=========================
将来廃止される機能の告知
It is now possible[1] to perform chosen-prefix attacks against the
SHA-1 algorithm for less than USD$50K.
USドル 50K より少ない金額で SHA-1 アルゴリズムに対する選択プレフィックス
攻撃が実行できることが [1] で示されている.
In the SSH protocol, the "ssh-rsa" signature scheme uses the SHA-1
hash algorithm in conjunction with the RSA public key algorithm.
OpenSSH will disable this signature scheme by default in the near
future.
SSH プロトコルで, "ssh-rsa" 署名スキームは, RSA 公開鍵アルゴリズムと共に
SHA-1 ハッシュアルゴリズムを利用している. OpenSSH は近い将来
デフォルトでこの署名スキームを無効にする予定だ.
Note that the deactivation of "ssh-rsa" signatures does not necessarily
require cessation of use for RSA keys. In the SSH protocol, keys may be
capable of signing using multiple algorithms. In particular, "ssh-rsa"
keys are capable of signing using "rsa-sha2-256" (RSA/SHA256),
"rsa-sha2-512" (RSA/SHA512) and "ssh-rsa" (RSA/SHA1). Only the last of
these is being turned off by default.
"ssh-rsa" 署名の無効化は RSA 鍵の利用の停止を必ずしも必要としない
ことに注意. SSH プロトコルでは, 鍵は複数のアルゴリズムを用いて署名に利用
できる. 特に "ssh-rsa" 鍵は, "rsa-sha2-256" (RSA/SHA256) と
"rsa-sha2-512" (RSA/SHA512), "ssh-rsa" (RSA/SHA1) を用いて署名可能だ.
最後のものだけがデフォルトで無効になる予定だ.
This algorithm is unfortunately still used widely despite the
existence of better alternatives, being the only remaining public key
signature algorithm specified by the original SSH RFCs that is still
enabled by default.
このアルコリズムは, よりよい代替があるにもかかわらず
もともとの SSH RFC で定義された公開鍵署名アルゴリズムのの中で
ただ 1 つ残ったアルゴリズムとして,
不幸なことにいまだ広く用いられている.
The better alternatives include:
次に示すものがよりよい代替だ:
* The RFC8332 RSA SHA-2 signature algorithms rsa-sha2-256/512. These
algorithms have the advantage of using the same key type as
"ssh-rsa" but use the safe SHA-2 hash algorithms. These have been
supported since OpenSSH 7.2 and are already used by default if the
client and server support them.
RFC8332 の RSA SHA-2 署名アルゴリズム rsa-sha-256/512.
これらのアルゴリズムは "ssh-rsa" と同じ鍵タイプを用いる利点があり
安全な SHA-2 ハッシュアルゴリズムを用いている. これらは
OpenSSH 7.2 以降でサポートされており, クライアントとサーバが
サポートしているならすでにデフォルトで用いられている.
* The RFC8709 ssh-ed25519 signature algorithm. It has been supported
in OpenSSH since release 6.5.
ssh-ed25519 署名アルゴリズム. OpenSSH 6.5 以降でサポートされている.
* The RFC5656 ECDSA algorithms: ecdsa-sha2-nistp256/384/521. These
have been supported by OpenSSH since release 5.7.
RFC5656 の ECDSA アルゴリズム: ecdsa-sha2-nistp256/384/521. These
これらは OpenSSH 5.7 以降でサポートされている.
To check whether a server is using the weak ssh-rsa public key
algorithm, for host authentication, try to connect to it after
removing the ssh-rsa algorithm from ssh(1)'s allowed list:
サーバが, ホストの認証のために, 弱い ssh-rsa 公開鍵アルゴリズムを
利用しているか検査するには, ssh(1) の許可リストから ssh-rsa
アルゴリズムを除いたあとで接続を試行すればよい.
ssh -oHostKeyAlgorithms=-ssh-rsa user@host
If the host key verification fails and no other supported host key
types are available, the server software on that host should be
upgraded.
ホスト鍵検証が失敗し他にサポートされたホスト鍵の種類がない場合,
ホストのサーバソフトウェアをアップグレードする必要がある.
This release enables the UpdateHostKeys option by default to assist
the client by automatically migrating to better algorithms.
このリリースで, クライアントがよりよいアルゴリズムに
自動的に移行できるようにする UpdateHostKeys 設定項目をデフォルトで有効にする.
[1] "SHA-1 is a Shambles: First Chosen-Prefix Collision on SHA-1 and
Application to the PGP Web of Trust" Leurent, G and Peyrin, T
(2020) https://eprint.iacr.org/2020/014.pdf
Security
========
セキュリティ
* ssh-agent(1): fixed a double-free memory corruption that was
introduced in OpenSSH 8.2 . We treat all such memory faults as
potentially exploitable. This bug could be reached by an attacker
with access to the agent socket.
ssh-agent(1): OpenSSH 8.2 で導入されてしまった double-free メモリ
破壊を修正した. 我々はこのようなメモリの問題はすべて潜在的に
悪用可能として取り扱う. このバグは, エージェントのソケット
を通じて攻撃者が到達可能だった.
On modern operating systems where the OS can provide information
about the user identity connected to a socket, OpenSSH ssh-agent
and sshd limit agent socket access only to the originating user
and root. Additional mitigation may be afforded by the system's
malloc(3)/free(3) implementation, if it detects double-free
conditions.
現代的なオペレーティングシステムでは, OS はソケットに接続するための
ユーザ識別についての情報を提供する. OpenSSH ssh-agent と sshd は
エージェントのソケットへのアクセスは, 元々のユーザと root のみに
制限されている. システムの malloc(3)/free(3) の実装が
double-free の状況を検知するならば,
追加の緩和策が存在する場合がある.
The most likely scenario for exploitation is a user forwarding an
agent either to an account shared with a malicious user or to a
host with an attacker holding root access.
もっともありそうな悪用のシナリオは,
悪意のあるユーザと共有しているアカウントや root アクセスを
持つ攻撃者のホストにエージェントをユーザが転送する場合だ.
* Portable sshd(8): Prevent excessively long username going to PAM.
This is a mitigation for a buffer overflow in Solaris' PAM username
handling (CVE-2020-14871), and is only enabled for Sun-derived PAM
implementations. This is not a problem in sshd itself, it only
prevents sshd from being used as a vector to attack Solaris' PAM.
It does not prevent the bug in PAM from being exploited via some
other PAM application. GHPR#212
移植版 sshd(8): 長すぎるユーザ名を PAM に送るのを防ぐ.
これは, Solaris の PAM ユーザ名の扱いでのバッファオーバーフロー
(CVE-2020-14871) に対する緩和策で, Sun 由来の PAM 実装に対してのみ
有効化される. sshd 自身の問題ではなく, Solaris の PAM への攻撃
ベクターとして sshd が使われるのを防ぐだけだ. 他の PAM アプリケーション
によって PAM のバグが悪用されるのを防がない. GHPR#212
Potentially-incompatible changes
================================
潜在的に非互換な変更
This release includes a number of changes that may affect existing
configurations:
このリリースは, 既存の設定に影響する可能性のある変更をいくつか含んでいる.
* ssh(1), sshd(8): this release changes the first-preference signature
algorithm from ECDSA to ED25519.
ssh(1), sshd(8): このリリースで, 最優先の署名アルゴリズムが
ECDSA から ED25519 に変更する.
* ssh(1), sshd(8): set the TOS/DSCP specified in the configuration
for interactive use prior to TCP connect. The connection phase of
the SSH session is time-sensitive and often explicitly interactive.
The ultimate interactive/bulk TOS/DSCP will be set after
authentication completes.
ssh(1), sshd(8): TCP での接続の前に対話的な利用に対して設定で
指定された TOS/DSCP を設定する. SSH のセッションの接続フェーズは
時間に敏感で, しばしば明示的に対話的になる. 最終的な対話的/バルクの
TOS/DSCP は, 認証の完了後に設定せれる.
* ssh(1), sshd(8): remove the pre-standardization cipher
rijndael-cbc@lysator.liu.se. It is an alias for aes256-cbc before
it was standardized in RFC4253 (2006), has been deprecated and
disabled by default since OpenSSH 7.2 (2016) and was only briefly
documented in ssh.1 in 2001.
ssh(1), sshd(8): 標準化前の暗号 rijndael-cbc@lysator.liu.se
を削除する. これは, RFC4253 (2006) で標準化される前の aes256-cbc
のエイリアスで, OpenSSH 7.2 (2016) からデフォルトで非推奨となり
無効化され, 2001 年の ssh.1 で簡単にだけ文書化されている.
* ssh(1), sshd(8): update/replace the experimental post-quantum
hybrid key exchange method based on Streamlined NTRU Prime coupled
with X25519.
ssh(1), sshd(8): X25519 と組合せた Streamlined NTRU Prime を基にする
実験的な量子化後ハイブリッド鍵交換法を更新/交換する.
The previous sntrup4591761x25519-sha512@tinyssh.org method is
replaced with sntrup761x25519-sha512@openssh.com. Per its
designers, the sntrup4591761 algorithm was superseded almost two
years ago by sntrup761.
以前の sntrup4591761x25519-sha512@tinyssh.org は
sntrup761x25519-sha512@openssh.com. に交換される. 設計者によれば
sntrup4591761 アルゴリズムは, sntrup761 により約 2 年前に
置き換えられた.
(note this both the updated method and the one that it replaced are
disabled by default)
(更新された方法も置き換えられた方法もデフォルトでは無効なことに注意)
* ssh(1): disable CheckHostIP by default. It provides insignificant
benefits while making key rotation significantly more difficult,
especially for hosts behind IP-based load-balancers.
ssh(1): CheckHostIP をデフォルトで無効化する.
ささいな利益を提供するが, 特に IP ベースのロードバランサーの背後にある
ホストに対して, 鍵のローテーションをかなり難しくする.
Changes since OpenSSH 8.4
=========================
OpenSSH 8.4 からの変更点
New features
------------
新機能
* ssh(1): this release enables UpdateHostkeys by default subject to
some conservative preconditions:
- The key was matched in the UserKnownHostsFile (and not in the
GlobalKnownHostsFile).
- The same key does not exist under another name.
- A certificate host key is not in use.
- known_hosts contains no matching wildcard hostname pattern.
- VerifyHostKeyDNS is not enabled.
- The default UserKnownHostsFile is in use.
ssh(1): 次の保守的な事前条件の元で, このリリースは UpdateHostkeys を
デフォルトで有効にする.
- UserKnownHostsFile で鍵が一致する (また, GlobalKnownHostsFile では一致しない)
- 別の名前で同じ鍵が存在しない
- 証明書ホスト鍵を利用中ではない
- known_hosts に一致するワイルドカードホスト名パターンを含まない
- VerifyHostKeyDNS が有効ではない
- デフォルトの UserKnownHostsFile が利用中.
We expect some of these conditions will be modified or relaxed in
future.
条件のうちのいくつかを将来変更されたり緩和される可能性がある.
* ssh(1), sshd(8): add a new LogVerbose configuration directive for
that allows forcing maximum debug logging by file/function/line
pattern-lists.
ssh(1), sshd(8): ファイル/関数/行 パターンリストに基づく
最大のデバッグロギングを強制することを可能にする, 新しい
LogVerbose 設定項目を追加する.
* ssh(1): when prompting the user to accept a new hostkey, display
any other host names/addresses already associated with the key.
ssh(1): 新しいホスト鍵の受け入れをユーザに指示する際,
その鍵にすでに紐づいている他のホスト名/アドレスを表示する.
* ssh(1): allow UserKnownHostsFile=none to indicate that no
known_hosts file should be used to identify host keys.
ssh(1): ホスト鍵を識別するのに known_hosts ファイルを利用する
必要がないことを指定する UserKnownHostsFile=none という指定を
可能とする.
* ssh(1): add a ssh_config KnownHostsCommand option that allows the
client to obtain known_hosts data from a command in addition to
the usual files.
ssh(1): ssh_config に KnownHostsCommand 設定項目 を追加する.
クライアントは, 通常のファイルに加えて,
コマンドから known_hosts のデータを得られるようになる.
* ssh(1): add a ssh_config PermitRemoteOpen option that allows the
client to restrict the destination when RemoteForward is used
with SOCKS.
ssh(1): ssh_config に PermitRemoteOpen 設定項目を追加する.
クライアントは, RemoteForward が SOCKS と共に利用された際に
送信先を制限できるようになる.
* ssh(1): for FIDO keys, if a signature operation fails with a
"incorrect PIN" reason and no PIN was initially requested from the
user, then request a PIN and retry the operation. This supports
some biometric devices that fall back to requiring PIN when reading
of the biometric failed, and devices that require PINs for all
hosted credentials.
ssh(1): FIDO の鍵に対して, "間違った PIN" の理由で署名操作が
失敗し, ユーザから最初に PIN が要求されない場合, PIN を要求し
操作をリトライする. これは, 生体情報の読み取りに失敗した場合に
PIN の要求にフォールバックする生体デバイスや, すべての所有
認証情報に対して PIN を要求するデバイスをサポートする.
* sshd(8): implement client address-based rate-limiting via new
sshd_config(5) PerSourceMaxStartups and PerSourceNetBlockSize
directives that provide more fine-grained control on a per-origin
address basis than the global MaxStartups limit.
sshd(8): グローバルな MaxStartups の制限よりも origin 単位の
アドレスを基にした細かな制御ができる
新しい sshd_config(5) の PerSourceMaxStartups と
PerSourceNetBlockSize 設定項目による クライアントのアドレス
に基づく帯域制限を実装する.
Bugfixes
--------
バグ修正
* ssh(1): Prefix keyboard interactive prompts with "(user@host)" to
make it easier to determine which connection they are associated
with in cases like scp -3, ProxyJump, etc. bz#3224
ssh(1): scp -3 や ProxyJump のような場合にどの接続に関連づけられている
かより容易に判断できるように "(user@host)" をキーボード
インタラクティブなプロンプトに前置する. bz#3224
* sshd(8): fix sshd_config SetEnv directives located inside Match
blocks. GHPR#201
sshd(8): Match ブロック内に配置された sshd_config SetEnv 設定項目
を修正する. GHPR#201
* ssh(1): when requesting a FIDO token touch on stderr, inform the
user once the touch has been recorded.
標準エラー出力に FIDO トークンの接触を要求する際, 接触が記録されたら
ユーザに通知する.
* ssh(1): prevent integer overflow when ridiculously large
ConnectTimeout values are specified, capping the effective value
(for most platforms) at 24 days. bz#3229
ssh(1): バカに大きな ConnectTimeout が指定された場合の 整数
オーバーフローを防止し, (多くのプラットフォームで) 実効値を
24 日に制限する. bz#3229
* ssh(1): consider the ECDSA key subtype when ordering host key
algorithms in the client.
ssh(1): クライアントでホスト鍵のアルゴリズムを整列する際に
ECDSA 鍵のサブタイプを考慮する.
* ssh(1), sshd(8): rename the PubkeyAcceptedKeyTypes keyword to
PubkeyAcceptedAlgorithms. The previous name incorrectly suggested
that it control allowed key algorithms, when this option actually
specifies the signature algorithms that are accepted. The previous
name remains available as an alias. bz#3253
ssh(1), sshd(8): PubkeyAcceptedKeyTypes 設定項目を PubkeyAcceptedAlgorithms
に改名する. 以前の名前は 許可される鍵アルゴリズムを制御するかのように
間違った示唆を与えていた. この設定項目は 受けつける署名アルゴリズムを
実際には指定する. 以前の名前もエイリアスとして利用可能のままだ.
bz#3253
* ssh(1), sshd(8): similarly, rename HostbasedKeyTypes (ssh) and
HostbasedAcceptedKeyTypes (sshd) to HostbasedAcceptedAlgorithms.
ssh(1), sshd(8): 同様に (ssh の) HostbasedKeyTypes と (sshd の)
HostbasedAcceptedKeyTypes も HostbasedAcceptedAlgorithms に改名する.
* sftp-server(8): add missing lsetstat@openssh.com documentation
and advertisement in the server's SSH2_FXP_VERSION hello packet.
sftp-server(8): 存在していなかった lsetstat@openssh.com 文書と
サーバの SSH2_FXP_VERSION ハローパケットでの広告を追加する.
* ssh(1), sshd(8): more strictly enforce KEX state-machine by
banning packet types once they are received. Fixes memleak caused
by duplicate SSH2_MSG_KEX_DH_GEX_REQUEST (oss-fuzz #30078).
ssh(1), sshd(8): 一度受信したパケットの種類を禁止して,
鍵交換状態マシンをより厳格に実行する. 重複した SSH2_MSG_KEX_DH_GEX_REQUEST
によって起こるメモリリークを修正する (oss-fuzz #30078)
* sftp(1): allow the full range of UIDs/GIDs for chown/chgrp on 32bit
platforms instead of being limited by LONG_MAX. bz#3206
sftp(1): 32ビットプラットフォームでの chown/chgrp の UID/GID に
LONG_MAX での制限の代わりに全範囲を指定できるようにする.
* Minor man page fixes (capitalization, commas, etc.) bz#3223
マニュアルページのちょっとした修正 (大文字, カンマなど) bz#3223
* sftp(1): when doing an sftp recursive upload or download of a
read-only directory, ensure that the directory is created with
write and execute permissions in the interim so that the transfer
can actually complete, then set the directory permission as the
final step. bz#3222
sftp(1): 読み取り専用のディレクトリの sftp の再帰的なアップロード
ないしダウンロードの際に, 転送中はディレクトリが書き込みと実行権限付きで
作成され, 転送が実際に終了してから最終段階でディレクトリの権限が
設定されることを保証する. bz#3222
* ssh-keygen(1): document the -Z, check the validity of its argument
earlier and provide a better error message if it's not correct.
bz#2879
ssh-keygen(1): -Z オプションを文書化し, その引数の有効性を事前にチェックし,
もし正しくなければよりよいエラーメッセージを提供する. bz#2879
* ssh(1): ignore comments at the end of config lines in ssh_config,
similar to what we already do for sshd_config. bz#2320
ssh(1): sshd_config ですでに同様にしているように,
ssh_config の設定行の末尾のコメントを無視する. bz#2320
* sshd_config(5): mention that DisableForwarding is valid in a
sshd_config Match block. bz3239
sshd_config(5): sshd_config の Match ブロック内での DisableForwarding
が有効だと言及する. bz3239
* sftp(1): fix incorrect sorting of "ls -ltr" under some
circumstances. bz3248.
sftp(1): いくつかの環境での "ls -ltr" の正しくないソートを
修正する. bz3248.
* ssh(1), sshd(8): fix potential integer truncation of (unlikely)
timeout values. bz#3250
ssh(1), sshd(8): (ありそうもない) タイムアウト値の潜在的な整数切り捨て
を修正する. bz#3250
* ssh(1): make hostbased authentication send the signature algorithm
in its SSH2_MSG_USERAUTH_REQUEST packets instead of the key type.
This make HostbasedAcceptedAlgorithms do what it is supposed to -
filter on signature algorithm and not key type.
ssh(1): ホストベースの認証で, 鍵の種類の変りに SSH2_MSG_USERAUTH_REQUEST で
署名のアルゴリズムを送信するようにする. HostbasedAcceptedAlgorithms が
鍵の種類ではなく署名のアルゴリズムでフィルタリングするという
あるべき動作をするようになる.
Portability
-----------
移植性
* sshd(8): add a number of platform-specific syscalls to the Linux
seccomp-bpf sandbox. bz#3232 bz#3260
sshd(8): Linux seccomp-bpf サンドボックスのプラットフォーム特有の
システムコールをいろいろと追加する. bz#3232 bz#3260
* sshd(8): remove debug message from sigchld handler that could cause
deadlock on some platforms. bz#3259
sshd(8): いくつかのプラットフォームでデッドロックを引き起す可能性のあった
sigchld ハンドラからのデバッグメッセージを除去する. bz#3259
* Sync contrib/ssh-copy-id with upstream.
contrib/ssh-copy-id を上流と同期する.
* unittests: add a hostname function for systems that don't have it.
Some systems don't have a hostname command (it's not required by
POSIX). The do have uname -n (which is), but not all of those have
it report the FQDN.
単体テスト: システムが持っていない場合 hostname 関数を追加する.
いくつかのシステムでは, hostname コマンドを持っておらず
(POSIZ で要求されていない), (要求されている )uname -n はあるが,
すべてのシステムで FQDN をレポートするわけではない.