Cloudanix VulnDB

CVE-2026-39833

Critical · 9.1

CVSS

9.1

EPSS

0.5%

Published

May 22, 2026

CISA due date

—

Cloudanix analysis

Next patch cycle SSVC: Track

Some software may use private keys without asking for the approval it was designed to require, allowing sensitive actions to happen without proper confirmation.

Exploitation
Remote Unauthenticated
Attacker needs
None
Complexity
Low
Impact
Full Compromise
Component
Library
Class
Authorization Bypass
Remediation
Upgrade
Effort
Medium
Patch risk
Medium

What it actually does

This is an authorization bypass in the Go crypto in-memory keyring implementation. When a caller creates a keyring with NewKeyring() and adds a key with the ConfirmBeforeUse constraint, the keyring silently accepts the constraint but does not enforce it. As a result, a signing operation can proceed without the expected user, operator, or policy confirmation. Applications that rely on this constraint as a security control may unintentionally allow unauthorized signing, authentication, or approval-like actions. The issue affects confidentiality and integrity where signatures grant access, approve transactions, authenticate sessions, or authorize sensitive operations.

Why it matters to the business

Systems that use the affected Go crypto keyring behavior may believe they require confirmation before a private key is used, while in practice the key can be used without that approval. This can undermine controls around privileged access, automated signing, deployment approvals, code-signing, SSH-style authentication, or other workflows that depend on explicit confirmation. Although the current EPSS is low, there is no known exploitation, and it is not in CISA KEV, the CVSS score is high because a successful abuse can let attackers perform sensitive actions without the intended authorization step.

How an attack unfolds

An attacker first needs a path to trigger signing through an application or service that uses the affected Go crypto in-memory keyring and assumes ConfirmBeforeUse is enforced. The attacker does not need to break the private key cryptography; instead, they abuse the application’s trust boundary. If the application exposes a signing, authentication, delegation, or token-generation function and depends on the keyring to require confirmation, the attacker submits or induces a signing request. Because the keyring accepted the unsupported constraint without enforcing it, the signing operation completes without a confirmation prompt or denial. The resulting signature may then be used to authenticate as a privileged identity, approve an operation, sign data, or satisfy another authorization check, depending on how the application uses the key.

How to fix it

Upgrade the affected Go crypto dependency to a release that includes the fix where NewKeyring() returns an error when unsupported constraints such as ConfirmBeforeUse are requested. No exact fixed version was provided in the input, so engineering teams should consult the official golang.org/x/crypto advisory, module changelog, and dependency metadata for the corrected version before release. Rebuild and redeploy all applications that vendor, statically link, or indirectly depend on the vulnerable package. In addition, audit application logic that relies on ConfirmBeforeUse with an in-memory keyring; do not treat this constraint as enforced unless the fixed library returns success for that configuration. Where immediate upgrade is not possible, remove reliance on the in-memory keyring for confirmation-sensitive keys, enforce confirmation in application code before invoking any signing operation, or use a key agent/HSM/secret-management component that independently enforces confirmation policies.

How to confirm the fix worked

Confirm exposure by reviewing dependency manifests, SBOMs, vendored modules, and compiled application provenance for affected golang.org/x/crypto versions. Perform source-code searches for NewKeyring(), ConfirmBeforeUse, AddKey, and signing flows that rely on confirmation constraints. After remediation, add a regression test that attempts to create or use an in-memory keyring with ConfirmBeforeUse and verifies the fixed behavior: unsupported constraints must fail explicitly rather than being silently ignored. Also test that any business-critical signing path cannot complete unless the application’s independent confirmation check succeeds. For deployed services, confirm rebuilt artifacts contain the updated dependency and that no older static binaries or containers remain in production.

Typical attack path

  1. Identify an application, service, agent, or workflow built with the affected Go crypto keyring behavior.
  2. Determine whether the application uses NewKeyring() with keys configured to require ConfirmBeforeUse.
  3. Find an exposed path that causes the application to perform a signing operation, such as authentication, delegated access, transaction approval, or artifact signing.
  4. Submit or trigger a signing request that should require confirmation.
  5. Receive a valid signature because the keyring does not enforce the confirmation constraint.
  6. Use the signature to complete the downstream action, such as access, approval, or impersonation, without the intended confirmation step.

How to detect it

There are no public, vulnerability-specific exploitation indicators provided for this issue. Detection should focus on behavioral evidence of unauthorized or unexpected signing. Review application logs, authentication logs, signing-service logs, audit trails, deployment approval records, code-signing records, SSH or agent-style signing logs, and API gateway logs for signing operations that lack a matching confirmation or approval event. Look for spikes in signing requests, signing from unusual source addresses, signing outside expected maintenance windows, repeated failed-then-successful authorization attempts, and signatures associated with users or service accounts that did not perform a corresponding confirmation action. If the affected component is embedded in a service, correlate every successful signature with the upstream request identity, approval workflow record, and downstream action authorized by that signature. Threat actor exploitation has not been reported, so absence of known IOCs does not prove absence of abuse.

What your security team should do

  • Inventory Go applications, agents, CLIs, signing services, authentication helpers, and automation tools that use golang.org/x/crypto keyring or agent functionality.
  • Prioritize review of systems where key signatures authorize privileged access, deployments, code-signing, financial or operational approvals, token issuance, or administrator actions.
  • Ask engineering teams to search for use of NewKeyring() together with ConfirmBeforeUse and verify whether confirmation is enforced outside the library.
  • Upgrade golang.org/x/crypto to the vendor-fixed release once identified, then rebuild and redeploy all dependent binaries and containers.
  • Add tests that fail closed when unsupported key constraints are requested and that prove signing cannot occur without the intended confirmation.
  • Review logs for unusual signing volume, signing outside normal approval windows, or signatures created without a corresponding approval event.
  • Because there is no known public exploit or KEV listing, treat this as a high-impact design/implementation flaw requiring targeted remediation rather than broad emergency incident response unless exposed signing paths are externally reachable.

The record

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.

Affected packages

Ecosystem Package Introduced Fixed
openSUSE:Leap 16.0 amazon-ssm-agent 0 3.3.4624.0-160000.1.1
openSUSE:Leap 16.0 distribution 0 3.1.1-160000.1.1
openSUSE:Leap 16.0 google-guest-agent 0 20260529.00-160000.1.1
openSUSE:Leap 16.0 google-osconfig-agent 0 20260615.01-160000.1.1
openSUSE:Leap 16.0 mcphost 0 0.34.0-160000.2.1
openSUSE:Leap 16.0 trivy 0 0.71.0-160000.1.1
openSUSE:Tumbleweed git-bug 0 0.10.1-5.1
openSUSE:Tumbleweed rclone 0 1.74.2-1.1
openSUSE:Tumbleweed velociraptor 0 0.7.0.4.git185.a5708584-2.1

Related vulnerabilities