OpenSSH 8.3 がリリースされました
2020/05/27, OpenSSH 8.3 がリリースされました.
- OpenSSH 8.3 Release Note 中の OpenSSH 8.3 での変更点の翻訳
- この記事にも添付します.
- OpenSSH 移植版付属文書の翻訳
https://www.openssh.com/txt/release-8.3
Future deprecation notice
=========================
将来廃止される機能の告知
(訳注: 8.2 のリリースノートにもほぼ同じ内容が含まれている)
It is now possible[1] to perform chosen-prefix attacks against the
SHA-1 algorithm for less than USD$50K. For this reason, we will be
disabling the "ssh-rsa" public key signature algorithm by default in a
near-future release.
USドル 50K より少ない金額で SHA-1 アルゴリズムに対する選択プレフィックス
攻撃が実行できることが [1] で示されている. このため, 我々は
近い将来のリリースで "ssh-rsa" 公開鍵署名アルゴリズムをデフォルトでは
無効にする予定だ.
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.
このアルコリズムは, よりよい代替アルゴリズムがあるにもかかわらず
もともとの 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 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.
ホスト鍵検証が失敗し他にサポートされたホスト鍵の種類がない場合,
ホストのサーバソフトウェアをアップグレードする必要がある.
A future release of OpenSSH will enable UpdateHostKeys by default
to allow the client to automatically migrate to better algorithms.
Users may consider enabling this option manually. Vendors of devices
that implement the SSH protocol should ensure that they support the
new signature algorithms for RSA keys.
OpenSSH の将来のリリースでは, クライアントがよりよいアルゴリズムに
自動的に移行できるようにする UpdateHostKeys 設定項目をデフォルトで有効にする.
ユーザはこの設定項目をマニュアルで有効にしてもよい. (訳注: この節の
次の文が 8.3 で追記された) SSH プロトコルを実装するデバイスのベンダは
RSA 鍵に対する新しい署名アルゴリズムをサポートすることを保証すべきだ.
[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
========
セキュリティ
* scp(1): when receiving files, scp(1) could be become desynchronised
if a utimes(2) system call failed. This could allow file contents
to be interpreted as file metadata and thereby permit an adversary
to craft a file system that, when copied with scp(1) in a
configuration that caused utimes(2) to fail (e.g. under a SELinux
policy or syscall sandbox), transferred different file names and
contents to the actual file system layout.
scp(1): ファイルを受け取る際, utimes(2) システムコールが失敗すると
scp(1) は 非同期になる可能性がある. この時ファイルの内容が
ファイルのメタデータとして解釈される可能性があり, それゆえ
ファイルシステムを加工する攻撃を許してしまう.
(例えば SELinux のポリシー や システムコールサンドボックスによって)
utimes(2) が失敗しうる設定で scp(1) でのコピーされたファイルが,
実際のファイルシステムの配置とは異なるファイル名や内容でコピーされる.
Exploitation of this is not likely as utimes(2) does not fail under
normal circumstances. Successful exploitation is not silent - the
output of scp(1) would show transfer errors followed by the actual
file(s) that were received.
この問題は, utimes(2) は通常の環境で失敗しないので, 発生する蓋然性は低い.
問題が発生したときはわかりやすい - scp の出力は, 実際に転送されたファイル(群)
に続いて転送エラーを表示するだろう.
Finally, filenames returned from the peer are (since openssh-8.0)
matched against the user's requested destination, thereby
disallowing a successful exploit from writing files outside the
user's selected target glob (or directory, in the case of a
recursive transfer). This ensures that this attack can achieve no
more than a hostile peer is already able to achieve within the scp
protocol.
最後に, 相手方から転送されたファイル名は (openssh-8.0 から)
ユーザの要求した転送先に一致するので, ユーザが選択した対象の
glob (ないし, 再帰転送の場合は, ディレクトリ) の外側で
この問題が発生することはない. これは, この攻撃によって悪意のある
相手方が scp プロトコル内で達成できること以上のことはできないことを
保証します.
Potentially-incompatible changes
================================
潜在的に非互換な変更
This release includes a number of changes that may affect existing
configurations:
このリリースは, 既存の設定に変更しうる変更を含んでいる.
* sftp(1): reject an argument of "-1" in the same way as ssh(1) and
scp(1) do instead of accepting and silently ignoring it.
sftp(1): コマンドライン引数 "-1" を ssh(1) と scp(1) と同様に拒否する.
これまでは受け入れて静かに無視していた.
Changes since OpenSSH 8.2
=========================
OpenSSH 8.2 からの変更
The focus of this release is bug fixing.
このリリースの焦点はバグ修正だ.
New Features
------------
新機能
* sshd(8): make IgnoreRhosts a tri-state option: "yes" to ignore
rhosts/shosts, "no" allow rhosts/shosts or (new) "shosts-only"
to allow .shosts files but not .rhosts.
ssh(8): IgnoreRhosts は 3つの状態を持つ設定項目となる. "yes" は
rhosts/shosts を無視する. "no" は rhosts/shosts を利用可能とする.
(新しい) "shosts-only" は .shosts を利用可能とするが, .rhosts は
そうしない.
* sshd(8): allow the IgnoreRhosts directive to appear anywhere in a
sshd_config, not just before any Match blocks; bz3148
sshd(8): IgnoreRhosts 設定項目を, すべての Match ブロック の前ではなく
sshd_config のどこに配置してもよいようにする. bz3148
* ssh(1): add %TOKEN percent expansion for the LocalFoward and
RemoteForward keywords when used for Unix domain socket forwarding.
bz#3014
ssh(1): ユニックスドメインソケット転送で利用する際の %TOKEN (%h など)
の展開を LocalFoward と RemoteForward で追加する. bz#3014
* all: allow loading public keys from the unencrypted envelope of a
private key file if no corresponding public key file is present.
all: 秘密鍵ファイルがあって対応する公開鍵がない場合に, 秘密鍵ファイルの
暗号化されていない envelope から公開鍵をロードできるようにする.
* ssh(1), sshd(8): prefer to use chacha20 from libcrypto where
possible instead of the (slower) portable C implementation included
in OpenSSH.
ssh(1), sshd(8): chacha20 の利用時に, 可能ならば
(より遅い) OpenSSH に含まれる (より遅く) 移植性のある C の実装よりも
libcrypto を利用する.
* ssh-keygen(1): add ability to dump the contents of a binary key
revocation list via "ssh-keygen -lQf /path" bz#3132
ssh-keygen(1): "ssh-keygen -lQf /path" によって バイナリ 鍵
失効リストの内容を出力できるようにする. bz#3132
Bugfixes
--------
バグ修正
* ssh(1): fix IdentitiesOnly=yes to also apply to keys loaded from
a PKCS11Provider; bz#3141
ssh(1): PKCS11Provider からロードされた鍵に対しても IdentitiesOnly=yes
を適用するように修正する; bz#3141
* ssh-keygen(1): avoid NULL dereference when trying to convert an
invalid RFC4716 private key.
ssh-keygen(1): 不正な RFC4716 秘密鍵を変換しようとする際に
NULL の参照を外さないようにする.
* scp(1): when performing remote-to-remote copies using "scp -3",
start the second ssh(1) channel with BatchMode=yes enabled to
avoid confusing and non-deterministic ordering of prompts.
scp(1): "scp -3" を用いて リモート-リモート コピーを実行する際,
プロンプトの混乱を招き非決定的な順番を回避できるよう
2番目の ssh(1) チャンネルを BatchMode=yes で開始する.
* ssh(1), ssh-keygen(1): when signing a challenge using a FIDO token,
perform hashing of the message to be signed in the middleware layer
rather than in OpenSSH code. This permits the use of security key
middlewares that perform the hashing implicitly, such as Windows
Hello.
ssh(1), ssh-keygen(1): FIDO トークンを用いてチャレンジに署名する際,
OpenSSH のコードよりもミドルウェアの層で署名されたメッセージの
ハッシュ化を優先して行なうようにする. Windows ハローのような,
ハッシュを暗黙的に実行するセキュリティ鍵ミドルウェアの利用が
できるようになる.
* ssh(1): fix incorrect error message for "too many known hosts
files." bz#3149
ssh(1): "too many known hosts files" に対する間違った
エラーメッセージを修正する. bz#3149
* ssh(1): make failures when establishing "Tunnel" forwarding
terminate the connection when ExitOnForwardFailure is enabled;
bz#3116
ssh(1): ExitOnForwardFailure が有効な場合に "トンネル" 転送の確立に失敗したら
接続を終了するようにする; bz#3116
* ssh-keygen(1): fix printing of fingerprints on private keys and add
a regression test for same.
ssh-keygen(1): 秘密鍵の指紋の出力を修正し, 回帰テストを追加する.
* sshd(8): document order of checking AuthorizedKeysFile (first) and
AuthorizedKeysCommand (subsequently, if the file doesn't match);
bz#3134
sshd(8): AuthorizedKeysFile (最初にチェックする) と AuthorizedKeysCommand
(ファイルがマッチしなかったら, 次に) の順番を文書化する. bz#3134
* sshd(8): document that /etc/hosts.equiv and /etc/shosts.equiv are
not considered for HostbasedAuthentication when the target user is
root; bz#3148
sshd(8): 対象ユーザが root の場合に HostbasedAuthentication で
/etc/hosts.equiv と /etc/shosts.equiv が考慮されないことを文書化する;
bz#3148
* ssh(1), ssh-keygen(1): fix NULL dereference in private certificate
key parsing (oss-fuzz #20074).
ssh(1), ssh-keygen(1): 秘密証明書鍵のパース時の NULL の参照外しを
修正する (oss-fuzz #20074).
* ssh(1), sshd(8): more consistency between sets of %TOKENS are
accepted in various configuration options.
ssh(1), sshd(8): %TOKENS の集合の間の一貫性を
いろいろな設定オプション間でより一致するようにする.
* ssh(1), ssh-keygen(1): improve error messages for some common
PKCS#11 C_Login failure cases; bz#3130
ssh(1), ssh-keygen(1): PKCS#11 C_Login 失敗のいくつかの場合の
エラーメッセージを改善する; bz#3130
* ssh(1), sshd(8): make error messages for problems during SSH banner
exchange consistent with other SSH transport-layer error messages
and ensure they include the relevant IP addresses bz#3129
ssh(1), sshd(8): SSH バナー交換時の問題のエラーメッセージを
他の SSH トランスポート層エラーメッセージと一貫するようにし,
関連する IPアドレスを含むようにする. bz#3129
* various: fix a number of spelling errors in comments and debug/error
messages
いろいろ: コメントや debug/error メッセージ中のスペルミスを多数
修正する.
* ssh-keygen(1), ssh-add(1): when downloading FIDO2 resident keys
from a token, don't prompt for a PIN until the token has told us
that it needs one. Avoids double-prompting on devices that
implement on-device authentication.
ssh-keygen(1), ssh-add(1): FIDO2 resident 鍵をトークンから
ダウンロードする際, トークンが PIN が必要だと言うまでは
PIN のプロンプトを表示しない. デバイスの認証を実装しているデバイスでの
2重プロンプトを避ける.
* sshd(8), ssh-keygen(1): no-touch-required FIDO certificate option
should be an extension, not a critical option.
sshd(8), ssh-keygen(1): 接触が必要ない FIDO 証明書オプションは
拡張とする必要がある. 必須のオプションではない.
* ssh(1), ssh-keygen(1), ssh-add(1): offer a better error message
when trying to use a FIDO key function and SecurityKeyProvider is
empty.
ssh(1), ssh-keygen(1), ssh-add(1): FIDO 鍵関数を利用しようとして
SecurityKeyProvider が空の場合のエラーメッセージを改善する.
* ssh-add(1), ssh-agent(8): ensure that a key lifetime fits within
the values allowed by the wire format (u32). Prevents integer
wraparound of the timeout values. bz#3119
ssh-add(1), ssh-agent(8): 鍵の有効時間は wire format (u32) で
許可されている値の範囲内に収まることを保証する. タイムアウト値の
整数循環を防止する. bz#3119
* ssh(1): detect and prevent trivial configuration loops when using
ProxyJump. bz#3057.
ssh(1): ProxyJump を利用した 自明な設定ループを検出し防止する bz#3057
Portability
-----------
移植性
* Detect systems where signals flagged with SA_RESTART will interrupt
select(2). POSIX permits implementations to choose whether
select(2) will return when interrupted with a SA_RESTART-flagged
signal, but OpenSSH requires interrupting behaviour.
SA_RESTART フラグ付きのシグナルが select(2) に割り込むシステムを検出する.
POSIX は SA_RESTART フラグ付きのシグナルによって割り込まれた場合に
select(2) が return するかどうかを実装にまかせているが,
OpenSSH は割り込まれる振舞いを要求している.
* Several compilation fixes for HP/UX and AIX.
HP/UX と AIX でのいくつかのコンパイルの問題の修正.
* On platforms that do not support setting process-wide routing
domains (all excepting OpenBSD at present), fail to accept a
configuration attempts to set one at process start time rather than
fatally erroring at run time. bz#3126
プロセス単位のルーティングドメインの設定をサポートしないプラットフォーム
(現在 OpenBSD 以外のすべてのプラットフォーム) で, そのような設定に対して
実行時に致命的に失敗するのではなく開始時に設定しようとしたらエラーと
なるようにする. bz#3126
* Improve detection of egrep (used in regression tests) on platforms
that offer a poor default one (e.g. Solaris).
(例えば Solaris のような) 貧弱なデフォルトの egrep を提供するプラットフォーム
での egrep の検出を改善する. (egrep は回帰テストで利用している)
* A number of shell portability fixes for the regression tests.
回帰テストでの シェル移植性を多数修正する.
* Fix theoretical infinite loop in the glob(3) replacement
implementation.
glob(3) 置換実装での理論上ありえる無限ループを修正する.
* Fix seccomp sandbox compilation problems for some Linux
configurations bz#3085
いくつかの Linux の設定での seccomp サンドボックスのコンパイルの
問題を修正する bz#3085
* Improved detection of libfido2 and some compilation fixes for some
configurations when --with-security-key-builtin is selected.
libfido2 の検出改善し, --with-security-key-builtin が選択された場合の
いくつかの設定でのコンパイル時の問題を修正する.