Skip to content

[Go 1.24.0] CVE-2026-39832: ssh/agent: reject keys with unsupported confirm constraint - #11

Open
Atharva-Shinde wants to merge 1 commit into
openshift-sustaining:sustaining-v0.48.0from
Atharva-Shinde:sustaining-v0.48.0
Open

[Go 1.24.0] CVE-2026-39832: ssh/agent: reject keys with unsupported confirm constraint#11
Atharva-Shinde wants to merge 1 commit into
openshift-sustaining:sustaining-v0.48.0from
Atharva-Shinde:sustaining-v0.48.0

Conversation

@Atharva-Shinde

@Atharva-Shinde Atharva-Shinde commented Jul 30, 2026

Copy link
Copy Markdown

Process

# branch_setup.py switched to existing sustaining-v0.48.0 (already up to date with upstream)
# git am failed — patch context mismatch, user resolved manually

Conflicts

  • ssh/agent/keyring.go: Patch expected ConstraintExtensions rejection check to already exist — v0.48.0 does not have it. User applied ConfirmBeforeUse check manually.
  • ssh/agent/keyring_test.go: Patch expected TestAddKeyWithConstraintExtensions test — not present in v0.48.0. User added new test manually.

Patch Source

https://go-review.googlesource.com/changes/crypto~778642/revisions/3/patch?download&raw
v0.48.0-GO-2026-5006-0.patch

Verification

  • go vet ./...: passed
  • Runtime gates: none

The in-memory keyring supports the "lifetime" constraint but does not
implement the "confirm" constraint. Previously, keyring.Add silently
ignored ConfirmBeforeUse: the key was stored, advertised through List,
and used for signing without any interactive confirmation, potentially
misleading callers into believing this security measure was enforced.

Return an error when ConfirmBeforeUse is set instead of silently
downgrading the caller's security expectations. Implementing real
confirm-before-use in an in-memory library keyring is infeasible (there
is no UI or confirmation callback), so failing closed is the correct
behavior; adding actual confirm support would require an API addition
and is out of scope.

This is a deliberate behavior change: keyring.Add previously accepted
and ignored ConfirmBeforeUse and now returns an error. This change also
updates the keyring doc comments to document the supported constraints.

This issue was found during a security audit by NCC Group Cryptography
Services, sponsored by Teleport.

Fixes CVE-2026-39833
Updates golang/go#47533
Fixes golang/go#79436

Change-Id: I1b3a286f0c1e4a4e08ac37109f7e491692ca90ae
Reviewed-on: https://go-review.googlesource.com/c/crypto/+/778642
Reviewed-by: Dmitri Shuralyov <dmitshur@google.com>
Reviewed-by: Neal Patel <nealpatel@google.com>
Reviewed-by: Neal Patel <neal@golang.org>
Auto-Submit: Neal Patel <nealpatel@google.com>
LUCI-TryBot-Result: golang-scoped@luci-project-accounts.iam.gserviceaccount.com <golang-scoped@luci-project-accounts.iam.gserviceaccount.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants