Skip to main content

golang.org/x/crypto EUVDEUVD-2026-31393

| CVE-2026-39835 MEDIUM
Improper Certificate Validation (CWE-295)
2026-05-22 Go GHSA-78mq-xcr3-xm33
5.3
CVSS 3.1 · Vendor: Go
View

Attack ChainAIDerived

Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain

  1. Access
    Connect to target SSH server unauthenticated
  2. Delivery
    Present certificate during SSH handshake
  3. Exploit
    CertChecker invokes nil IsUserAuthority or IsHostAuthority callback
  4. Execution
    Go runtime triggers panic
  5. Impact
    SSH server process crashes

Vulnerability Assessment

Weakness
CWE
OWASP Top 10:2025
A07:2025 - Authentication Failures
ASVS 5.0
V12 - Secure Communication Certificate validation
Exploitation Conditions

The vulnerability requires two specific conditions: the SSH server application must use CertChecker as the ssh.ServerConfig.PublicKeyCallback, AND both IsUserAuthority and IsHostAuthority fields must be left uninitialized (nil) at the time a client presents a certificate. Applications that set either callback are not vulnerable. Per the CVSS vector (AV:N/AC:L/PR:N/UI:N), no authentication is required - an unauthenticated client presenting any certificate during the SSH handshake is sufficient to trigger the panic. What limits exploitation is the specific programming error in the consuming application: only servers where a developer used CertChecker without configuring authority callbacks are affected. This is a misconfiguration-dependent vulnerability rather than a default-insecure one, which aligns with the SSVC 'Automatable: no' rating and the low EPSS score, as mass scanning would need to identify this specific deployment pattern.

Impact

The CVSS 3.1 base score of 5.3 (Medium) reflects a network-reachable, low-complexity attack requiring no privileges or user interaction (AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:L), but impact is bounded to availability. EPSS at 0.01% (1st percentile) and SSVC signals of Exploitation: none, Automatable: no, and Technical Impact: partial collectively indicate very low real-world risk at this time. The SSVC 'Automatable: no' designation merits scrutiny: given AV:N/AC:L/PR:N, the mechanics are trivially automatable; this rating likely reflects that only a specific misconfiguration (nil authority callbacks) is exploitable, meaning the vulnerable population is narrow rather than the attack itself being complex. A notable conflict exists in the source data: the 'Information Disclosure' tag assigned to this CVE is inconsistent with CVSS impact scores of C:N/I:N - this discrepancy is unresolved and may relate to panic stack traces exposing sensitive path or memory data in server logs, but cannot be confirmed from available data alone. Organizations using CertChecker without setting authority callbacks face a genuine DoS risk; the narrow prerequisite limits real-world blast radius.

Exploit ScenarioDerived

An unauthenticated attacker connects to a target SSH server that uses CertChecker as its public key callback without setting IsUserAuthority or IsHostAuthority. Using any standard SSH client capable of presenting a certificate during the handshake (e.g., ssh with a certificate-signed key), the attacker triggers the nil function pointer invocation, causing the server process to panic and the SSH service to crash. No public exploit code has been identified, but the attack requires only commodity SSH tooling and knowledge of the misconfiguration.

This Month Plan within 30 days. Why: MEDIUM severity (CVSS 4.0-6.9).
Patch available 0.0% exploitation probability (EPSS)

Get an e-mail when this CVE is exploited, patched or re-scored. Free account.

Alert me

AnalysisAIv1 – May 28, 2026

Unauthenticated remote clients can crash SSH servers built with golang.org/x/crypto/ssh by presenting a certificate during the handshake when CertChecker is used as a public key callback without initializing IsUserAuthority or IsHostAuthority. All versions prior to 0.52.0 are affected; the nil function pointer dereference causes a Go runtime panic that terminates the SSH service. No public exploit code has been identified and EPSS places exploitation probability at the 1st percentile (0.01%), though the attack requires no authentication and low complexity per the CVSS vector.

RemediationAI

Upgrade golang.org/x/crypto to version 0.52.0 or later, where CertChecker returns a proper error instead of panicking when authority callbacks are nil; this is the vendor-released patch confirmed by EUVD-2026-31393 and the Go announcement at https://groups.google.com/g/golang-announce/c/a082jnz-LvI. Any binary that vendors golang.org/x/crypto/ssh must be rebuilt and redeployed after the dependency upgrade, as the fix is compiled in. For teams unable to upgrade immediately, an effective compensating control is to explicitly set both IsUserAuthority and IsHostAuthority on every CertChecker instance - even to a function that returns false - before passing it as a callback; this eliminates the nil dereference with no service disruption, though it may silently reject legitimate certificate-based authentication depending on the false-returning stub. Alternatively, replace CertChecker with a fully custom PublicKeyCallback implementation. Avoid relying on recovery middleware as a long-term mitigation, as unhandled panics in other paths may still terminate the process.

Affected VersionsENISA

golang.org/x/crypto/ssh 0 <0.52.0

Affected Packages

go golang.org/x/crypto fix: 0.52.0
go golang.org/x/crypto/ssh fix: 0.52.0
euvd golang_org_x_crypto_ssh fix: 0.52.0

Source: OSV (Open Source Vulnerabilities)

Affects your stack

Affects 3 packages in go, euvd

Checking this CVE against your own stacks and servers is part of the Basic plan and up.

Technical ContextAI · show details

The Go extended cryptography module golang.org/x/crypto/ssh provides SSH server and client primitives. CertChecker is a helper struct designed to be supplied as the PublicKeyCallback in ssh.ServerConfig to validate client certificates during the SSH handshake. It exposes two function-typed fields - IsUserAuthority and IsHostAuthority - intended as callbacks for verifying certificate signing authorities. CWE-295 (Improper Certificate Validation) captures the root cause: when both callbacks are left unset (nil), CertChecker contains no guard against invoking a nil function pointer upon encountering a certificate from a connecting client. The Go runtime converts a nil function call into a panic, which propagates and crashes the serving goroutine or process unless explicitly recovered. The CPE cpe:2.3:a:golang.org/x/crypto:golang.org/x/crypto/ssh:*:*:*:*:*:*:*:* covers all affected versions. The fix, tracked in Go CL 781660, converts the panic into a returned error, restoring safe failure behavior.

Know when Golang Org X Crypto Ssh gets its next vulnerability

  • Watch products and get an email when something new is published
  • Check this CVE against your own stack and servers
  • Exploit and PoC references, threat intelligence from 22 sources

No credit card · 7-day full trial

Severity by source

Vendor (Go) PRIMARY 5.3 MEDIUM
AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:L
SUSE MEDIUM
Red Hat 7.5 HIGH

Primary rating from Vendor (Go).

CVSS VectorVendor: Go

Attack Vector
Network
Attack Complexity
Low
Privileges Required
None
User Interaction
None
Scope
Unchanged
Confidentiality
None
Integrity
None
Availability
Low

Lifecycle Timeline

3
CVSS changed
May 28, 2026 - 15:07 NVD
5.3 (None) 5.3 (MEDIUM)
Patch available
May 22, 2026 - 04:31 EUVD
CVE Published
May 22, 2026 - 02:31 nvd
UNKNOWN (no severity yet)

DescriptionCVE.org

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.

Threat Intelligence Overview

EPSS Score
0.0%
Top 99% exploitable
Threat Intel
1
1 sources
Exploit
POC
Public exploit code exists
Social Media
1
Sightings
Data Quality
8 sources
Confidence: High
EUVD NVD CVE.org EPSS Vulnrichment GHSA MSRC Vendor CIRCL GitHub VulDB

How this decision was reached

The engine reads each signal below and applies a fixed list of rules from top to bottom. The first rule that matches sets the recommended action – like a statement, every line is shown.

SignalValue
Severity MEDIUM
CISA KEV No
Public POC Yes
EPSS 0.0%
Patch available Yes
Active threat No
Deciding rule
MEDIUM severity (CVSS 4.0-6.9)
What every action level means
Emergency Immediate action required. Criteria: CRITICAL + in CISA KEV (actively exploited) without patch, OR CRITICAL + EPSS > 30% without patch, OR CRITICAL + active threat signals without patch.
Act Now Prioritize within 24-48h. Criteria: in KEV with patch available, OR CRITICAL + public POC, OR HIGH + EPSS > 10%, OR CRITICAL + active threat, OR any CRITICAL severity.
This Week Schedule remediation this week. Criteria: HIGH severity (CVSS 7.0-8.9). Patch within normal change window.
This Month Plan within 30 days. Criteria: MEDIUM severity (CVSS 4.0-6.9), lower exploitation probability. Include in regular patch cycle.
Monitor Track and reassess. Criteria: LOW severity (CVSS 0.1-3.9), minimal exploitation risk. No immediate action needed.

SSVC AssessmentENISA

SSVC Decision· derived
Scheduled
Exploitation
None
System Exposure· derived
Open
Automatable
No
Human Impact· derived
Medium
Technical Impact
Partial

Priority Score

46
Low Medium High Critical
KEV: 0
EPSS: 0
CVSS: +26
PoC: +20
Weaponized: 0
Threat intel: 0
Gov advisory: 0

Attack Technique

Information disclosure occurs when an application unintentionally exposes sensitive data that aids attackers in reconnaissance or directly compromises security.

Vendor StatusVendor

SUSE

Severity: Medium
Product Status
openSUSE Leap 16.0 Fixed
openSUSE Tumbleweed Fixed
SLES15-SP6-CHOST-BYOS-GCE Fixed
SLES15-SP7-CHOST-BYOS-GCE Fixed
SUSE Linux Enterprise Desktop 15 SP7 Fixed

References

Advisories & patches
ADVISORY https://access.redhat.com/errata/RHSA-2026:37276 ADVISORY https://vuldb.com/vuln/365129 REF https://access.redhat.com/errata/RHSA-2026:26546 REF https://access.redhat.com/errata/RHSA-2026:26547 REF https://access.redhat.com/errata/RHSA-2026:36199 REF https://access.redhat.com/errata/RHSA-2026:36207 REF https://access.redhat.com/errata/RHSA-2026:36319 REF https://access.redhat.com/errata/RHSA-2026:36625 REF https://access.redhat.com/errata/RHSA-2026:36648 REF https://access.redhat.com/errata/RHSA-2026:36651 REF https://access.redhat.com/errata/RHSA-2026:36796 REF https://access.redhat.com/errata/RHSA-2026:36797 REF https://access.redhat.com/errata/RHSA-2026:37072 REF https://access.redhat.com/errata/RHSA-2026:37123 REF https://access.redhat.com/errata/RHSA-2026:37268 REF https://access.redhat.com/errata/RHSA-2026:37271 REF https://access.redhat.com/errata/RHSA-2026:37272 REF https://access.redhat.com/errata/RHSA-2026:37286 REF https://access.redhat.com/errata/RHSA-2026:37296 REF https://access.redhat.com/errata/RHSA-2026:37387 REF https://access.redhat.com/errata/RHSA-2026:37410 REF https://access.redhat.com/errata/RHSA-2026:38504 REF https://access.redhat.com/errata/RHSA-2026:40118 REF https://access.redhat.com/errata/RHSA-2026:40262 REF https://access.redhat.com/errata/RHSA-2026:40945 REF https://access.redhat.com/errata/RHSA-2026:40969 REF https://access.redhat.com/errata/RHSA-2026:40972 REF https://access.redhat.com/errata/RHSA-2026:40974 REF https://access.redhat.com/errata/RHSA-2026:41019 REF https://access.redhat.com/errata/RHSA-2026:41031 REF https://access.redhat.com/errata/RHSA-2026:41036 REF https://access.redhat.com/errata/RHSA-2026:41066 REF https://access.redhat.com/errata/RHSA-2026:42146 REF https://access.redhat.com/errata/RHSA-2026:42796 REF https://access.redhat.com/errata/RHSA-2026:43052 REF https://access.redhat.com/errata/RHSA-2026:43692 REF https://access.redhat.com/errata/RHSA-2026:46885 REF https://access.redhat.com/errata/RHSA-2026:47735 REF https://access.redhat.com/errata/RHSA-2026:47949 REF https://access.redhat.com/errata/RHSA-2026:48151 REF https://access.redhat.com/errata/RHSA-2026:51033 REF https://access.redhat.com/errata/RHSA-2026:51036 REF https://access.redhat.com/errata/RHSA-2026:51038 REF https://access.redhat.com/errata/RHSA-2026:52857 REF https://access.redhat.com/errata/RHSA-2026:52910 REF https://access.redhat.com/errata/RHSA-2026:54525 REF https://access.redhat.com/errata/RHSA-2026:57194 REF https://access.redhat.com/errata/RHSA-2026:59467 REF https://access.redhat.com/errata/RHSA-2026:59593 REF https://access.redhat.com/errata/RHSA-2026:60520 REF https://access.redhat.com/errata/RHSA-2026:62260 REF https://access.redhat.com/errata/RHSA-2026:65126 REF https://access.redhat.com/errata/RHSA-2026:66022 REF https://access.redhat.com/errata/RHSA-2026:66521 REF https://access.redhat.com/security/cve/CVE-2026-39835 REF https://bugzilla.redhat.com/show_bug.cgi?id=2480680 REF https://go.dev/cl/781660 REF https://go.dev/issue/79563 REF https://groups.google.com/g/golang-announce/c/a082jnz-LvI REF https://pkg.go.dev/vuln/GO-2026-5015 REF https://security.access.redhat.com/data/csaf/v2/vex/2026/cve-2026-39835.json

This site uses cookies essential for authentication and security. No tracking or analytics cookies are used. Privacy Policy