|
|
Subscribe / Log in / New account

OpenSSH 7.5 released

OpenSSH 7.5 is out. This is primarily a bug-fix release, but it also makes the use of privilege separation mandatory and removes support for building against old, unsupported OpenSSL releases.


From:  Damien Miller <djm-AT-openbsd.org>
To:  openssh-unix-dev-AT-mindrot.org
Subject:  Announce: OpenSSH 7.5 released
Date:  Mon, 20 Mar 2017 07:31:35 -0600 (MDT)
Message-ID:  <aca826c22adc3f94@openbsd.org>

OpenSSH 7.5 has just been released. It will be available from the
mirrors listed at http://www.openssh.com/ shortly.

OpenSSH is a 100% complete SSH protocol 2.0 implementation and
includes sftp client and server support. OpenSSH also includes
transitional support for the legacy SSH 1.3 and 1.5 protocols
that may be enabled at compile-time.

Once again, we would like to thank the OpenSSH community for their
continued support of the project, especially those who contributed
code or patches, reported bugs, tested snapshots or donated to the
project. More information on donations may be found at:
http://www.openssh.com/donations.html

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

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

 * In the next major release (expected June-August), removing remaining
   support for the SSH v.1 protocol (currently client-only and compile-
   time disabled).

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

 * In the same release, removing the remaining CBC ciphers from being
   offered by default in the client (These have not been offered in
   sshd by default for several years).

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

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 deprecates the sshd_config UsePrivilegeSeparation
   option, thereby making privilege separation mandatory. Privilege
   separation has been on by default for almost 15 years and
   sandboxing has been on by default for almost the last five.

 * The format of several log messages emitted by the packet code has
   changed to include additional information about the user and
   their authentication state. Software that monitors ssh/sshd logs
   may need to account for these changes. For example:

   Connection closed by user x 1.1.1.1 port 1234 [preauth]
   Connection closed by authenticating user x 10.1.1.1 port 1234 [preauth]
   Connection closed by invalid user x 1.1.1.1 port 1234 [preauth]

   Affected messages include connection closure, timeout, remote
   disconnection, negotiation failure and some other fatal messages
   generated by the packet code.

 * [Portable OpenSSH only] This version removes support for building
   against OpenSSL versions prior to 1.0.1. OpenSSL stopped supporting
   versions prior to 1.0.1 over 12 months ago (i.e. they no longer
   receive fixes for security bugs).

Changes since OpenSSH 7.4
=========================

This is a bugfix release.

Security
--------

 * ssh(1), sshd(8): Fix weakness in CBC padding oracle countermeasures
   that allowed a variant of the attack fixed in OpenSSH 7.3 to proceed.
   Note that the OpenSSH client disables CBC ciphers by default, sshd
   offers them as lowest-preference options and will remove them by
   default entriely in the next release. Reported by Jean Paul
   Degabriele, Kenny Paterson, Martin Albrecht and Torben Hansen of
   Royal Holloway, University of London.

 * sftp-client(1): [portable OpenSSH only] On Cygwin, a client making
   a recursive file transfer could be maniuplated by a hostile server to
   perform a path-traversal attack. creating or modifying files outside
   of the intended target directory. Reported by Jann Horn of Google
   Project Zero.

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

 * ssh(1), sshd(8): Support "=-" syntax to easily remove methods from
   algorithm lists, e.g. Ciphers=-*cbc. bz#2671

Bugfixes
--------

 * sshd(1): Fix NULL dereference crash when key exchange start
   messages are sent out of sequence.

 * ssh(1), sshd(8): Allow form-feed characters to appear in
   configuration files.
 
 * sshd(8): Fix regression in OpenSSH 7.4 support for the
   server-sig-algs extension, where SHA2 RSA signature methods were
   not being correctly advertised. bz#2680

 * ssh(1), ssh-keygen(1): Fix a number of case-sensitivity bugs in
   known_hosts processing. bz#2591 bz#2685

 * ssh(1): Allow ssh to use certificates accompanied by a private key
   file but no corresponding plain *.pub public key. bz#2617

 * ssh(1): When updating hostkeys using the UpdateHostKeys option,
   accept RSA keys if HostkeyAlgorithms contains any RSA keytype.
   Previously, ssh could ignore RSA keys when only the ssh-rsa-sha2-*
   methods were enabled in HostkeyAlgorithms and not the old ssh-rsa
   method. bz#2650
    
 * ssh(1): Detect and report excessively long configuration file
   lines. bz#2651

 * Merge a number of fixes found by Coverity and reported via Redhat
   and FreeBSD. Includes fixes for some memory and file descriptor
   leaks in error paths. bz#2687
    
 * ssh-keyscan(1): Correctly hash hosts with a port number. bz#2692

 * ssh(1), sshd(8): When logging long messages to stderr, don't truncate
   "\r\n" if the length of the message exceeds the buffer. bz#2688

 * ssh(1): Fully quote [host]:port in generated ProxyJump/-J command-
   line; avoid confusion over IPv6 addresses and shells that treat
   square bracket characters specially.
    
 * ssh-keygen(1): Fix corruption of known_hosts when running
   "ssh-keygen -H" on a known_hosts containing already-hashed entries.

 * Fix various fallout and sharp edges caused by removing SSH protocol
   1 support from the server, including the server banner string being
   incorrectly terminated with only \n (instead of \r\n), confusing
   error messages from ssh-keyscan bz#2583 and a segfault in sshd
   if protocol v.1 was enabled for the client and sshd_config
   contained references to legacy keys bz#2686.

 * ssh(1), sshd(8): Free fd_set on connection timeout. bz#2683

 * sshd(8): Fix Unix domain socket forwarding for root (regression in
   OpenSSH 7.4).
    
 * sftp(1): Fix division by zero crash in "df" output when server
   returns zero total filesystem blocks/inodes.
 
 * ssh(1), ssh-add(1), ssh-keygen(1), sshd(8): Translate OpenSSL errors
   encountered during key loading to more meaningful error codes.
   bz#2522 bz#2523

 * ssh-keygen(1): Sanitise escape sequences in key comments sent to
   printf but preserve valid UTF-8 when the locale supports it;
   bz#2520

 * ssh(1), sshd(8): Return reason for port forwarding failures where
   feasible rather than always "administratively prohibited". bz#2674

 * sshd(8): Fix deadlock when AuthorizedKeysCommand or
   AuthorizedPrincipalsCommand produces a lot of output and a key is
   matched early. bz#2655

 * Regression tests: several reliability fixes. bz#2654 bz#2658 bz#2659
    
 * ssh(1): Fix typo in ~C error message for bad port forward
   cancellation. bz#2672

 * ssh(1): Show a useful error message when included config files
   can't be opened; bz#2653

 * sshd(8): Make sshd set GSSAPIStrictAcceptorCheck=yes as the manual page
   (previously incorrectly) advertised. bz#2637

 * sshd_config(5): Repair accidentally-deleted mention of %k token
   in AuthorizedKeysCommand; bz#2656

 * sshd(8): Remove vestiges of previously removed LOGIN_PROGRAM; bz#2665

 * ssh-agent(1): Relax PKCS#11 whitelist to include libexec and
   common 32-bit compatibility library directories.

 * sftp-client(1): Fix non-exploitable integer overflow in SSH2_FXP_NAME
   response handling.

 * ssh-agent(1): Fix regression in 7.4 of deleting PKCS#11-hosted
   keys. It was not possible to delete them except by specifying
   their full physical path. bz#2682

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

 * sshd(8): Avoid sandbox errors for Linux S390 systems using an ICA
   crypto coprocessor.

 * sshd(8): Fix non-exploitable weakness in seccomp-bpf sandbox arg
   inspection.

 * ssh(1): Fix X11 forwarding on OSX where X11 was being started by
   launchd. bz#2341

 * ssh-keygen(1), ssh(1), sftp(1): Fix output truncation for various that
   contain non-printable characters where the codeset in use is ASCII.

 * build: Fix builds that attempt to link a kerberised libldns. bz#2603

 * build: Fix compilation problems caused by unconditionally defining
   _XOPEN_SOURCE in wide character detection.

 * sshd(8): Fix sandbox violations for clock_gettime VSDO syscall
   fallback on some Linux/X32 kernels. bz#2142

Checksums:
==========

 - SHA1 (openssh-7.5.tar.gz) = 81384df377e38551f7659a4c250383d0bbd25341
 - SHA1 (openssh-7.5p1.tar.gz) = 5e8f185d00afb4f4f89801e9b0f8b9cee9d87ebd

 - SHA256 (openssh-7.5.tar.gz) = Gmk8jOdGdKa7NixUN5J+bTMfeum5Vx8Nv+leAdQNq3U=
 - SHA256 (openssh-7.5p1.tar.gz) = mEbjxfq58FR0ALTSwBeZL5FCIrP9H47ubH3GvF5Z+fA=

Please note that the SHA256 signatures are base64 encoded and not
hexadecimal (which is the default for most checksum tools). The PGP
key used to sign the releases is available as RELEASE_KEY.asc from
the mirror sites.

Reporting Bugs:
===============

- Please read http://www.openssh.com/report.html
  Security bugs should be reported directly to openssh@openssh.com

OpenSSH is brought to you by Markus Friedl, Niels Provos, Theo de
Raadt, Kevin Steves, Damien Miller, Darren Tucker, Jason McIntyre,
Tim Rice and Ben Lindstrom.


(Log in to post comments)

OpenSSH 7.5 released

Posted Mar 20, 2017 18:06 UTC (Mon) by ibukanov (subscriber, #3942) [Link]

Removal of UsePrivilegeSeparation=no makes sshd from OpenSSH unsuitable for some container applications when sshd itself runs as non-root in a very restricted container to provide, for example, authenticated file access.

I guess time to switch to other sshd implementations for those cases.

OpenSSH 7.5 released

Posted Mar 20, 2017 19:50 UTC (Mon) by pizza (subscriber, #46) [Link]

Removing _client-side_ support for old ciphers and key sizes is a problem too, because many of us don't have the luxury of choosing what we connect to.

OpenSSH 7.5 released

Posted Mar 20, 2017 20:21 UTC (Mon) by josh (subscriber, #17465) [Link]

Have you reported the devices that don't support new ciphers to the OpenSSH folks? They indicated in the past that they wanted to hear from people who had to work with such devices, and that they planned to gauge the timelines for client-side deprecation based on whether they hear from people who need such ciphers client-side.

OpenSSH 7.5 released

Posted Mar 20, 2017 20:40 UTC (Mon) by tialaramex (subscriber, #21167) [Link]

I'd be comfortable seeing this removed from default configuration, but it isn't helpful to remove it altogether for the reason you gave.

If poor security choices can be negotiated (old cipher, old protocol version, small key size) ordinary users who have no reason to suspect they're vulnerable may be vulnerable without knowing it. For example a 768-bit RSA key is definitely within the reach of a powerful attacker, and you might be using one somewhere without even knowing it - you have a modern SSH so you feel safe, but you are not.

So it makes sense to identify weak choices and refuse them by default.

But there ought to be a way to configure it back in until it's seriously obsolete. Done well (ie without the various intermediaries fiddling with the settings) the end user has the opportunity to switch off these defences and take a calculated risk, even perhaps doing so only for one particular connection. I have SSH public keys disabled for a particular remote system for example because apparently their implementation doesn't understand the concept of "negotiation" and having offered SSH public keys as a means of authenticating, if it actually receives one it ignores subsequent correct authentications... I have no doubt that this is presented as a "security feature" as that seems to be to preferred designation for gross failures of standards compliance that interfere with interoperability these days when selling "enterprise" (ie low quality high price tag) software.

OpenSSH 7.5 released

Posted Mar 20, 2017 20:22 UTC (Mon) by josh (subscriber, #17465) [Link]

We really need a good implementation of sshd (and sftp) in library form, not just as a standalone server.

OpenSSH 7.5 released

Posted Mar 20, 2017 20:48 UTC (Mon) by ibukanov (subscriber, #3942) [Link]

There are already sshd and sftp libraries if one can use Golang. For C/C++ I do not expect to seen soon a library that can in few lines of code extends the app with ssh server functionality. Any such library will be inevitably tightly coupled with an event loop and there is no standard event loop for C/C++.

OpenSSH 7.5 released

Posted Mar 20, 2017 20:59 UTC (Mon) by josh (subscriber, #17465) [Link]

I've also seen Thrussh (https://pijul.org/thrussh/) for this, as well as the Java implementation used in Gerrit. I don't know much about their quality or completeness, though.

OpenSSH 7.5 released

Posted Mar 21, 2017 6:03 UTC (Tue) by njs (guest, #40338) [Link]

In Python there's twisted.conch and paramiko. I know at least at some point heroku was running all their git sessions through twisted.conch, so it's relatively serious.

OpenSSH 7.5 released

Posted Mar 21, 2017 10:16 UTC (Tue) by NAR (guest, #1313) [Link]

There's an ssh application Erlang/OTP.

OpenSSH 7.5 released

Posted Mar 24, 2017 0:25 UTC (Fri) by flussence (subscriber, #85566) [Link]

I hear similar complaints about GPG. The official stance AFAICT seems to be that its weird interactions with stdio *are* the library API.

OpenSSH 7.5 released

Posted Mar 24, 2017 17:27 UTC (Fri) by lsl (guest, #86508) [Link]

And as long as that interface is kept stable and doesn't exceed a certain threshold of complexity, this is totally fine. Calling out to ssh(1) also has the benefit of honoring local user configuration by default which is really nice.

OpenSSH 7.5 released

Posted Mar 29, 2017 14:03 UTC (Wed) by nix (subscriber, #2304) [Link]

sftp is just a filter (on both sides). Literally: stdin-to-stdout. sshd invokes the server side via the subsystem mechanism, but it is just a filter.

There is thus no need for another implementation (unless you want to extend or intercept it, of course, perhaps to provide sftp of something other than the filesystem): any library sshd implementation can invoke sftp-server in the same way sshd does.

OpenSSH 7.5 released

Posted Mar 21, 2017 10:18 UTC (Tue) by joib (subscriber, #8541) [Link]

From the horses mouth when a similar complaint was aired after the openssh 7.4 release: https://news.ycombinator.com/item?id=13213174

OpenSSH 7.5 released

Posted Mar 21, 2017 10:48 UTC (Tue) by ibukanov (subscriber, #3942) [Link]

The things is that to use privilege separation as implemented in sshd the daemon itself has to have elevated privileges. In container applications one may want to avoid that. Surely it increases a chance of exploiting a ssh bug, but it also decreases a chance of container escape, a much greater worry.

OpenSSH 7.5 released

Posted Aug 7, 2017 5:17 UTC (Mon) by akostadinov (guest, #48510) [Link]

https://lists.mindrot.org/pipermail/openssh-unix-dev/2017...
https://lists.mindrot.org/pipermail/openssh-unix-dev/2017...

It looks like container use cases and running as unprivileged user will continue to be supported going forward. Just not as a single process with the old option.


Copyright © 2017, Eklektix, Inc.
Comments and public postings are copyrighted by their creators.
Linux is a registered trademark of Linus Torvalds