Skip to content

chore(deps): bump grpc to v1.82.1 and otel to v1.44.0 for GO-2026-6061 (BUG-2361) - #1050

Open
xarmian wants to merge 1 commit into
mainfrom
fix/grpc-go-2026-6061
Open

chore(deps): bump grpc to v1.82.1 and otel to v1.44.0 for GO-2026-6061 (BUG-2361)#1050
xarmian wants to merge 1 commit into
mainfrom
fix/grpc-go-2026-6061

Conversation

@xarmian

@xarmian xarmian commented Jul 30, 2026

Copy link
Copy Markdown
Collaborator

Fixes BUG-2361. make vuln (and CI's Go job) was failing on every branch including main:

Vulnerability #1: GO-2026-6061
  Module: google.golang.org/grpc
  Found in: google.golang.org/grpc@v1.79.3
  Fixed in: google.golang.org/grpc@v1.82.1
  Vulnerable symbols found: transport.ClientStream.{Close,Header,Read,RecvCompress,TrailersOnly} (+17 more)

Vulnerabilities in the xDS RBAC authorization engine and the HTTP/2 transport server implementation. grpc is indirect here: internal/oauth → ory/fosite → ory/x/otelx → otel otlptracehttp → grpc.

The two-hop trap fired

go get google.golang.org/grpc@v1.82.1 alone dragged otel v1.42.0 → v1.43.0 (grpc's own floor), which re-exposed GO-2026-5158 — uncapped baggage header parsing, call-reachable via baggage.New / baggage.Parse / propagation.Baggage.Extract. This is the same shape as the 2026-07-24 otel bump, which also needed two hops.

Second hop: otel core / metric / trace / sdk → v1.44.0 in lockstep, per the project's otel policy.

Version changes

Module Before After
google.golang.org/grpc v1.79.3 v1.82.1
go.opentelemetry.io/otel v1.42.0 v1.44.0
go.opentelemetry.io/otel/metric v1.42.0 v1.44.0
go.opentelemetry.io/otel/trace v1.42.0 v1.44.0
go.opentelemetry.io/otel/sdk v1.42.0 v1.44.0
golang.org/x/oauth2 v0.34.0 v0.36.0
google.golang.org/genproto/googleapis/api 20251202230838 20260414002931
google.golang.org/genproto/googleapis/rpc 20251202230838 20260414002931
google.golang.org/protobuf v1.36.10 v1.36.11

Everything below the otel quartet is grpc v1.82.1's own requirement floor. No go directive or toolchain change, no code changes, all otel exporter/contrib packages left at their existing pins. go.mod + go.sum only.

Remaining advisories are pre-existing and not call-reachable

make vuln exits 0 — "Your code is affected by 0 vulnerabilities." The trailing "4 vulnerabilities in packages you import and 1 in modules you require" line is not a failure and is unchanged from main: GO-2026-5777 / -5775 / -5774 (go-chi/chi/v5 v5.2.5, fixed in v5.3.0), GO-2026-4985 (otlptracehttp v1.21.0), GO-2026-5932 (golang.org/x/crypto v0.53.0, no fix available). The chi bump is a plausible follow-up if it ever becomes reachable; out of scope for this narrow fix.

Test plan

  • make vuln → clean, exit 0
  • golangci-lint run --timeout=5m ./... → 0 issues
  • go test ./... → green
  • make test-pg → green

Codex reviewed twice, both CLEAN. The second round ran with workspace-write so it could execute go directly, and specifically probed intra-family otel version skew (core at v1.44.0 while exporters sit at v1.21.0/v1.17.0 and contrib at v0.46.1): MVS resolves a single otel API family, so the older exporters compile against v1.44.0 with no separately-linked v1.21 interface to mismatch. go mod verify passes. It also confirmed fosite does call ory/x/otelx.End, but this repo configures no tracer or exporter, so it takes the no-op path.

Found while running the gate of record for PLAN-2357; kept out of that feature PR (#1048) deliberately so a feature merge isn't coupled to a dependency bump. This unblocks #1048 and every other open PR.

🤖 Generated with Claude Code

https://claude.ai/code/session_01E2fRi12n8rARczvdEa2LYT

…(BUG-2361)

grpc v1.79.3 is affected by GO-2026-6061 (xDS RBAC authorization engine
and HTTP/2 transport server). It reaches us indirectly via
internal/oauth -> ory/fosite -> ory/x/otelx -> otlptracehttp -> grpc.

The bump pulls otel v1.42.0 -> v1.43.0 as grpc's required floor, which
re-exposes GO-2026-5158 (uncapped baggage header parsing). Per the otel
lockstep policy, otel/metric/trace/sdk all move together to v1.44.0,
which clears it.

make vuln is now completely clean (0 call-reachable vulnerabilities).

Claude-Session: https://claude.ai/code/session_01E2fRi12n8rARczvdEa2LYT
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.

1 participant