[security] Vulnerabilities in golang.org/x/crypto

405 views
Skip to first unread message

Neal Patel

unread,
May 21, 2026, 8:59:54 PM (21 hours ago) May 21
to golang-announce
Ahoy gophers,

We have tagged version v0.52.0 of golang.org/x/crypto in
order to address the following security issues:

ssh/agent: pathological inputs can lead to client panic

For certain crafted inputs, a `ed25519.PrivateKey` was
created by casting malformed wire bytes, leading to a
panic when used.

Thanks to NCC Group Cryptography Services, sponsored by Teleport for reporting this issue.

This is CVE-2026-46598 and Go issue https://go.dev/issue/79596.


ssh: byte arithmetic causes underflow and panic

An incorrectly placed cast from bytes to int
allowed for server-side panic in the AES-GCM
packet decoder for well-crafted inputs.

Thanks to Maciej Kawka for reporting this issue.

This is CVE-2026-46597 and Go issue https://go.dev/issue/79561.


ssh: bypass of certificate restrictions

When an SSH server authentication callback returned
PartialSuccessError with non-nil Permissions, those
permissions were silently discarded, potentially
dropping certificate restrictions such as force-command
after a second factor succeeded. Returning non-nil
Permissions with PartialSuccessError now results in a
connection error.

Thanks to NCC Group Cryptography Services, sponsored by Teleport for reporting this issue.

This is CVE-2026-39828 and Go issue https://go.dev/issue/79562.


ssh: server panic during CheckHostKey/Authenticate

SSH servers which use CertChecker as a public key
callback without setting IsUserAuthority or
IsHostAuthority could be caused to panic by a
client presenting a certificate. CertChecker now
returns an error instead of panicking when these
callbacks are nil.

Thanks to NCC Group Cryptography Services, sponsored by Teleport for reporting this issue.

This is CVE-2026-39835 and Go issue https://go.dev/issue/79563.


ssh/agent: key constraints not enforced

The in-memory keyring returned by NewKeyring() silently
accepted keys with the ConfirmBeforeUse constraint but
never enforced it. The key would sign without any
confirmation prompt, with no indication to the caller
that the constraint was not in effect. NewKeyring()
now returns an error when unsupported constraints are
requested.

Thanks to NCC Group Cryptography Services, sponsored by Teleport for reporting this issue.

This is CVE-2026-39833 and Go issue https://go.dev/issue/79436.


ssh/agent: agent constraints dropped when forwarding keys

When adding a key to a remote agent constraint extensions
such as restrict-des...@openssh.com were not
serialized in the request. Destination restrictions were
silently stripped when forwarding keys, allowing unrestricted
use of the key on the remote host. The client now serializes
all constraint extensions. Additionally, the in-memory keyring
returned by NewKeyring() now rejects keys with unsupported
constraint extensions instead of silently ignoring them.

Thanks to NCC Group Cryptography Services, sponsored by Teleport for reporting this issue.

This is CVE-2026-39832 and Go issue https://go.dev/issue/79435.


ssh: memory leak when rejecting channels can lead to DoS

An authenticated SSH client that repeatedly opened channels which
were rejected by the server caused unbounded memory growth, eventually
crashing the server process and affecting all connected users. Rejected
channels are now properly removed from the connection's internal state
and released for garbage collection.

Thanks to Ziyan Zhou for reporting this issue.

This is CVE-2026-39827 and Go issue https://go.dev/issue/35127.


ssh: client can cause server deadlock on unexpected responses

A malicious SSH peer could send unsolicited global request
responses to fill an internal buffer, blocking the connection's
read loop. The blocked goroutine could not be released by calling
Close(), resulting in a resource leak per connection. Unsolicited
global responses are now discarded.

Thanks to NCC Group Cryptography Services, sponsored by Teleport for reporting this issue.

This is CVE-2026-39830 and Go issue https://go.dev/issue/79564.


ssh: pathological RSA/DSA parameters may cause DoS

The RSA and DSA public key parsers did not enforce size
limits on key parameters. A crafted public key with an
excessively large modulus or DSA parameter could cause
several minutes of CPU consumption during signature
verification. This could be triggered by unauthenticated
clients during public key authentication. RSA moduli are
now limited to 8192 bits, and DSA parameters are validated
per FIPS 186-2.

Thanks to NCC Group Cryptography Services, sponsored by Teleport for reporting this issue.

This is CVE-2026-39829 and Go issue https://go.dev/issue/79565.


ssh: bypass of FIDO/U2F security keys physical interaction

The Verify() method for FIDO/U2F security key types
(sk-ecdsa-sh...@openssh.com, sk-ssh-...@openssh.com)
did not check the User Presence flag. Signatures generated
without physical touch were accepted, allowing unattended use of
a hardware security key. To restore the previous behavior, return
a "no-touch-required" extension in Permissions.Extensions from
PublicKeyCallback.

Thanks to NCC Group Cryptography Services, sponsored by Teleport for reporting this issue.

This is CVE-2026-39831 and Go issue https://go.dev/issue/79566.


ssh: infinite loop on large channel writes

When writing data larger than 4GB in a single Write
call on an SSH channel, an integer overflow in the
internal payload size calculation caused the write
loop to spin indefinitely, sending empty packets
without making progress. The size comparison now
uses int64 to prevent truncation.

Thanks to NCC Group Cryptography Services, sponsored by Teleport for reporting this issue.

This is CVE-2026-39834 and Go issue https://go.dev/issue/79567.


ssh/knownhosts: auth bypass via unenforced @revoked status

Previously, a revoked `SignatureKey` belonging to a CA
was not correctly checked for revocation. Now, both the
`key` and `key.SignatureKey` are checked for @revoked.

This is CVE-2026-42508 and Go issue https://go.dev/issue/79568.


ssh: VerifiedPublicKeyCallback permissions skip enforcement

Previously, CVE-2024-45337 fixed an authorization bypass
for misused ssh server configurations; if any other type
of callback is passed other than public key, then the
source-address validation would be skipped.

This is CVE-2026-46595 and Go issue https://go.dev/issue/79570.


Cheers,
Go Security Team
Reply all
Reply to author
Forward
0 new messages