deps: bump grpc 1.83.2 + x/crypto 0.56.0 (GHSA-vp52-pcj8-j9qc, GO-2026-6354/6355) - #394
Merged
Conversation
…, HIGH) Unauthenticated remote DoS: an attacker can fragment a gRPC payload into millions of 1-byte HTTP/2 DATA frames. Each fragment carries per-frame tracking/queue overhead, so heap use inflates far past the flow-control window and the runtime OOMs. Fixed upstream in 1.83.1 by receive-buffer compaction; 1.83.2 is the current stable. grpc arrives indirectly via pulumi/sdk/v3. MVS pulled four transitive companions forward (cel.dev/expr, go-spiffe/v2, and two GCP OTel detectors); no lint/tooling modules moved. go build ./... passes; trivy fs reports 0 findings at all severities. Signed-off-by: Dmitrii Creed <creeed22@gmail.com>
Cre-eD
requested review from
Laboratory,
smecsia and
universe-ops
as code owners
September 6, 2026 19:43
Semgrep Scan ResultsRepository:
Scanned at 2026-09-06 20:06 UTC |
Security Scan ResultsRepository:
Scanned at 2026-09-06 20:07 UTC |
smecsia
previously approved these changes
Sep 6, 2026
📊 Statement coverageMeasured on the documented included set (see
Baseline: |
universe-ops
previously approved these changes
Sep 6, 2026
…6-6355)
Two reachable DoS advisories in golang.org/x/crypto/ssh: a remote peer can
deadlock an established channel (GO-2026-6355) or an undecided one
(GO-2026-6354), wedging the connection. Both fixed in 0.56.0.
govulncheck flags these as CALLED, not merely present:
pkg/clouds/pulumi/provision.go:100:50
prepareStackForOperations -> auto.UpsertStackInlineSource -> ssh.NewClientConn
Pre-existing on main -- 0.55.0 is what main pins; the advisories were
published after the last green run, so this is the first build to see them.
No MVS collateral: one line each in go.mod and go.sum.
go build ./... passes; trivy fs reports 0 findings at all severities.
Signed-off-by: Dmitrii Creed <creeed22@gmail.com>
smecsia
approved these changes
Sep 6, 2026
universe-ops
approved these changes
Sep 6, 2026
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Closes the open OpenSSF Scorecard
Vulnerabilitiesfinding, plus two reachablex/crypto/sshadvisories that CI surfaced on the first run of this branch.Fixed
google.golang.org/grpcgolang.org/x/crypto1. grpc — heap exhaustion via DATA-frame fragmentation
An unauthenticated remote peer opens a gRPC stream and fragments its payload into
millions of 1-byte HTTP/2 DATA frames. Every fragment carries its own tracking-struct
and queue allocation, so heap use scales with frame count, not payload bytes -- the
total stays inside the connection and stream flow-control windows while the runtime
OOMs. Multiplexed across concurrent streams that is a remote DoS.
Upstream fixed it in 1.83.1 with receive-buffer compaction (consecutive small buffers
coalesce from a shared pool). 1.83.2 is current stable, so this takes the newer one.
Reaches us indirectly, through the Pulumi SDK's gRPC transport:
Every provision/deploy talks to the Pulumi engine over that channel.
MVS collateral: grpc 1.83.2's own
go.modpulled four transitive companionsforward. All patch/minor, none are lint or codegen tooling, so no
golangci-lint/staticcheckanalysis-API fallout:cel.dev/expr0.25.1 -> 0.25.2github.com/spiffe/go-spiffe/v22.6.0 -> 2.7.0github.com/GoogleCloudPlatform/opentelemetry-operations-go/detectors/gcp1.32.0 -> 1.33.0go.opentelemetry.io/contrib/detectors/gcp1.43.0 -> 1.44.02. x/crypto/ssh — two channel-deadlock DoS advisories
Not caused by this branch --
mainalso pins 0.55.0. The advisories were publishedafter the last green run, so this PR is simply the first build to see them. They are
included here rather than split off because the
govulncheckgate is required andwould block on them regardless.
govulncheck rates both called, not merely present:
That is
git+sshstack-source cloning insideUpsertStackInlineSource. A hostile orcompromised git remote can wedge the SSH connection. Fixed in 0.56.0; one line each in
go.modandgo.sum, no MVS collateral.Deferred to devs (breaking changes)
None. Both are drop-in bumps, no app-side code change.
Unfixable (no patched version yet)
GO-2026-5932--golang.org/x/crypto/openpgpis unmaintained and unsafe by design,Fixed in: N/A. Module-level only; govulncheck's symbol scan does not place it on anycall path. Already carried as a
not_affectedstatement invex/openvex.json, andre-confirmed still valid this pass (upstream still ships no fix; it survives the
x/crypto 0.56.0 bump unchanged).
VEX re-triage
vex/openvex.jsoncarries 3 pre-existingnot_affectedstatements:GO-2026-5932(x/crypto/openpgp unmaintained)Fixed in: N/Aat x/crypto 0.56.0GO-2022-0635GO-2022-0646No statement was added for any advisory in this PR -- all three are fixed, not
suppressed.
Dependabot reconciliation
No open Dependabot PR touches
google.golang.org/grpcorgolang.org/x/crypto, sonothing to supersede or rebase onto. The repo's Dependabot alert API returned 403 for
the token used here, so alert state was cross-checked against Trivy, govulncheck and
osv.dev rather than the alert list. Any matching alert should auto-close once this
lands on
main.Evidence
Source scan --
trivy fs --scanners vuln --severity CRITICAL,HIGH,MEDIUM,LOW(0.69.0)Re-run after each of the two bumps; clean both times.
govulncheck -- module mode, after the x/crypto bump
The two
sshadvisories are gone; only the already-VEXed openpgp entry remains.The reachability-aware symbol scan runs on the CI gate.
Advisory range check -- grpc
1.82.1 is inside
[0, 1.83.1); 1.83.2 is outside it.Test plan
go mod tidyclean after each bump;go.sumregenerated and committed.GOMEMLIMIT=3GiB go build -p 2 ./...-- exit 0 after both bumps, no compile errorsfrom the four transitive grpc companions or from the x/crypto minor.
trivy fs-- 0 findings at every severity.govulncheck -scan=module-- only the pre-existing, VEXed openpgp entry remains.The symbol-mode reachability verdict comes from the CI gate (source mode peaks past
local memory on this module).