OCPBUGS-92651: Replace golang.org/x/crypto with github.com/openshift-sustaining/crypto v0.48.0-sec.3 to mitigate CVE-2026-39832 (release-4.21) - #10824
Conversation
CVE-2026-39832 golang.org/x/crypto/ssh/agent: Security bypass due to improper handling of key restrictions - Vulnerable package: golang.org/x/crypto v0.48.0 - Fixed via replace: github.com/openshift-sustaining/crypto v0.48.0-sec.3 - Risk level: MEDIUM - Go version conflict: golang.org/x/crypto v0.5.2 requires go1.25; mitigated via backport fork
|
Pipeline controller notification For optional jobs, comment This repository is configured in: LGTM mode |
|
@alexissolanas: This pull request references Jira Issue OCPBUGS-92651, which is invalid:
Comment The bug has been updated to refer to the pull request using the external bug tracker. DetailsIn response to this:
Instructions for interacting with me using PR comments are available here. If you have questions or suggestions related to my behavior, please file an issue against the openshift-eng/jira-lifecycle-plugin repository. |
|
Important Review skippedAuto reviews are disabled on base/target branches other than the default branch. Please check the settings in the CodeRabbit UI or the ⚙️ Run configurationConfiguration used: Repository: openshift/coderabbit/.coderabbit.yaml Review profile: CHILL Plan: Pro Plus Run ID: You can disable this status message by setting the Use the checkbox below for a quick retry:
Comment |
|
[APPROVALNOTIFIER] This PR is NOT APPROVED This pull-request has been approved by: The full list of commands accepted by this bot can be found here. DetailsNeeds approval from an approver in each of these files:Approvers can indicate their approval by writing |
|
@alexissolanas: all tests passed! Full PR test history. Your PR dashboard. DetailsInstructions for interacting with me using PR comments are available here. If you have questions or suggestions related to my behavior, please file an issue against the kubernetes-sigs/prow repository. I understand the commands that are listed here. |
|
/label backport-risk-assessed |
|
/jira refresh |
|
@moebasim: This pull request references Jira Issue OCPBUGS-92651, which is invalid:
Comment DetailsIn response to this:
Instructions for interacting with me using PR comments are available here. If you have questions or suggestions related to my behavior, please file an issue against the openshift-eng/jira-lifecycle-plugin repository. |
barbacbd
left a comment
There was a problem hiding this comment.
v0.5.2 is a typo for < v0.52.0, repeated three times in the body. As written it's self-contradictory (v0.48.0 is already ≥ v0.5.2 under semver). Cosmetic, but it's the kind of thing that gets copied into a security errata.
barbacbd
left a comment
There was a problem hiding this comment.
According to claude review:
-
The PR fixes only half of CVE-2026-39833. Upstream landed two commits in keyring.go for that advisory: e3d1254 (reject unsupported constraint extensions) and 0fb843a (reject ConfirmBeforeUse). The fork takes the first and omits the second. AddedKey.ConfirmBeforeUse is still silently ignored by NewKeyring() — the caller believes they'll be prompted and won't be. That's the same class of silent-constraint-drop bug as the CVE this PR is fixing, in the same function. Worth pulling in; it's four lines.
-
The description doesn't disclose three extra CVE backports. The fork also carries 8907318 + 9c2cd33 (RSA modulus / DSA parameter limits → CVE-2026-39829) and abbc44d (the int(padding+1) → int(padding)+1 overflow → CVE-2026-46597). These are good changes, but the body frames the PR as a single-CVE fix and lists the files without saying they contain unrelated security backports. For a release-branch security PR that's the thing a reviewer most needs stated.
-
Twelve other v0.52.0 CVEs remain unfixed. v0.52.0 was a 13-CVE batch from the NCC Group review. The fork omits fixes in ssh/server.go, ssh/mux.go, ssh/channel.go, ssh/certs.go, ssh/client_auth.go, ssh/agent/server.go, ssh/knownhosts/, plus the FIDO/U2F user-presence enforcement in keys.go (CVE-2026-39831) and the CBC cbcMinPacketSize fix. Scoping to one CVE is a legitimate backport strategy — but it should be an explicit, stated decision, not something a reviewer discovers by diffing.
-
The nested CAPI provider modules aren't covered. openshift/installer has separate go.mod/vendor trees under cluster-api/providers/, and on release-4.21 they pin: azurestack v0.33.0, ibmcloud v0.36.0, azure v0.42.0, aws/gcp v0.43.0, vsphere v0.45.0 — all below v0.52.0. azure and azurestack actually vendor golang.org/x/crypto/ssh. Those binaries ship in the installer image, so if this is scanner-driven remediation of ose-baremetal-installer, the component will still be flagged after this merges. Either those need the same replace, or the Jira should record why they're out of scope.
Summary
CVE Details
Go version constraint: All fixed upstream versions (>= v0.5.2) require go 1.25.
A replace directive pointing to the openshift-sustaining backport fork is used instead.
Changes
go.mod: +replace golang.org/x/crypto => github.com/openshift-sustaining/crypto v0.48.0-sec.3
go.sum: updated checksums
vendor/golang.org/x/crypto/ssh/agent/client.go
vendor/golang.org/x/crypto/ssh/agent/keyring.go
vendor/golang.org/x/crypto/ssh/cipher.go
vendor/golang.org/x/crypto/ssh/keys.go
vendor/modules.txt: +# golang.org/x/crypto v0.48.0 => github.com/openshift-sustaining/crypto v0.48.0-sec.3
Test Results