Skip to content

Do we still need our fork of x/crypto/ssh?

I received this Go mailing list email:

Version v0.0.0-20220315160706-3147a52a75dd of golang.org/x/crypto/ssh
implements client authentication support for signature algorithms
based on SHA-2 for use with existing RSA keys.

Previously, a client would fail to authenticate with RSA keys to
servers that reject signature algorithms based on SHA-1. This includes
OpenSSH 8.8 by default and—starting today March 15, 2022—github.com
for recently uploaded keys.

We are providing this announcement as the error (“ssh: unable to
authenticate”) might otherwise be difficult to troubleshoot.

Version v0.0.0-20220314234659-1baeb1ce4c0b (included in the version
above) also fixes a potential security issue where an attacker could
cause a crash in a golang.org/x/crypto/ssh server under these
conditions:

The server has been configured by passing a Signer to ServerConfig.AddHostKey.

The Signer passed to AddHostKey does not also implement AlgorithmSigner.

The Signer passed to AddHostKey does return a key of type “ssh-rsa”
from its PublicKey method.

Servers that only use Signer implementations provided by the ssh
package are unaffected. This is CVE-2022-27191.