Skip to content

fix(security/UNKNOWN/): Update security golang.org/x/crypto to v0.52.0 [SECURITY] (release-3.7.x) - #22189

Merged
rfratto merged 2 commits into
release-3.7.xfrom
deps-update/release-3.7.x-security-golang.orgxcrypto
Jun 17, 2026
Merged

fix(security/UNKNOWN/): Update security golang.org/x/crypto to v0.52.0 [SECURITY] (release-3.7.x)#22189
rfratto merged 2 commits into
release-3.7.xfrom
deps-update/release-3.7.x-security-golang.orgxcrypto

Conversation

@renovate-sh-app

@renovate-sh-app renovate-sh-app Bot commented Jun 3, 2026

Copy link
Copy Markdown
Contributor

This PR contains the following updates:

Package Change Age Confidence
golang.org/x/crypto v0.49.0v0.52.0 age confidence

Invoking key constraints not enforced in golang.org/x/crypto/ssh/agent

CVE-2026-39833 / GO-2026-5005

More information

Details

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.

Severity

Unknown

References

This data is provided by OSV and the Go Vulnerability Database (CC-BY 4.0).


Invoking agent constraints dropped when forwarding keys in golang.org/x/crypto/ssh/agent

CVE-2026-39832 / GO-2026-5006

More information

Details

When adding a key to a remote agent constraint extensions such as restrict-destination-v00@​openssh.com were not serialized in the request. Destination restrictions were silently stripped when forwarding keys, allowing unrestricted use of the key on the remote host. The client now serializes all constraint extensions. Additionally, the in-memory keyring returned by NewKeyring() now rejects keys with unsupported constraint extensions instead of silently ignoring them.

Severity

Unknown

References

This data is provided by OSV and the Go Vulnerability Database (CC-BY 4.0).


Invoking byte arithmetic causes underflow and panic in golang.org/x/crypto/ssh

CVE-2026-46597 / GO-2026-5013

More information

Details

An incorrectly placed cast from bytes to int allowed for server-side panic in the AES-GCM packet decoder for well-crafted inputs.

Severity

Unknown

References

This data is provided by OSV and the Go Vulnerability Database (CC-BY 4.0).


Invoking bypass of certificate restrictions in golang.org/x/crypto/ssh

CVE-2026-39828 / GO-2026-5014

More information

Details

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.

Severity

Unknown

References

This data is provided by OSV and the Go Vulnerability Database (CC-BY 4.0).


Invoking server panic during CheckHostKey/Authenticate in golang.org/x/crypto/ssh

CVE-2026-39835 / GO-2026-5015

More information

Details

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.

Severity

Unknown

References

This data is provided by OSV and the Go Vulnerability Database (CC-BY 4.0).


Invoking memory leak when rejecting channels can lead to DoS in golang.org/x/crypto/ssh

CVE-2026-39827 / GO-2026-5016

More information

Details

An authenticated SSH client that repeatedly opened channels which were rejected by the server caused unbounded memory growth, eventually crashing the server process and affecting all connected users. Rejected channels are now properly removed from the connection's internal state and released for garbage collection.

Severity

Unknown

References

This data is provided by OSV and the Go Vulnerability Database (CC-BY 4.0).


Invoking client can cause server deadlock on unexpected responses in golang.org/x/crypto/ssh

CVE-2026-39830 / GO-2026-5017

More information

Details

A malicious SSH peer could send unsolicited global request responses to fill an internal buffer, blocking the connection's read loop. The blocked goroutine could not be released by calling Close(), resulting in a resource leak per connection. Unsolicited global responses are now discarded.

Severity

Unknown

References

This data is provided by OSV and the Go Vulnerability Database (CC-BY 4.0).


Invoking pathological RSA/DSA parameters may cause DoS in golang.org/x/crypto/ssh

CVE-2026-39829 / GO-2026-5018

More information

Details

The RSA and DSA public key parsers did not enforce size limits on key parameters. A crafted public key with an excessively large modulus or DSA parameter could cause several minutes of CPU consumption during signature verification. This could be triggered by unauthenticated clients during public key authentication. RSA moduli are now limited to 8192 bits, and DSA parameters are validated per FIPS 186-2.

Severity

Unknown

References

This data is provided by OSV and the Go Vulnerability Database (CC-BY 4.0).


Invoking bypass of FIDO/U2F security keys physical interaction in golang.org/x/crypto/ssh

CVE-2026-39831 / GO-2026-5019

More information

Details

The Verify() method for FIDO/U2F security key types (sk-ecdsa-sha2-nistp256@​openssh.com, sk-ssh-ed25519@​openssh.com) did not check the User Presence flag. Signatures generated without physical touch were accepted, allowing unattended use of a hardware security key. To restore the previous behavior, return a "no-touch-required" extension in Permissions.Extensions from PublicKeyCallback.

Severity

Unknown

References

This data is provided by OSV and the Go Vulnerability Database (CC-BY 4.0).


Invoking infinite loop on large channel writes in golang.org/x/crypto/ssh

CVE-2026-39834 / GO-2026-5020

More information

Details

When writing data larger than 4GB in a single Write call on an SSH channel, an integer overflow in the internal payload size calculation caused the write loop to spin indefinitely, sending empty packets without making progress. The size comparison now uses int64 to prevent truncation.

Severity

Unknown

References

This data is provided by OSV and the Go Vulnerability Database (CC-BY 4.0).


Invoking auth bypass via unenforced @​revoked status in golang.org/x/crypto/ssh/knownhosts

CVE-2026-42508 / GO-2026-5021

More information

Details

Previously, a revoked 'SignatureKey' belonging to a CA was not correctly checked for revocation. Now, both the 'key' and 'key.SignatureKey' are checked for @​revoked.

Severity

Unknown

References

This data is provided by OSV and the Go Vulnerability Database (CC-BY 4.0).


Invoking VerifiedPublicKeyCallback permissions skip enforcement in golang.org/x/crypto/ssh

CVE-2026-46595 / GO-2026-5023

More information

Details

Previously, CVE-2024-45337 fixed an authorization bypass for misused ssh server configurations; if any other type of callback is passed other than public key, then the source-address validation would be skipped.

Severity

Unknown

References

This data is provided by OSV and the Go Vulnerability Database (CC-BY 4.0).


Invoking pathological inputs can lead to client panic in golang.org/x/crypto/ssh/agent

CVE-2026-46598 / GO-2026-5033

More information

Details

For certain crafted inputs, a 'ed25519.PrivateKey' was created by casting malformed wire bytes, leading to a panic when used.

Severity

Unknown

References

This data is provided by OSV and the Go Vulnerability Database (CC-BY 4.0).


Configuration

📅 Schedule: (UTC)

  • Branch creation
    • At any time (no schedule defined)
  • Automerge
    • At any time (no schedule defined)

🚦 Automerge: Enabled.

Rebasing: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox.

🔕 Ignore: Close this PR and you won't be reminded about this update again.


  • If you want to rebase/retry this PR, check this box

Need help?

You can ask for more help in the following Slack channel: #proj-renovate-self-hosted. In that channel you can also find ADR and FAQ docs in the Resources section.

@renovate-sh-app

Copy link
Copy Markdown
Contributor Author

ℹ️ Artifact update notice

File name: go.mod

In order to perform the update(s) described in the table above, Renovate ran the go get command, which resulted in the following additional change(s):

  • 7 additional dependencies were updated

Details:

Package Change
golang.org/x/net v0.52.0 -> v0.54.0
golang.org/x/sys v0.42.0 -> v0.45.0
golang.org/x/text v0.35.0 -> v0.37.0
golang.org/x/telemetry v0.0.0-20260311193753-579e4da9a98c -> v0.0.0-20260409153401-be6f6cb8b1fa
golang.org/x/mod v0.34.0 -> v0.35.0
golang.org/x/term v0.41.0 -> v0.43.0
golang.org/x/tools v0.43.0 -> v0.44.0
@renovate-sh-app renovate-sh-app Bot changed the title fix(security/UNKNOWN/): Update module golang.org/x/crypto to v0.52.0 [SECURITY] (release-3.7.x) Jun 3, 2026
@renovate-sh-app renovate-sh-app Bot closed this Jun 3, 2026
@renovate-sh-app
renovate-sh-app Bot deleted the deps-update/release-3.7.x-security-golang.orgxcrypto branch June 3, 2026 17:34
@renovate-sh-app renovate-sh-app Bot changed the title fix(security/UNKNOWN/): Update module golang.org/x/crypto to v0.52.0 [SECURITY] (release-3.7.x) - autoclosed Jun 4, 2026
@renovate-sh-app renovate-sh-app Bot reopened this Jun 4, 2026
@renovate-sh-app
renovate-sh-app Bot force-pushed the deps-update/release-3.7.x-security-golang.orgxcrypto branch 2 times, most recently from 25b6309 to 342d016 Compare June 4, 2026 17:19
@renovate-sh-app renovate-sh-app Bot changed the title fix(security/UNKNOWN/): Update module golang.org/x/crypto to v0.52.0 [SECURITY] (release-3.7.x) Jun 10, 2026
Updates x/crypto v0.52.0, x/net v0.54.0, x/sys v0.45.0, x/text v0.37.0, x/tools v0.44.0 (+ transitive) to clear out-of-SLO CVEs on release-3.7.x. Regenerated on the current base; equivalent to #22189 rebased.
@rfratto
rfratto force-pushed the deps-update/release-3.7.x-security-golang.orgxcrypto branch from 342d016 to 941246e Compare June 17, 2026 13:41
@github-actions

This comment has been minimized.

@renovate-sh-app

Copy link
Copy Markdown
Contributor Author

Edited/Blocked Notification

Renovate will not automatically rebase this PR, because it does not recognize the last commit author and assumes somebody else may have edited the PR.

You can manually request rebase by checking the rebase/retry box above.

⚠️ Warning: custom changes will be lost.

The x/net bump deprecates golang.org/x/net/http2/h2c (staticcheck SA1019), which fails the required lint check. Replace h2c.NewHandler with a small serverutil.EnableUnencryptedHTTP2 helper using net/http's Protocols field, matching main. Behavior unchanged: servers still accept HTTP/1.x and cleartext HTTP/2.
@rfratto
rfratto force-pushed the deps-update/release-3.7.x-security-golang.orgxcrypto branch from 941246e to ac6e49a Compare June 17, 2026 14:11
@github-actions

Copy link
Copy Markdown
Contributor

⚠️ The workflow jobs listed below don't declare a permissions: block and may break when the organization's default GITHUB_TOKEN permissions are restricted to read-only.

Expand for findings
warning[excessive-permissions]: overly broad permissions
   --> ./.github/workflows/helm-ci.yml:2:1
    |
  2 | / name: helm-ci
  3 | | on:
  4 | |   pull_request:
  5 | |     paths:
...   |
220 | |           DEBUG: ${{ runner.debug == '1' && 'true' || 'false' }}
221 | |           VERBOSE: ${{ runner.debug == '1' && 'true' || 'false' }}
    | |___________________________________________________________________^ default permissions used due to no permissions: block
    |
    = note: audit confidence → Medium
    = help: audit documentation → https://docs.zizmor.sh/audits/#excessive-permissions

warning[excessive-permissions]: overly broad permissions
   --> ./.github/workflows/helm-ci.yml:93:3
    |
 93 | /   list-integration-tests:
 94 | |     name: List integration tests
 95 | |     runs-on: ubuntu-latest
 96 | |     outputs:
...   |
111 | |           echo "Tests: ${tests}"
112 | |           echo "tests=$(echo "${tests}" | jq --raw-input --slurp --compact-output 'split("\n") | map(select(. != ""))')" >> "${GITHUB_OUTPUT}"
    | |                                                                                                                                              ^
    | |                                                                                                                                              |
    | |______________________________________________________________________________________________________________________________________________this job
    |                                                                                                                                                default permissions used due to no permissions: block
    |
    = note: audit confidence → Medium
    = help: audit documentation → https://docs.zizmor.sh/audits/#excessive-permissions

warning[excessive-permissions]: overly broad permissions
   --> ./.github/workflows/helm-ci.yml:114:3
    |
114 | /   run-integration-tests:
115 | |     name: Integration Test
116 | |     needs: list-integration-tests
117 | |     runs-on: ubuntu-latest
...   |
220 | |           DEBUG: ${{ runner.debug == '1' && 'true' || 'false' }}
221 | |           VERBOSE: ${{ runner.debug == '1' && 'true' || 'false' }}
    | |                                                                   ^
    | |                                                                   |
    | |___________________________________________________________________this job
    |                                                                     default permissions used due to no permissions: block
    |
    = note: audit confidence → Medium
    = help: audit documentation → https://docs.zizmor.sh/audits/#excessive-permissions

warning[excessive-permissions]: overly broad permissions
  --> ./.github/workflows/operator-images.yaml:1:1
   |
 1 | / name: operator images
 2 | |
 3 | | on:
 4 | |   push:
...  |
45 | |       image_name: "storage-size-calculator"
46 | |       tag: "latest"
   | |____________________^ default permissions used due to no permissions: block
   |
   = note: audit confidence → Medium
   = help: audit documentation → https://docs.zizmor.sh/audits/#excessive-permissions

warning[excessive-permissions]: overly broad permissions
  --> ./.github/workflows/operator-images.yaml:12:3
   |
12 | /   publish-grafana-operator:
13 | |     uses: ./.github/workflows/operator-reusable-image-build.yml
14 | |     with:
15 | |       dockerfile: "operator/Dockerfile"
...  |
18 | |       image_name: "loki-operator"
19 | |       tag: "latest"
   | |                   ^
   | |                   |
   | |___________________this job
   |                     default permissions used due to no permissions: block
   |
   = note: audit confidence → Medium
   = help: audit documentation → https://docs.zizmor.sh/audits/#excessive-permissions

warning[excessive-permissions]: overly broad permissions
  --> ./.github/workflows/operator-images.yaml:21:3
   |
21 | /   publish-openshift-operator:
22 | |     uses: ./.github/workflows/operator-reusable-image-build.yml
23 | |     with:
24 | |       dockerfile: "operator/Dockerfile"
...  |
27 | |       image_name: "loki-operator"
28 | |       tag: "latest"
   | |                   ^
   | |                   |
   | |___________________this job
   |                     default permissions used due to no permissions: block
   |
   = note: audit confidence → Medium
   = help: audit documentation → https://docs.zizmor.sh/audits/#excessive-permissions

warning[excessive-permissions]: overly broad permissions
  --> ./.github/workflows/operator-images.yaml:30:3
   |
30 | /   publish-openshift-bundle:
31 | |     uses: ./.github/workflows/operator-reusable-image-build.yml
32 | |     with:
33 | |       dockerfile: "operator/bundle/openshift/bundle.Dockerfile"
...  |
36 | |       image_name: "loki-operator-bundle"
37 | |       tag: "latest"
   | |                   ^
   | |                   |
   | |___________________this job
   |                     default permissions used due to no permissions: block
   |
   = note: audit confidence → Medium
   = help: audit documentation → https://docs.zizmor.sh/audits/#excessive-permissions

warning[excessive-permissions]: overly broad permissions
  --> ./.github/workflows/operator-images.yaml:39:3
   |
39 | /   publish-openshift-size-calculator:
40 | |     uses: ./.github/workflows/operator-reusable-image-build.yml
41 | |     with:
42 | |       dockerfile: "operator/calculator.Dockerfile"
...  |
45 | |       image_name: "storage-size-calculator"
46 | |       tag: "latest"
   | |                    ^
   | |                    |
   | |____________________this job
   |                      default permissions used due to no permissions: block
   |
   = note: audit confidence → Medium
   = help: audit documentation → https://docs.zizmor.sh/audits/#excessive-permissions
@rfratto
rfratto merged commit 6383bfe into release-3.7.x Jun 17, 2026
89 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment