Invoking bypass of certificate restrictions in golang.org/x/crypto/ssh
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.
- BDU:2026-15464
- GHSA-45gg-vh54-h5m9
- GO-2026-5014
- openSUSE-SU-2026:10856-1
- openSUSE-SU-2026:10949-1
- openSUSE-SU-2026:10966-1
- openSUSE-SU-2026:11305-1
- openSUSE-SU-2026:11314-1
- openSUSE-SU-2026:11514-1
- openSUSE-SU-2026:11520-1
- openSUSE-SU-2026:20956-1
- openSUSE-SU-2026:21069-1
- openSUSE-SU-2026:21079-1
- openSUSE-SU-2026:21084-1
- openSUSE-SU-2026:21120-1
- openSUSE-SU-2026:21210-1
- openSUSE-SU-2026:21244-1
- openSUSE-SU-2026:21251-1
- openSUSE-SU-2026:21281-1
- openSUSE-SU-2026:21436-1
- Published
- May 22, 2026
- Updated
- Sep 18, 2026
- EPSS
- 0.5% · 43th percentile
- CWE
- CWE-295
Sign in to follow · You’ll be notified if a followed record enters KEV, gets an exploit or is updated.
Report tools
Action score
25
Monitor
Low priority for now.
- CVSS
- 25 / 40 · 6.3 / 10
- CISA KEV
- 0 / 30 · Not listed
- EPSS
- 0 / 30 · 0.5%
CISA SSVC decision
- Exploitation
- none
- Automatable
- no
- Technical impact
- partial
Vulnrichment: CISA's decision-tree inputs.
Affected systems
| Vendor | Product | CPE |
|---|---|---|
| golang | crypto | cpe:2.3:a:golang:crypto |
Affected versions
NVD version ranges (for catalog products). Add the product to your stack with a version and matching uses these.
- golang cryptobefore 0.52.0
Versions reported by the vendor
Affected version ranges reported by the assigning authority (Go). Independent of NVD's CPE analysis and usually ahead of it.
golang.org/x/crypto golang.org/x/crypto/ssh
- before 0.52.0affected · semver
Package-level exposure
OSV and GitHub Advisory data: ecosystem, package and range. SBOM matching uses this table.
| Ecosystem | Package | Affected range | Fix |
|---|---|---|---|
| Debian:12 | golang-go.crypto | all versions | — |
| Debian:14 | golang-go.crypto | before 1:0.52.0-1 | 1:0.52.0-1 |
| Go | golang.org/x/crypto | before 0.52.0 | 0.52.0 |
| openSUSE:Leap 16.0 | alloy | before 1.17.0-160000.1.1 | 1.17.0-160000.1.1 |
| openSUSE:Leap 16.0 | amazon-ssm-agent | before 3.3.4624.0-160000.1.1 | 3.3.4624.0-160000.1.1 |
| openSUSE:Leap 16.0 | cloudflared | before 2026.9.1-bp160.1.1 | 2026.9.1-bp160.1.1 |
| openSUSE:Leap 16.0 | containerized-data-importer1.65 | before 1.65.0-160000.3.1 | 1.65.0-160000.3.1 |
| openSUSE:Leap 16.0 | cosign | before 3.1.1-160000.1.1 | 3.1.1-160000.1.1 |
| openSUSE:Leap 16.0 | distribution | before 3.1.1-160000.1.1 | 3.1.1-160000.1.1 |
| openSUSE:Leap 16.0 | glab | before 1.114.0-bp160.1.1 | 1.114.0-bp160.1.1 |
| openSUSE:Leap 16.0 | google-guest-agent | before 20260529.00-160000.1.1 | 20260529.00-160000.1.1 |
| openSUSE:Leap 16.0 | google-osconfig-agent | before 20260615.01-160000.1.2 | 20260615.01-160000.1.2 |
| openSUSE:Leap 16.0 | kubevirt1.8 | before 1.8.4-160000.1.1 | 1.8.4-160000.1.1 |
| openSUSE:Leap 16.0 | mcphost | before 0.34.0-160000.2.1 | 0.34.0-160000.2.1 |
| openSUSE:Leap 16.0 | podman | before 5.4.2-160000.5.1 | 5.4.2-160000.5.1 |
| openSUSE:Leap 16.0 | rclone | before 1.74.4-bp160.1.1 | 1.74.4-bp160.1.1 |
| openSUSE:Leap 16.0 | trivy | before 0.71.0-160000.1.1 | 0.71.0-160000.1.1 |
| openSUSE:Tumbleweed | amazon-ssm-agent | before 3.3.4624.0-2.1 | 3.3.4624.0-2.1 |
| openSUSE:Tumbleweed | containerized-data-importer1.65 | before 1.65.0-2.1 | 1.65.0-2.1 |
| openSUSE:Tumbleweed | containerized-data-importer1.66 | before 1.66.0-1.1 | 1.66.0-1.1 |
| openSUSE:Tumbleweed | git-bug | before 0.10.1-5.1 | 0.10.1-5.1 |
| openSUSE:Tumbleweed | kubevirt1.8 | before 1.8.4-2.1 | 1.8.4-2.1 |
| openSUSE:Tumbleweed | kubevirt1.9 | before 1.9.0-1.1 | 1.9.0-1.1 |
| openSUSE:Tumbleweed | rclone | before 1.74.2-1.1 | 1.74.2-1.1 |
+49
Same product
golang: all recordsOther highest-scoring records for the same primary product.
- CVE-2026-46595Invoking VerifiedPublicKeyCallback permissions skip enforcement in golang.org/x/crypto/ssh40Plan
- CVE-2026-42508Invoking auth bypass via unenforced @revoked status in golang.org/x/crypto/ssh/knownhosts36Monitor
- CVE-2026-39834Invoking infinite loop on large channel writes in golang.org/x/crypto/ssh36Monitor
- CVE-2026-39833Invoking key constraints not enforced in golang.org/x/crypto/ssh/agent36Monitor
- CVE-2026-39832Invoking agent constraints dropped when forwarding keys in golang.org/x/crypto/ssh/agent36Monitor
- CVE-2026-39831Invoking bypass of FIDO/U2F security keys physical interaction in golang.org/x/crypto/ssh36Monitor
Remediation
Which version to upgrade to
Fix versions compiled from the vendor, package registries and Microsoft. Verify the vendor's note before upgrading.
| Product / package | Fixed version | Source |
|---|---|---|
| golang.org/x/crypto golang.org/x/crypto/ssh | 0.52.0 | Vendor (CNA) |
| debian:golang-go.crypto | 1:0.52.0-1 · Debian:14 | Package registry (OSV) |
| Go:golang.org/x/crypto | 0.52.0 | Package registry (OSV) |
| opensuse:amazon-ssm-agent | 3.3.4624.0-2.1 · openSUSE:Tumbleweed | Package registry (OSV) |
| opensuse:containerized-data-importer1.65 | 1.65.0-2.1 · openSUSE:Tumbleweed | Package registry (OSV) |
| opensuse:containerized-data-importer1.66 | 1.66.0-1.1 · openSUSE:Tumbleweed | Package registry (OSV) |
| opensuse:distribution | 3.1.1-160000.1.1 · openSUSE:Leap 16.0 | Package registry (OSV) |
| opensuse:git-bug | 0.10.1-5.1 · openSUSE:Tumbleweed | Package registry (OSV) |
| opensuse:google-guest-agent | 20260529.00-160000.1.1 · openSUSE:Leap 16.0 | Package registry (OSV) |
| opensuse:google-osconfig-agent | 20260615.01-160000.1.2 · openSUSE:Leap 16.0 | Package registry (OSV) |
| opensuse:kubevirt1.8 | 1.8.4-2.1 · openSUSE:Tumbleweed | Package registry (OSV) |
| opensuse:kubevirt1.9 | 1.9.0-1.1 · openSUSE:Tumbleweed | Package registry (OSV) |
| opensuse:mcphost | 0.34.0-160000.2.1 · openSUSE:Leap 16.0 | Package registry (OSV) |
| opensuse:rclone | 1.74.2-1.1 · openSUSE:Tumbleweed | Package registry (OSV) |
| opensuse:trivy | 0.71.0-160000.1.1 · openSUSE:Leap 16.0 | Package registry (OSV) |
| red hat:flightctl | 0:1.0.3-1.el9em · Red Hat:edge_manager:1.0::el9 | Package registry (OSV) |
| red hat:flightctl-agent | 0:1.0.3-1.el9em · Red Hat:edge_manager:1.0::el9 | Package registry (OSV) |
| red hat:flightctl-cli | 0:1.0.3-1.el9em · Red Hat:edge_manager:1.0::el9 | Package registry (OSV) |
| red hat:flightctl-selinux | 0:1.0.3-1.el9em · Red Hat:edge_manager:1.0::el9 | Package registry (OSV) |
| suse:alloy | 1.17.0-160000.1.1 · SUSE:Linux Enterprise Server 16.0 | Package registry (OSV) |
| suse:amazon-ssm-agent | 3.3.4624.0-160000.1.1 · SUSE:Linux Enterprise Server 16.0 | Package registry (OSV) |
| suse:apptainer | 1.5.1-150600.4.24.1 · SUSE:Linux Enterprise Module for HPC 15 SP7 | Package registry (OSV) |
| suse:buildah | 1.35.5-150400.3.68.1 · SUSE:Linux Enterprise High Performance Computing 15 SP4-ESPOS | Package registry (OSV) |
| suse:cosign | 3.1.1-160000.1.1 · SUSE:Linux Enterprise Server 16.0 | Package registry (OSV) |
| suse:distribution | 3.1.1-160000.1.1 · SUSE:Linux Enterprise Server 16.0 | Package registry (OSV) |
| suse:elemental-toolkit | 2.1.6-1.1 · SUSE:Linux Micro 6.0 | Package registry (OSV) |
| suse:google-guest-agent | 20260529.00-160000.1.1 · SUSE:Linux Enterprise Server 16.0 | Package registry (OSV) |
| suse:google-osconfig-agent | 20260615.01-1.1 · SUSE:Linux Micro 6.0 | Package registry (OSV) |
| suse:mcphost | 0.34.0-160000.2.1 · SUSE:Linux Enterprise Server 16.0 | Package registry (OSV) |
| suse:podman | 5.4.2-slfo.1.1_5.1 · SUSE:Linux Micro 6.1 | Package registry (OSV) |
+1
Exploit status
No known public exploit
No public exploit has been observed yet. That doesn't mean you're safe, only that the bar is a little higher.
Research context
For pentesters and researchers: attack profile, score disagreement, timeline, patch commits, credits, variant and chain candidates, bug bounty scope. All derived from existing data; no exploit code.
Timeline
From publication to today: proof of concept, Metasploit module, CISA KEV and fix record. Dates are as reported by the sources.
No dated events beyond publication.
FIRST EPSS daily score; only changes of 0.01 or more are recorded (step chart).
Patch and commit links
Commit, PR and diff links among the references. A starting point for patch-diffing and variant hunting; fixes, not exploits.
No commit or PR link among the references.
Credits
All researchersFinders, reporters and analysts named in the CNA record. Click a name for that researcher’s other records.
Variant candidates
Same product, same weakness class, within 18 months. If the patch missed the root cause, the sibling bug is here.
- CVE-2026-425080 days apartInvoking auth bypass via unenforced @revoked status in golang.org/x/crypto/ssh/knownhosts36Monitor
- CVE-2026-398350 days apartInvoking server panic during CheckHostKey/Authenticate in golang.org/x/crypto/ssh21Monitor
Chain candidates
An authentication bypass and a privilege-requiring bug in the same product, published close together: combined they may become an unauthenticated path.
—
Bug bounty scope
No known public program.
Source: bounty-targets-data (public HackerOne, Bugcrowd, Intigriti, YesWeHack listings).
Technical details
Attack conditions
- Anyone who can reach it over the internet can trigger it.
- A low-privileged account is enough.
- No user action is required.
- No special conditions are required; it is repeatable.
If successful
- Confidentiality
- low · data can be read
- Integrity
- low · data or configuration can be modified
- Availability
- low · the service can be disrupted
- Attack vector
- Network
- Attack complexity
- Low
- Privileges required
- Low
- User interaction
- None
- Scope
- Unchanged
- Confidentiality impact
- Low
- Integrity impact
- Low
- Availability impact
- Low
Weakness class (CWE)
CWE-295 · Improper Certificate ValidationCVSS vector
CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:L/I:L/A:L
nvd-secondary
Root cause
A certificate validation error is silently swallowed instead of terminating the connection. Often, code added for a test environment makes its way into production.
The bug in code
The whole CWE-295 classA representative example of this vulnerability class. Not the vendor's source code; it shows the faulty pattern and its fix.
Vulnerable
override fun checkServerTrusted(chain: Array<X509Certificate>, type: String) { // Left empty for the test environment}Fixed
val client = OkHttpClient.Builder() .certificatePinner( CertificatePinner.Builder() .add("api.sirius.example", "sha256/…") .build() ).build()Attack context
MITRE CAPEC attack patterns and ATT&CK techniques for this weakness class (CWE). A starting point for detection rules and threat hunting.
Attack patterns (CAPEC)
ATT&CK techniques
—
Noroxi analysis
No Noroxi analysis for this record yet
We don't hand-write analysis for all 385,000+ vulnerabilities; that wouldn't be honest. For notable, high-impact vulnerabilities our team writes the mechanism, detection and remediation steps.
We use this product, ask for helpChange log
- Fix✗ → ✓
For records you follow, these changes also arrive as notifications. →
References
- go.dev/cl/781621
- go.dev/issue/79562
- groups.google.com/g/golang-announce/c/a082jnz-LvI
- pkg.go.dev/vuln/GO-2026-5014
- access.redhat.com/errata/RHSA-2026:26546
- access.redhat.com/errata/RHSA-2026:26547
- access.redhat.com/errata/RHSA-2026:36105
- access.redhat.com/errata/RHSA-2026:36167
- access.redhat.com/errata/RHSA-2026:36207
- access.redhat.com/errata/RHSA-2026:36319
- access.redhat.com/errata/RHSA-2026:36625
- access.redhat.com/errata/RHSA-2026:36648
- access.redhat.com/errata/RHSA-2026:36651
- access.redhat.com/errata/RHSA-2026:36796
- access.redhat.com/errata/RHSA-2026:36797
- access.redhat.com/errata/RHSA-2026:36808
- access.redhat.com/errata/RHSA-2026:37268
- access.redhat.com/errata/RHSA-2026:37271
- access.redhat.com/errata/RHSA-2026:37272
- access.redhat.com/errata/RHSA-2026:37278
Vendor advisories and official records. Exploit/PoC links are deliberately left out.