|
|
Subscribe / Log in / New account

OpenSSH 8.6 released

OpenSSH 8.6 is now available. The "ssh-rsa" signature scheme, which uses the SHA-1 hash algorithm, will be disabled by default in the near future. "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."


From:  Damien Miller <djm-AT-cvs.openbsd.org>
To:  lwn-AT-lwn.net
Subject:  Announce: OpenSSH 8.6 released
Date:  Sun, 18 Apr 2021 18:53:14 -0600
Message-ID:  <94b0350a0f8a1fac@cvs.openbsd.org>

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

OpenSSH is a 100% complete SSH protocol 2.0 implementation and
includes sftp client and server support.

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:
https://www.openssh.com/donations.html

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

It is now possible[1] to perform chosen-prefix attacks against the
SHA-1 algorithm for less than USD$50K.

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.

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.

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.

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.

 * The RFC8709 ssh-ed25519 signature algorithm. It has been supported
   in OpenSSH since release 6.5.

 * The RFC5656 ECDSA algorithms: ecdsa-sha2-nistp256/384/521. These
   have been supported by OpenSSH since release 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 -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.

OpenSSH recently enabled the UpdateHostKeys option by default to assist
the client by automatically migrating to better algorithms.

[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
========

 * sshd(8): OpenSSH 8.5 introduced the LogVerbose keyword. When this
   option was enabled with a set of patterns that activated logging
   in code that runs in the low-privilege sandboxed sshd process, the
   log messages were constructed in such a way that printf(3) format
   strings could effectively be specified the low-privilege code.

   An attacker who had sucessfully exploited the low-privilege
   process could use this to escape OpenSSH's sandboxing and attack
   the high-privilege process. Exploitation of this weakness is
   highly unlikely in practice as the LogVerbose option is not
   enabled by default and is typically only used for debugging. No
   vulnerabilities in the low-privilege process are currently known
   to exist.

   Thanks to Ilja Van Sprundel for reporting this bug.

Changes since OpenSSH 8.5
=========================

This release contains mostly bug fixes.

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

 * sftp-server(8): add a new limits@openssh.com protocol extension
   that allows a client to discover various server limits, including
   maximum packet size and maximum read/write length.

 * sftp(1): use the new limits@openssh.com extension (when available)
   to select better transfer lengths in the client.

 * sshd(8): Add ModuliFile keyword to sshd_config to specify the
   location of the "moduli" file containing the groups for DH-GEX.

 * unit tests: Add a TEST_SSH_ELAPSED_TIMES environment variable to
   enable printing of the elapsed time in seconds of each test.

Bugfixes
--------

 * ssh_config(5), sshd_config(5): sync CASignatureAlgorithms lists in
   manual pages with the current default. GHPR#174

 * ssh(1): ensure that pkcs11_del_provider() is called before exit.
   GHPR#234

 * ssh(1), sshd(8): fix problems in string->argv conversion. Multiple
   backslashes were not being dequoted correctly and quoted space in
   the middle of a string was being incorrectly split. GHPR#223

 * ssh(1): return non-zero exit status when killed by signal; bz#3281

 * sftp-server(8): increase maximum SSH2_FXP_READ to match the maximum
   packet size. Also handle zero-length reads that are not explicitly
   banned by the spec.

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

 * sshd(8): don't mistakenly exit on transient read errors on the
   network socket (e.g. EINTR, EAGAIN); bz3297

 * Create a dedicated contrib/gnome-ssk-askpass3.c source instead of
   building it from the same file as used for GNOME2. Use the GNOME3
   gdk_seat_grab() to manage keyboard/mouse/server grabs for better
   compatibility with Wayland.

 * Fix portability build errors bz3293 bz3292 bz3291 bz3278

 * sshd(8): soft-disallow the fstatat64 syscall in the Linux
   seccomp-bpf sandbox. bz3276

 * unit tests: enable autoopt and misc unit tests that were
   previously skipped

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

 - SHA1 (openssh-8.6.tar.gz) = a3e93347eed6296faaaceb221e8786391530fccb
 - SHA256 (openssh-8.6.tar.gz) = ihmgdEgKfCBRpC0qzdQRwYownrpBf+rsihvk4Rmim8M=

 - SHA1 (openssh-8.6p1.tar.gz) = 8f9f0c94317baeb97747d6258f3997b4542762c0
 - SHA256 (openssh-8.6p1.tar.gz) = w+bk2hYhdiyFDQO0fu0eSN/0zJYI3etUcgKiNN+O164=

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 from the mirror sites:
https://cdn.openbsd.org/pub/OpenBSD/OpenSSH/RELEASE_KEY.asc

Please note that the OpenPGP key used to sign releases has been
rotated for this release. The new key has been signed by the previous
key to provide continuity.

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

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


(Log in to post comments)

OpenSSH 8.6 released

Posted Apr 20, 2021 7:14 UTC (Tue) by wtarreau (subscriber, #51152) [Link]

The incessant switch between algorithms is a real pain. Initially we were all using RSA. Then we were told RSA was bad and that DSA had to be used instead. We all switched to DSA. Then DSA was deamed bad forcing many of us to turn back to RSA after facing connection issues on their machines, but with larger keys this time. Then ED25519 started to appear but is still not enabled on a wide number of already installed machines (typically the machines we have in our respective basements). Now RSA's dead again...

SSH is widely used to connect, but not only where extreme security is required, simply where you need to connect (i.e. the old server on your local network, where it replaced telnet+ftp). In such situations removing support for algorithms breaks the connectivity, makes backups fail, and causes lots of grief. I think that clients should not completely remove support for no-so-old algorithm but instead require an extra option like "--insecure" or something like this. Because clearly if I can't connect anymore to some of my old machines, I'll go back to telnet, which never broke accessibility in 40 years. And I do think that SSH is better than telnet, even with older keys that a neighbor could fake for $50k to intercept my connection on my local network just to send me a "you're pwned" banner when I connect...

OpenSSH 8.6 released

Posted Apr 20, 2021 7:39 UTC (Tue) by cjwatson (subscriber, #7322) [Link]

No, RSA is not dead. There is a warning (which has been in the OpenSSH release notes for several releases, so I don't know why LWN picked it for a pull quote) that a particular signature scheme used with RSA is deprecated, but RSA keys will still work just fine even after that scheme is eventually removed.

OpenSSH 8.6 released

Posted Apr 20, 2021 8:21 UTC (Tue) by Sesse (subscriber, #53779) [Link]

RSA keys yes, but that isn't the problem: SSHing to your switch, where you cannot change the sshd implementation, is. (Keys can, after all, be replaced pretty easily!) This is a huge pain, and has only been accelerating in the last decade.

Unable to negotiate with <ip> port 22: no matching key exchange method found. Their offer: diffie-hellman-group-exchange-sha1,diffie-hellman-group14-sha1

I sometimes keep a machine on oldstable or oldoldstable around, so that I can have an older ssh(1) binary to SSH to stuff with…

OpenSSH 8.6 released

Posted Apr 20, 2021 9:20 UTC (Tue) by dottedmag (subscriber, #18590) [Link]

ssh -oKexAlgorithms=diffie-hellman-group-exchange-sha1 oldbox?

OpenSSH 8.6 released

Posted Apr 20, 2021 9:32 UTC (Tue) by Sesse (subscriber, #53779) [Link]

Works for that case, yes, but not for all others. E.g. I have devices that only accept SSHv1. Terribly insecure, yes, but the real alternative is telnet.

OpenSSH 8.6 released

Posted Apr 20, 2021 10:38 UTC (Tue) by Cyberax (✭ supporter ✭, #52523) [Link]

Just build a 'crapssh' utility then, it's pretty easy to do that using old sources of OpenSSH.

OpenSSH 8.6 released

Posted Apr 20, 2021 8:41 UTC (Tue) by Vipketsh (guest, #134480) [Link]

A better example is some old(er) networking equipment, like a managed switch. These things are often disowned by their manufacturers so no hope to getting any update with more recent authentication schemes but the equipment works perfectly well for its intended function. I would be happy if they disabled rsa-ssh on the server and put it into some last-resort-fallback list on the client when negotiating the scheme.

It would be great if security people today would understand that security is a function of *three* things: Confidentiality, Integrity and *Availability*. Clearly availability is being reduced here for no gain in Integrity.

OpenSSH 8.6 released

Posted Apr 20, 2021 10:14 UTC (Tue) by hkario (subscriber, #94864) [Link]

> Clearly availability is being reduced here for no gain in Integrity.

That's your opinion, not shared by wider security community.

Look for SSH Downgrade Attacks to learn why.

OpenSSH 8.6 released

Posted Apr 20, 2021 10:43 UTC (Tue) by pizza (subscriber, #46) [Link]

> That's your opinion, not shared by wider security community.
> Look for SSH Downgrade Attacks to learn why.

Sure, and the net result of this "improved security" is "SSH downgrade to telnet"

Mission accomplished, I guess.

OpenSSH 8.6 released

Posted Apr 20, 2021 11:04 UTC (Tue) by hkario (subscriber, #94864) [Link]

First, count number of people that use SSH daily with modern ciphers and count how many people need to use long insecure protocols like SSHv1.

Second, you aren't secure with SSHv1, at least with telnet you're not lying to yourself that you are. So there's a chance that you'll do something about it. That is improved security: real, not apparent.

OpenSSH 8.6 released

Posted Apr 20, 2021 11:32 UTC (Tue) by pizza (subscriber, #46) [Link]

> That is improved security: real, not apparent.

What is "real, improved" over dropping the barrier of attack from $50K to $0?

At $50K, you're only going to be vulnerable to larger criminal enterprises and nation-states that are specifically going after _you_. But at $0 you're open to every script kiddie on the internet with a copy of nmap.

Your argument is equivalent to getting rid of the front doors on houses because they're easy to open.

OpenSSH 8.6 released

Posted Apr 20, 2021 11:40 UTC (Tue) by hkario (subscriber, #94864) [Link]

Read my reply again, you're arguing a straw man.

OpenSSH 8.6 released

Posted Apr 22, 2021 17:39 UTC (Thu) by jschrod (subscriber, #1646) [Link]

No, you don't understand him.

It seems that there are a lot of ssh use cases that you haven't experienced yet, especially in the network devices realm.

OpenSSH 8.6 released

Posted Apr 20, 2021 15:03 UTC (Tue) by foom (subscriber, #14868) [Link]

If you have a device that's so old it only runs sshv1 -- which presumably means it hasn't been updated in 20 years -- does it really matter what protocol you use to connect to it?

It's there any chance it isn't exploitable via some well known security vulnerabilities? Quite possibly even ones which have been nicely packaged into a one-click exploit toolkit, and a may be just as easy to "login" with as an ssh client...

OpenSSH 8.6 released

Posted Apr 20, 2021 14:03 UTC (Tue) by epa (subscriber, #39769) [Link]

I once patched ssh 1.x to add a 'none' cipher, sending data over the wire unencrypted. That helped get usable performance on a 16MHz 386SX. I'd much rather run ssh and sshd, even without encryption, than go back to telnet.

OpenSSH 8.6 released

Posted Apr 20, 2021 16:53 UTC (Tue) by Vipketsh (guest, #134480) [Link]

Disabling the weak algorithm on the server thwarts the downgrade attack, from what I understand (no expert though so feel free to correct me). It then doesn't make sense to disabled it on the client side.

OpenSSH 8.6 released

Posted Apr 20, 2021 12:21 UTC (Tue) by pabs (subscriber, #43278) [Link]

Do these switches not support standard Linux distros?

OpenSSH 8.6 released

Posted Apr 20, 2021 16:55 UTC (Tue) by floppus (guest, #137245) [Link]

For $WORK we needed an inexpensive router with high IPSec throughput, and the option we settled on was a Mikrotik box, which runs some form of Linux but the crypto offload hardware is proprietary.

Even when it comes to standard distros, though, dropbear added support for Ed25519 and RSA+SHA-2 only very recently, so those aren't yet supported in stable OpenWRT.

OpenSSH 8.6 released

Posted Apr 22, 2021 20:30 UTC (Thu) by Sesse (subscriber, #53779) [Link]

Why do you believe they are running Linux in the first place?

OpenSSH 8.6 released

Posted Apr 22, 2021 20:32 UTC (Thu) by pabs (subscriber, #43278) [Link]

I was asking about what they *can* run rather than what they ship with.

OpenSSH 8.6 released

Posted Apr 22, 2021 20:36 UTC (Thu) by Sesse (subscriber, #53779) [Link]

They can run firmware images signed by the vendor, using their proprietary OS, period. They can not run Linux, there is no effort underway to port Linux to them, the hardware (which is custom, highly nontrivial, and intertwined with the software) is not documented, and to be honest, I don't think I'd want Linux on them either.

OpenSSH 8.6 released

Posted Apr 22, 2021 21:00 UTC (Thu) by pabs (subscriber, #43278) [Link]

There are folks trying to change this, here are a few of the Debian derivatives I know about, I think they mostly do enterprise stuff though:

https://wiki.debian.org/Derivatives/Census/VyOS
https://wiki.debian.org/Derivatives/Census/DANOS
https://wiki.debian.org/Derivatives/Census/CumulusLinux
https://wiki.debian.org/Derivatives/Census/OpenNetworkLinux

OpenSSH 8.6 released

Posted Apr 20, 2021 13:32 UTC (Tue) by itvirta (guest, #49997) [Link]

Removing things from the enabled-by-default list doesn't prevent enabling them when needing to talk to ancient
equipment. It wasn't too long ago I used something like 'ssh -c3des' (or even 'ssh -1') to connect to some such
relic. Per-host settings for Ciphers, Protocol, KexAlgorithms and such in '.ssh/config' also help if you need to do
that often.

The problem is downgrades that can happen automatically, within the the default-enabled settings.
(And downgrading to telnet probably doesn't fit there.)

OpenSSH 8.6 released

Posted Apr 20, 2021 18:54 UTC (Tue) by lamikr (guest, #2289) [Link]

If I create the ca.key and pem file with OpenSSL 1.1.1k which I believe is the latest release by using typical command shown in many examples:

openssl req -new -x509 -keyout ca.key -out ca.pem -days 45 -config ./ca.cnf

and then check the cipher used with command:

openssl asn1parse -in ca.key

From the output I can see that the des is still used as a cipher:

64:d=4 hl=2 l= 8 prim: OBJECT :des-ede3-cbc

Shouldn't openssl use something more secure by default?

OpenSSH 8.6 released

Posted Apr 20, 2021 19:41 UTC (Tue) by tamiko (subscriber, #115350) [Link]

> Shouldn't openssl use something more secure by default?

It should. But this is entirely orthogonal to openssh changing it's default-enabled cipher set.

OpenSSH 8.6 released

Posted Apr 22, 2021 17:42 UTC (Thu) by jschrod (subscriber, #1646) [Link]

The topic here is complete removal, not removal from the enabled-by-default list.

OpenSSH 8.6 released

Posted Apr 22, 2021 10:30 UTC (Thu) by jezuch (subscriber, #52988) [Link]

Doing something once every couple of years does not strike me as "incessant", and moaning about this particular one strikes me as denying reality. The reality of security is that the attacks only get better and time is *not* your friend. Thus key rotation should be routine, not an inconvenient thing you're forced to by external events.

What is sad is that the designers of the SSH protocol were also denying this reality. Support for *automatic* key rotation and upgrade should have been designed into the protocol from the start. It is not, so everyone has to do it manually (or automating it themselves) and everyone suffers and security suffers even more. So, in the end, I don't really blame you for moaning.

Obviously I have a couple of decades of hindsight to benefit from so I guess it turns me into a smart-ass at this point :)

OpenSSH 8.6 released

Posted Apr 22, 2021 11:42 UTC (Thu) by pizza (subscriber, #46) [Link]

> Support for *automatic* key rotation and upgrade should have been designed into the protocol from the start.

Absolutely!

I'm in a situation where I have a gerrit instance using one of these these problematic host keys (generated back in 2011), mostly hit by tools (ie git) on systems I don't control. I can't replace that problematic key with a stronger one without requiring manual intervention on every single client that hits this thing. Bleh.

OpenSSH 8.6 released

Posted Apr 22, 2021 13:59 UTC (Thu) by grawity (subscriber, #80596) [Link]

I think that clients should not completely remove support for no-so-old algorithm but instead require an extra option like "--insecure" or something like this.

I somewhat agree with this, but, fortunately, OpenSSH isn't the only SSH client for Linux. PuTTY (specifically the 'plink' command) is actively maintained and has support for everything under the sun, from Ed448 to SUPDUP.


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