2016/12/19, OpenSSH 7.4 がリリースされました.

セキュリティ修正, バグ修正が中心のリリースです.

https://www.openssh.com/txt/release-7.4

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

将来廃止される機能の告知

We plan on retiring more legacy cryptography in future releases,
specifically:

将来のリリースでさらなるレガシーな暗号を廃止することを計画している.
具体的には:

 * In approximately August 2017, removing remaining support for the
   SSH v.1 protocol (client-only and currently compile-time disabled).

   2017/08ごろに SSH v.1 プロコロルの残っているサポートを除く
   (クライアントのみで残っていて現在コンパイル時には無効),

 * In the same release, removing support for Blowfish and RC4 ciphers
   and the RIPE-MD160 HMAC. (These are currently run-time disabled).

   同じリリースで, Blowfish と RC4 暗号, RIPE-MD160 HMAC のサポートを
   除く (現在実行時に無効).

 * Refusing all RSA keys smaller than 1024 bits (the current minimum
   is 768 bits)

   1024 ビットより小さいすべての RSA 鍵を拒否する (現在の最小値は 768 ビット)

 * The next release of OpenSSH will remove support for running sshd(8)
   with privilege separation disabled.

   OpenSSH の次のリリースで, 特権分離が無効な sshd(8) の実行のサポートを
   除く.

 * The next release of portable OpenSSH will remove support for
   OpenSSL version prior to 1.0.1.

   移植版 OpenSSH の次のリリースで. 1.0.1 より前の OpenSSL のサポートを除く.

This list reflects our current intentions, but please check the final
release notes for future releases.

このリストは我々の現在の意図を反映している. ただし, 将来のリリースでの
最終的なリリースノートをチェックしてほしい.

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

非互換な可能性のある変更

This release includes a number of changes that may affect existing
configurations:

このリリースは, 既存の設定に影響する可能性がある変更をいくつか含んでいる.

 * This release removes server support for the SSH v.1 protocol.

   このリリースは, SSH v.1 プロトコルのサーバサポートを除く.

 * ssh(1): Remove 3des-cbc from the client's default proposal. 64-bit
   block ciphers are not safe in 2016 and we don't want to wait until
   attacks like SWEET32 are extended to SSH. As 3des-cbc was the
   only mandatory cipher in the SSH RFCs, this may cause problems
   connecting to older devices using the default configuration,
   but it's highly likely that such devices already need explicit
   configuration for key exchange and hostkey algorithms already
   anyway.

   ssh(1): クライアントのデフォルトの提案から 3des-cbc を除く.
   2016 年において 64 ビットブロック暗号は安全ではなく,
   SWEET32 のような攻撃が SSH に拡張されるまで, 我々は待つのを
   望んでいない. 3des-cbc は SSH RFC の中で唯一必須の暗号で,
   デフォルトの設定を用いている古いデバイスに対して接続する際に
   この除去は問題となるかもしれない. しかし, そのようなサービスは
   どうせ鍵公館やホスト鍵のアルゴリズムに明確な設定が必要である
   可能性が非常に高い.

 * sshd(8): Remove support for pre-authentication compression.
   Doing compression early in the protocol probably seemed reasonable
   in the 1990s, but today it's clearly a bad idea in terms of both
   cryptography (cf. multiple compression oracle attacks in TLS) and
   attack surface. Pre-auth compression support has been disabled by
   default for >10 years. Support remains in the client.

   sshd(8): 認証前の圧縮のサポートを除く.
   プロトコルの初期で圧縮を行なうことは, 1990年代には合理的と考えられていた.
   しかし, 暗号額の面からも (例えば, TLS での複数の圧縮 oracle 攻撃)
   攻撃面からも 今日では明確に悪い考えだ.
   認証前の圧縮サポートは デフォルトで10年以上前から無効になっていたが,
   クライアントでサポートは残っていた.

 * ssh-agent will refuse to load PKCS#11 modules outside a whitelist
   of trusted paths by default. The path whitelist may be specified
   at run-time.

   ssh-agent は デフォルトで信頼されたパスのホワイトリスト以外からの
   PKCS#11 モジュールのロードを拒否するようになる. パスのホワイトリストは
   実行時に指定できる.

 * sshd(8): When a forced-command appears in both a certificate and
   an authorized keys/principals command= restriction, sshd will now
   refuse to accept the certificate unless they are identical.
   The previous (documented) behaviour of having the certificate
   forced-command override the other could be a bit confusing and
   error-prone.

   sshd(8): 証明書と, authorized keys/principals の command= 制約の両方で
   force-command が指定されている場合, それらが同一でなければ sshd は
   証明書の受け入れを拒否するようになる.
   証明書の force-command が 他を上書きする場合の以前の(文書化された) 振舞いは
   ちょっと混乱していてエラーをおこしがちだった.

 * sshd(8): Remove the UseLogin configuration directive and support
   for having /bin/login manage login sessions.

   sshd(8): UseLogin 設定項目と/bin/login にログインセッションを管理させる仕組みの
   サポートを除く.


Changes since OpenSSH 7.3
=========================

OpenSSH 7.3 からの変更点

This is primarily a bugfix release.

これは主にバグ修正のリリースだ.

Security
--------

セキュリティ

 * ssh-agent(1): Will now refuse to load PKCS#11 modules from paths
   outside a trusted whitelist (run-time configurable). Requests to
   load modules could be passed via agent forwarding and an attacker
   could attempt to load a hostile PKCS#11 module across the forwarded
   agent channel: PKCS#11 modules are shared libraries, so this would
   result in code execution on the system running the ssh-agent if the
   attacker has control of the forwarded agent-socket (on the host
   running the sshd server) and the ability to write to the filesystem
   of the host running ssh-agent (usually the host running the ssh
   client). Reported by Jann Horn of Project Zero.

   ssh-agent(1): (実行時に設定可能な) 信頼できるホワイトリスト外の
   パスからの PKCS#11 モジュールのロードを拒否するようになる.
   モジュールのロードの要求はエージェントの転送によって渡される可能性があり,
   攻撃者は転送されたエージェントチャンネルからの 悪意のあるPKCS#11 モジュール
   をロードする可能性がある. PKCS#11 モジュールは共有ライブラリで,
   (sshd サーバが走るホストで) 攻撃者が転送された agent ソケットの制御を持っていると,
   ssh-agent が走るシステムでコード実行が可能になる. また,
   ssh-agent が走るホスト (通常 ssh クライアントが走るホスト)の
   ファイルシステムへの書き込みが可能になる. Project Zero の
   Jann Horn によって報告された.

 * sshd(8): When privilege separation is disabled, forwarded Unix-
   domain sockets would be created by sshd(8) with the privileges of
   'root' instead of the authenticated user. This release refuses
   Unix-domain socket forwarding when privilege separation is disabled
   (Privilege separation has been enabled by default for 14 years).
   Reported by Jann Horn of Project Zero.

   sshd(8): 特権分離が無効な場合, 転送された Unixドメインソケットは
   認証されたユーザの権限ではなく 'root' 権限で sshd(8)に作成される.
   このリリースでは, 特権分離が無効な場合に転送に対するユニックスドメインソケット
   を拒否する.  (特権分離がデフォルトで有効になって14年経つ)
   Project Zero の Jann Horn によって報告された.

 * sshd(8): Avoid theoretical leak of host private key material to
   privilege-separated child processes via realloc() when reading
   keys. No such leak was observed in practice for normal-sized keys,
   nor does a leak to the child processes directly expose key material
   to unprivileged users. Reported by Jann Horn of Project Zero.

   sshd(8): 理論上ありえる, 漏鍵の再読み込み時の realloc() による
   特権分離された子プロセスへのホスト秘密鍵の内容の洩を避ける.
   このような漏洩は通常のサイズの鍵では実際には観測されないし,
   非特権ユーザに対して鍵の内容を子プロセスが直接さらす漏洩ではない.
   Project Zero の Jann Horn によって報告された.

 * sshd(8): The shared memory manager used by pre-authentication
   compression support had a bounds checks that could be elided by
   some optimising compilers. Additionally, this memory manager was
   incorrectly accessible when pre-authentication compression was
   disabled. This could potentially allow attacks against the
   privileged monitor process from the sandboxed privilege-separation
   process (a compromise of the latter would be required first).
   This release removes support for pre-authentication compression
   from sshd(8). Reported by Guido Vranken using the Stack unstable
   optimisation identification tool (http://css.csail.mit.edu/stack/)

   sshd(8): 認証前圧縮サポートで用いていた共有メモリマネージャは
   境界チェックがコンパイラの最適化によって除かれてしまうことがある.
   さらに, このメモリマネージャは認証前圧縮が無効な場合でも
   不正にアクセスできる. このため, サンドボックス化された特権分離プロセスから
   特権モニタプロセスへの攻撃が潜在的に可能になる 
   (ただし前者の攻撃には後者が必要となるだろう)
   このリリースで 認証前圧縮を sshd(8) から削除する. スタック不安定
   最適化識別ツール (http://css.csail.mit.edu/stack/) を用いて
   Guido Vranken によって報告された.

 * sshd(8): Fix denial-of-service condition where an attacker who
   sends multiple KEXINIT messages may consume up to 128MB per
   connection. Reported by Shi Lei of Gear Team, Qihoo 360.

   sshd(8): 攻撃者が複数の KEXINIT メッセージを送り接続ごとに 128MB まで
   消費することによって起こるサービス不能状況を修正する.
   Gear Team, Qihoo 360 の Shi Lei によって報告された.

 * sshd(8): Validate address ranges for AllowUser and DenyUsers
   directives at configuration load time and refuse to accept invalid
   ones. It was previously possible to specify invalid CIDR address
   ranges (e.g. user@127.1.2.3/55) and these would always match,
   possibly resulting in granting access where it was not intended.
   Reported by Laurence Parry.

   sshd(8): 設定ロード時に AllowUser と DenyUsers 設置項目のアドレスレンジを
   検証し, 不正なものを拒否する. 以前は (例えば user@127.1.2.3/55 のような)
   不正な CIDR アドレスを指定でき, これらは常にマッチして, 意図していない
   アクセス許可となる可能性があった.
   Laurence Parry によって報告された.

New Features
------------

新機能

 * ssh(1): Add a proxy multiplexing mode to ssh(1) inspired by the
   version in PuTTY by Simon Tatham. This allows a multiplexing
   client to communicate with the master process using a subset of
   the SSH packet and channels protocol over a Unix-domain socket,
   with the main process acting as a proxy that translates channel
   IDs, etc.  This allows multiplexing mode to run on systems that
   lack file- descriptor passing (used by current multiplexing
   code) and potentially, in conjunction with Unix-domain socket
   forwarding, with the client and multiplexing master process on
   different machines. Multiplexing proxy mode may be invoked using
   "ssh -O proxy ..."

   ssh(1): ssh(1) にプロキシ多重化モードを追加する.
   Simon Tatham による PuTTY のバージョンに刺激された.
   SSH パケット/キャンネルプロトコルの部分集合を
   Unixドメインソケット上で用いて
   マスタープロセスと通信するクライアントを多重化する.
   このときメインプロセスがチャンネルIDなどを翻訳するプロキシとして振舞う.
   これにより, (現在の多重化コードを用いては)ファイルデスクリプタの転送ができない
   システムで多重化モードが走らせることができる.
   また, 可能性としてはUnixドメインソケット転送と合わせたり,
   別マシン上のクライアントと多重化されたマスタープロセスで
   動かすことができる. 多重化プロキシモードは "ssh -O proxy ..." を用いて
   駆動される

 * sshd(8): Add a sshd_config DisableForwarding option that disables
   X11, agent, TCP, tunnel and Unix domain socket forwarding, as well
   as anything else we might implement in the future. Like the
   'restrict' authorized_keys flag, this is intended to be a simple
   and future-proof way of restricting an account.

   sshd(8): sshd_config に DisableForwarding 設定項目を追加する.
   これは X11, エージェント, TCP, トンネル, Unixドメインソケットの
   転送を無効にする. また将来実装される他の転送も無効にする.
   authorized_keys の 'restrict' フラグと同様,
   DisableForwaring の意図は, アカウントを制限する
   単純で将来でも有効な方法を提供することだ.

 * sshd(8), ssh(1): Support the "curve25519-sha256" key exchange
   method. This is identical to the currently-supported method named
   "curve25519-sha256@libssh.org".

   sshd(8), ssh(1): "curve25519-sha256" 鍵交換法をサポートする.
   現在サポートされている "curve25519-sha256@libssh.org" という方法と
   同じものだ.

 * sshd(8): Improve handling of SIGHUP by checking to see if sshd is
   already daemonised at startup and skipping the call to daemon(3)
   if it is. This ensures that a SIGHUP restart of sshd(8) will
   retain the same process-ID as the initial execution. sshd(8) will
   also now unlink the PidFile prior to SIGHUP restart and re-create
   it after a successful restart, rather than leaving a stale file in
   the case of a configuration error. bz#2641

   sshd(8): SIGHUP の扱いを改善する. sshd がすでに開始時にデーモン化しているか
   そうならば daemon(3) の呼出しをスキップしているか をチェックするようになる.
   これで, sshd(8) の SIGHUP 再起動が 最初の実行と同じプロセスIDを維持する
   のを保証する. sshd(8) は SIGHUP 再起動の前に PidFile を削除し
   再起動が成功したら再作成する. 設定エラーの場合に古いファイルが残らないようになる
   bz#2641

 * sshd(8): Allow ClientAliveInterval and ClientAliveCountMax
   directives to appear in sshd_config Match blocks.

   sshd(8): sshd_config の Match ブロック内で ClientAliveInterval と
   ClientAliveCountMax 設定項目が利用可能に

 * sshd(8): Add %-escapes to AuthorizedPrincipalsCommand to match
   those supported by AuthorizedKeysCommand (key, key type,
   fingerprint, etc.) and a few more to provide access to the
   contents of the certificate being offered.

   sshd(8): AuthorizedPrincipalsCommand に % エスケープを追加する.
   AuthorizedKeysCommand でサポートされているエスケープ(鍵, 鍵の種類,
   指紋など)と, さらに提供されている証明書の内容へのアクセスを提供する
   マッチをする.

 * Added regression tests for string matching, address matching and
   string sanitisation functions.

   文字列マッチ, アドレスマッチ, 文字列無害化関数への回帰テストを追加した.

 * Improved the key exchange fuzzer harness.

   鍵交換の fuzz テスト用ハーネスを改善した.

Bugfixes
--------

バグ修正

 * ssh(1): Allow IdentityFile to successfully load and use
   certificates that have no corresponding bare public key. bz#2617
   certificate id_rsa-cert.pub (and no id_rsa.pub).

   ssh(1): 対応する生の公開鍵がない証明書を IdentityFile で
   ロードし利用できる. bz#2617
   (例えば id_rsa.pub がない id_rsa-cert.pub 証明書)

 * ssh(1): Fix public key authentication when multiple
   authentication is in use and publickey is not just the first
   method attempted. bz#2642

   ssh(1): 複数の認証法が利用されて, 公開鍵認証が最初に試行される
   方式でない場合の公開鍵認証を修正する. bz#2642

 * regress: Allow the PuTTY interop tests to run unattended. bz#2639

   回帰テスト: PuTTY 相互運用性テストが手入力なしで動くようにする. bz#2639

 * ssh-agent(1), ssh(1): improve reporting when attempting to load
   keys from PKCS#11 tokens with fewer useless log messages and more
   detail in debug messages. bz#2610

   ssh-agent(1), ssh(1): PKCS#11 トークンから鍵を読み込む場合に
   少しの無用なログとより詳細なデバッグメッセージが出ていたので
   リポーティングを改善する. bz#2610

 * ssh(1): When tearing down ControlMaster connections, don't
   pollute stderr when LogLevel=quiet.

   ssh(1): ControlMaster 接続を落す場合に, LogLevel=quiet なら
   stderr を汚染しない.

 * sftp(1): On ^Z wait for underlying ssh(1) to suspend before
   suspending sftp(1) to ensure that ssh(1) restores the terminal mode
   correctly if suspended during a password prompt.

   sftp(1): sftp(1) を中断する前に ^Z で 基底の ssh(1) が 中断された場合に
   パスワードプロンプト表示中に中断されていても ssh(1) が 正しく
   ターミナルモードを復元するのを保証する.

 * ssh(1): Avoid busy-wait when ssh(1) is suspended during a password
   prompt.

   ssh(1): パスワードプロンプト表示中に ssh(1) が中断された場合の
   busy-wait を回避する.

 * ssh(1), sshd(8): Correctly report errors during sending of ext-
   info messages.

   ssh(1), sshd(8): ext-info メッセージを送る際に正しくエラーを
   レポートする.

 * sshd(8): fix NULL-deref crash if sshd(8) received an out-of-
   sequence NEWKEYS message.

   sshd(8): sshd(8) が シーケンスから外れた NEWKEYS メッセージを
   受け取った際に NULL を逆参照してクラッシュするのを修正する.

 * sshd(8): Correct list of supported signature algorithms sent in
   the server-sig-algs extension. bz#2547

   sshd(8): server-sig-algs 拡張で サポートされている署名
   アルゴリズムのリストを修正する. bz#2547

 * sshd(8): Fix sending ext_info message if privsep is disabled.

   sshd(8): 特権分離が無効な場合に ext_info メッセージの送信を修正する.

 * sshd(8): more strictly enforce the expected ordering of privilege
   separation monitor calls used for authentication and allow them
   only when their respective authentication methods are enabled
   in the configuration

   sshd(8): 認証に用いられる特権分離モニター呼出しの期待される順序を
   より厳密に強制する. これにより, モニター呼出しを設定で
   それぞれの認証法でのみ有効にできる.

 * sshd(8): Fix uninitialised optlen in getsockopt() call; harmless
   on Unix/BSD but potentially crashy on Cygwin.

   sshd(8): getsockopt() 呼出しで初期化していない optlen を修正する.
   Unix/BSD では無害だが, Cygwin ではクラッシュする可能性がある.

 * Fix false positive reports caused by explicit_bzero(3) not being
   recognised as a memory initialiser when compiled with
   -fsanitize-memory.

   -fsanitize-memory を付けてコンパイルされた場合に
   explicit_bzero(3) が メモリ初期化子を認識しないことに
   起因する false positive なレポートを修正する

 * sshd_config(5): Use 2001:db8::/32, the official IPv6 subnet for
   configuration examples.

   sshd_config(5): 2001:db8::/32 を用いる. 設定例のための
   公式な IPv6 サブネット

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

移植性

 * On environments configured with Turkish locales, fall back to the
   C/POSIX locale to avoid errors in configuration parsing caused by
   that locale's unique handling of the letters 'i' and 'I'. bz#2643

   Turkish ロケールで設定された環境で, ロケールな独特な文字 'i' と 'I'
   の扱いによる設定ファイルのパースエラーを回避するために C/POSIX ロケールに
   フォールバックする.

 * sftp-server(8), ssh-agent(1): Deny ptrace on OS X using
   ptrace(PT_DENY_ATTACH, ..)

   sftp-server(8), ssh-agent(1): ptrace(PT_DENY_ATTACH, ..) を用いて
   OS X 上で ptrace を無効にする

 * ssh(1), sshd(8): Unbreak AES-CTR ciphers on old (~0.9.8) OpenSSL.

   ssh(1), sshd(8): 古い (~0.9.8) OpenSSL の AES-CTR 暗号を直す

 * Fix compilation for libcrypto compiled without RIPEMD160 support.

   RIPEMD160 サポートなしでコンパイルされた libcrypto のコンパイルを修正する

 * contrib: Add a gnome-ssh-askpass3 with GTK+3 support. bz#2640

   contrib: GTK+3 サポートされた gnome-ssh-askpass3 を追加する. bz#2640

 * sshd(8): Improve PRNG reseeding across privilege separation and
   force libcrypto to obtain a high-quality seed before chroot or
   sandboxing.

   sshd(8): 特権分離越しのPRNG の再シードを改善し, chroot や サンドボックス化の前に
   高品質のシードを libcrypto が得るのを強制する.

 * All: Explicitly test for broken strnvis. NetBSD added an strnvis
   and unfortunately made it incompatible with the existing one in
   OpenBSD and Linux's libbsd (the former having existed for over ten
   years). Try to detect this mess, and assume the only safe option
   if we're cross compiling.

   すべて: 壊れた strnvis に対する明示的なテスト. NetBSD は strnvis を追加して
   不幸なことに, これは OpenBSD や Linux の libbsd の既存のものと非互換になっている
   (OpenBSDのものは 10年以上前から存在している). この混乱を検出しようと試み,
   クロスコンパイル時に唯一の安全な選択をとる.