Skip to content

OCPBUGS-80562: Bump google.golang.org/grpc to v1.79.3#304

Open
ocp-sustaining-admins wants to merge 1 commit intoopenshift:release-4.20from
ocp-sustaining-admins:release-4.20_CVE-2026-33186
Open

OCPBUGS-80562: Bump google.golang.org/grpc to v1.79.3#304
ocp-sustaining-admins wants to merge 1 commit intoopenshift:release-4.20from
ocp-sustaining-admins:release-4.20_CVE-2026-33186

Conversation

@ocp-sustaining-admins
Copy link
Copy Markdown

This PR is part of an automated process.

The commands used to generate this PR were:

go get google.golang.org/grpc@v1.79.3 toolchain@none
go mod tidy
go mod vendor

A member of the Red Hat Openshift Sustaining Team will review the PR and take appropriate action.

@openshift-ci-robot openshift-ci-robot added jira/severity-important Referenced Jira bug's severity is important for the branch this PR is targeting. jira/valid-reference Indicates that this PR references a valid Jira ticket of any type. jira/invalid-bug Indicates that a referenced Jira bug is invalid for the branch this PR is targeting. labels Mar 30, 2026
@openshift-ci-robot
Copy link
Copy Markdown

@ocp-sustaining-admins: This pull request references Jira Issue OCPBUGS-80562, which is invalid:

  • release note text must be set and not match the template OR release note type must be set to "Release Note Not Required". For more information you can reference the OpenShift Bug Process.
  • expected Jira Issue OCPBUGS-80562 to depend on a bug targeting a version in 4.21.0, 4.21.z and in one of the following states: VERIFIED, RELEASE PENDING, CLOSED (ERRATA), CLOSED (CURRENT RELEASE), CLOSED (DONE), CLOSED (DONE-ERRATA), but no dependents were found

Comment /jira refresh to re-evaluate validity if changes to the Jira bug are made, or edit the title of this pull request to link to a different bug.

The bug has been updated to refer to the pull request using the external bug tracker.

Details

In response to this:

This PR is part of an automated process.

The commands used to generate this PR were:

go get google.golang.org/grpc@v1.79.3 toolchain@none
go mod tidy
go mod vendor

A member of the Red Hat Openshift Sustaining Team will review the PR and take appropriate action.

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.

@coderabbitai
Copy link
Copy Markdown

coderabbitai bot commented Mar 30, 2026

Walkthrough

This pull request updates multiple Go module dependencies in go.mod, including upgrades to OpenTelemetry core components (v1.36.0 → v1.39.0), testify (v1.10.0 → v1.11.1), gRPC (v1.73.0 → v1.79.3), protobuf (v1.36.6 → v1.36.10), and several golang.org/x indirect dependencies.

Changes

Cohort / File(s) Summary
Go Module Dependencies
go.mod
Updated 13 direct and indirect dependency versions, including major upgrades to OpenTelemetry (v1.36.0 → v1.39.0), gRPC (v1.73.0 → v1.79.3), protobuf (v1.36.6 → v1.36.10), testify (v1.10.0 → v1.11.1), and golang.org/x/* utility modules.

Estimated code review effort

🎯 2 (Simple) | ⏱️ ~12 minutes

✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands and usage tips.

@openshift-ci openshift-ci bot requested review from gnufied and rhrmo March 30, 2026 19:17
@openshift-ci openshift-ci bot added the needs-ok-to-test Indicates a PR that requires an org member to verify it is safe to test. label Mar 30, 2026
@openshift-ci
Copy link
Copy Markdown

openshift-ci bot commented Mar 30, 2026

[APPROVALNOTIFIER] This PR is NOT APPROVED

This pull-request has been approved by: ocp-sustaining-admins
Once this PR has been reviewed and has the lgtm label, please assign tsmetana for approval. For more information see the Code Review Process.

The full list of commands accepted by this bot can be found here.

Details Needs approval from an approver in each of these files:

Approvers can indicate their approval by writing /approve in a comment
Approvers can cancel approval by writing /approve cancel in a comment

@openshift-ci
Copy link
Copy Markdown

openshift-ci bot commented Mar 30, 2026

Hi @ocp-sustaining-admins. Thanks for your PR.

I'm waiting for a openshift member to verify that this patch is reasonable to test. If it is, they should reply with /ok-to-test on its own line. Until that is done, I will not automatically test new commits in this PR, but the usual testing commands by org members will still work.

Regular contributors should join the org to skip this step.

Once the patch is verified, the new status will be reflected by the ok-to-test label.

I understand the commands that are listed here.

Details

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 kubernetes-sigs/prow repository.

@kunalmemane
Copy link
Copy Markdown
Member

@coderabbitai review

@coderabbitai
Copy link
Copy Markdown

coderabbitai bot commented Apr 8, 2026

✅ Actions performed

Review triggered.

Note: CodeRabbit is an incremental review system and does not re-review already reviewed commits. This command is applicable only when automatic reviews are paused.

Copy link
Copy Markdown

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 2

🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.

Inline comments:
In `@go.mod`:
- Line 24: Update the OpenTelemetry SDK version reference in go.mod from
go.opentelemetry.io/otel/sdk v1.39.0 to v1.40.0 (or later) to address
CVE-2026-24051, then run module update commands (e.g., go get
go.opentelemetry.io/otel/sdk@v1.40.0 and go mod tidy) to refresh go.sum and
vendor files; verify by running the test/build to ensure no breaking changes
from the sdk module update.
- Line 26: Upgrade to google.golang.org/grpc v1.79.3 requires targeted
compatibility validation: update module/go toolchain to Go 1.24+, then run full
build/tests; specifically inspect pkg/driver/driver.go server setup (e.g.,
NewDriver / RegisterGRPCServer or where grpc.NewServer and
grpc.DialOptions/interceptors/balancer are configured) to ensure custom
balancers implement the new ExitIdle() method, MetricsRecorder embeds
UnimplementedMetricsRecorder, mem.Reader usage is updated for struct changes,
and target URL validation/xDS behavior and authority selection still work; also
run integration tests against common clients/proxies to verify they do not send
non-canonical HTTP/2 :path values (CVE fix) and adjust any interceptor/option
usage accordingly before merging.
🪄 Autofix (Beta)

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: Organization UI

Review profile: CHILL

Plan: Pro

Run ID: 71c25116-773b-4e9b-8aa8-d51362742429

📥 Commits

Reviewing files that changed from the base of the PR and between a8ef205 and fa0ca83.

⛔ Files ignored due to path filters (287)
  • go.sum is excluded by !**/*.sum
  • vendor/github.com/stretchr/testify/assert/assertion_compare.go is excluded by !vendor/**, !**/vendor/**
  • vendor/github.com/stretchr/testify/assert/assertion_format.go is excluded by !vendor/**, !**/vendor/**
  • vendor/github.com/stretchr/testify/assert/assertion_forward.go is excluded by !vendor/**, !**/vendor/**
  • vendor/github.com/stretchr/testify/assert/assertion_order.go is excluded by !vendor/**, !**/vendor/**
  • vendor/github.com/stretchr/testify/assert/assertions.go is excluded by !vendor/**, !**/vendor/**
  • vendor/github.com/stretchr/testify/assert/doc.go is excluded by !vendor/**, !**/vendor/**
  • vendor/github.com/stretchr/testify/assert/http_assertions.go is excluded by !vendor/**, !**/vendor/**
  • vendor/github.com/stretchr/testify/assert/yaml/yaml_custom.go is excluded by !vendor/**, !**/vendor/**
  • vendor/github.com/stretchr/testify/assert/yaml/yaml_default.go is excluded by !vendor/**, !**/vendor/**
  • vendor/github.com/stretchr/testify/assert/yaml/yaml_fail.go is excluded by !vendor/**, !**/vendor/**
  • vendor/github.com/stretchr/testify/require/doc.go is excluded by !vendor/**, !**/vendor/**
  • vendor/github.com/stretchr/testify/require/require.go is excluded by !vendor/**, !**/vendor/**
  • vendor/github.com/stretchr/testify/require/require_forward.go is excluded by !vendor/**, !**/vendor/**
  • vendor/go.opentelemetry.io/auto/sdk/internal/telemetry/id.go is excluded by !vendor/**, !**/vendor/**
  • vendor/go.opentelemetry.io/auto/sdk/internal/telemetry/number.go is excluded by !vendor/**, !**/vendor/**
  • vendor/go.opentelemetry.io/auto/sdk/internal/telemetry/span.go is excluded by !vendor/**, !**/vendor/**
  • vendor/go.opentelemetry.io/auto/sdk/internal/telemetry/status.go is excluded by !vendor/**, !**/vendor/**
  • vendor/go.opentelemetry.io/auto/sdk/internal/telemetry/traces.go is excluded by !vendor/**, !**/vendor/**
  • vendor/go.opentelemetry.io/auto/sdk/internal/telemetry/value.go is excluded by !vendor/**, !**/vendor/**
  • vendor/go.opentelemetry.io/auto/sdk/span.go is excluded by !vendor/**, !**/vendor/**
  • vendor/go.opentelemetry.io/auto/sdk/tracer.go is excluded by !vendor/**, !**/vendor/**
  • vendor/go.opentelemetry.io/otel/.clomonitor.yml is excluded by !vendor/**, !**/vendor/**
  • vendor/go.opentelemetry.io/otel/.codespellignore is excluded by !vendor/**, !**/vendor/**
  • vendor/go.opentelemetry.io/otel/.golangci.yml is excluded by !vendor/**, !**/vendor/**
  • vendor/go.opentelemetry.io/otel/.lycheeignore is excluded by !vendor/**, !**/vendor/**
  • vendor/go.opentelemetry.io/otel/CHANGELOG.md is excluded by !vendor/**, !**/vendor/**
  • vendor/go.opentelemetry.io/otel/CODEOWNERS is excluded by !vendor/**, !**/vendor/**
  • vendor/go.opentelemetry.io/otel/CONTRIBUTING.md is excluded by !vendor/**, !**/vendor/**
  • vendor/go.opentelemetry.io/otel/LICENSE is excluded by !vendor/**, !**/vendor/**
  • vendor/go.opentelemetry.io/otel/Makefile is excluded by !vendor/**, !**/vendor/**
  • vendor/go.opentelemetry.io/otel/README.md is excluded by !vendor/**, !**/vendor/**
  • vendor/go.opentelemetry.io/otel/RELEASING.md is excluded by !vendor/**, !**/vendor/**
  • vendor/go.opentelemetry.io/otel/SECURITY-INSIGHTS.yml is excluded by !vendor/**, !**/vendor/**
  • vendor/go.opentelemetry.io/otel/VERSIONING.md is excluded by !vendor/**, !**/vendor/**
  • vendor/go.opentelemetry.io/otel/attribute/encoder.go is excluded by !vendor/**, !**/vendor/**
  • vendor/go.opentelemetry.io/otel/attribute/filter.go is excluded by !vendor/**, !**/vendor/**
  • vendor/go.opentelemetry.io/otel/attribute/hash.go is excluded by !vendor/**, !**/vendor/**
  • vendor/go.opentelemetry.io/otel/attribute/internal/attribute.go is excluded by !vendor/**, !**/vendor/**
  • vendor/go.opentelemetry.io/otel/attribute/internal/xxhash/xxhash.go is excluded by !vendor/**, !**/vendor/**
  • vendor/go.opentelemetry.io/otel/attribute/iterator.go is excluded by !vendor/**, !**/vendor/**
  • vendor/go.opentelemetry.io/otel/attribute/key.go is excluded by !vendor/**, !**/vendor/**
  • vendor/go.opentelemetry.io/otel/attribute/kv.go is excluded by !vendor/**, !**/vendor/**
  • vendor/go.opentelemetry.io/otel/attribute/set.go is excluded by !vendor/**, !**/vendor/**
  • vendor/go.opentelemetry.io/otel/attribute/type_string.go is excluded by !vendor/**, !**/vendor/**
  • vendor/go.opentelemetry.io/otel/attribute/value.go is excluded by !vendor/**, !**/vendor/**
  • vendor/go.opentelemetry.io/otel/baggage/baggage.go is excluded by !vendor/**, !**/vendor/**
  • vendor/go.opentelemetry.io/otel/codes/codes.go is excluded by !vendor/**, !**/vendor/**
  • vendor/go.opentelemetry.io/otel/dependencies.Dockerfile is excluded by !vendor/**, !**/vendor/**
  • vendor/go.opentelemetry.io/otel/internal/global/internal_logging.go is excluded by !vendor/**, !**/vendor/**
  • vendor/go.opentelemetry.io/otel/internal/global/meter.go is excluded by !vendor/**, !**/vendor/**
  • vendor/go.opentelemetry.io/otel/internal/global/trace.go is excluded by !vendor/**, !**/vendor/**
  • vendor/go.opentelemetry.io/otel/metric.go is excluded by !vendor/**, !**/vendor/**
  • vendor/go.opentelemetry.io/otel/metric/LICENSE is excluded by !vendor/**, !**/vendor/**
  • vendor/go.opentelemetry.io/otel/metric/config.go is excluded by !vendor/**, !**/vendor/**
  • vendor/go.opentelemetry.io/otel/propagation/baggage.go is excluded by !vendor/**, !**/vendor/**
  • vendor/go.opentelemetry.io/otel/propagation/propagation.go is excluded by !vendor/**, !**/vendor/**
  • vendor/go.opentelemetry.io/otel/propagation/trace_context.go is excluded by !vendor/**, !**/vendor/**
  • vendor/go.opentelemetry.io/otel/sdk/LICENSE is excluded by !vendor/**, !**/vendor/**
  • vendor/go.opentelemetry.io/otel/sdk/internal/x/features.go is excluded by !vendor/**, !**/vendor/**
  • vendor/go.opentelemetry.io/otel/sdk/internal/x/x.go is excluded by !vendor/**, !**/vendor/**
  • vendor/go.opentelemetry.io/otel/sdk/resource/builtin.go is excluded by !vendor/**, !**/vendor/**
  • vendor/go.opentelemetry.io/otel/sdk/resource/container.go is excluded by !vendor/**, !**/vendor/**
  • vendor/go.opentelemetry.io/otel/sdk/resource/env.go is excluded by !vendor/**, !**/vendor/**
  • vendor/go.opentelemetry.io/otel/sdk/resource/host_id.go is excluded by !vendor/**, !**/vendor/**
  • vendor/go.opentelemetry.io/otel/sdk/resource/host_id_bsd.go is excluded by !vendor/**, !**/vendor/**
  • vendor/go.opentelemetry.io/otel/sdk/resource/host_id_linux.go is excluded by !vendor/**, !**/vendor/**
  • vendor/go.opentelemetry.io/otel/sdk/resource/host_id_unsupported.go is excluded by !vendor/**, !**/vendor/**
  • vendor/go.opentelemetry.io/otel/sdk/resource/host_id_windows.go is excluded by !vendor/**, !**/vendor/**
  • vendor/go.opentelemetry.io/otel/sdk/resource/os.go is excluded by !vendor/**, !**/vendor/**
  • vendor/go.opentelemetry.io/otel/sdk/resource/os_release_unix.go is excluded by !vendor/**, !**/vendor/**
  • vendor/go.opentelemetry.io/otel/sdk/resource/os_unix.go is excluded by !vendor/**, !**/vendor/**
  • vendor/go.opentelemetry.io/otel/sdk/resource/os_unsupported.go is excluded by !vendor/**, !**/vendor/**
  • vendor/go.opentelemetry.io/otel/sdk/resource/process.go is excluded by !vendor/**, !**/vendor/**
  • vendor/go.opentelemetry.io/otel/sdk/resource/resource.go is excluded by !vendor/**, !**/vendor/**
  • vendor/go.opentelemetry.io/otel/sdk/trace/batch_span_processor.go is excluded by !vendor/**, !**/vendor/**
  • vendor/go.opentelemetry.io/otel/sdk/trace/doc.go is excluded by !vendor/**, !**/vendor/**
  • vendor/go.opentelemetry.io/otel/sdk/trace/id_generator.go is excluded by !vendor/**, !**/vendor/**
  • vendor/go.opentelemetry.io/otel/sdk/trace/internal/env/env.go is excluded by !vendor/**, !**/vendor/**
  • vendor/go.opentelemetry.io/otel/sdk/trace/internal/observ/batch_span_processor.go is excluded by !vendor/**, !**/vendor/**
  • vendor/go.opentelemetry.io/otel/sdk/trace/internal/observ/doc.go is excluded by !vendor/**, !**/vendor/**
  • vendor/go.opentelemetry.io/otel/sdk/trace/internal/observ/simple_span_processor.go is excluded by !vendor/**, !**/vendor/**
  • vendor/go.opentelemetry.io/otel/sdk/trace/internal/observ/tracer.go is excluded by !vendor/**, !**/vendor/**
  • vendor/go.opentelemetry.io/otel/sdk/trace/provider.go is excluded by !vendor/**, !**/vendor/**
  • vendor/go.opentelemetry.io/otel/sdk/trace/sampling.go is excluded by !vendor/**, !**/vendor/**
  • vendor/go.opentelemetry.io/otel/sdk/trace/simple_span_processor.go is excluded by !vendor/**, !**/vendor/**
  • vendor/go.opentelemetry.io/otel/sdk/trace/snapshot.go is excluded by !vendor/**, !**/vendor/**
  • vendor/go.opentelemetry.io/otel/sdk/trace/span.go is excluded by !vendor/**, !**/vendor/**
  • vendor/go.opentelemetry.io/otel/sdk/trace/span_limits.go is excluded by !vendor/**, !**/vendor/**
  • vendor/go.opentelemetry.io/otel/sdk/trace/tracer.go is excluded by !vendor/**, !**/vendor/**
  • vendor/go.opentelemetry.io/otel/sdk/version.go is excluded by !vendor/**, !**/vendor/**
  • vendor/go.opentelemetry.io/otel/semconv/v1.37.0/MIGRATION.md is excluded by !vendor/**, !**/vendor/**
  • vendor/go.opentelemetry.io/otel/semconv/v1.37.0/README.md is excluded by !vendor/**, !**/vendor/**
  • vendor/go.opentelemetry.io/otel/semconv/v1.37.0/attribute_group.go is excluded by !vendor/**, !**/vendor/**
  • vendor/go.opentelemetry.io/otel/semconv/v1.37.0/doc.go is excluded by !vendor/**, !**/vendor/**
  • vendor/go.opentelemetry.io/otel/semconv/v1.37.0/error_type.go is excluded by !vendor/**, !**/vendor/**
  • vendor/go.opentelemetry.io/otel/semconv/v1.37.0/exception.go is excluded by !vendor/**, !**/vendor/**
  • vendor/go.opentelemetry.io/otel/semconv/v1.37.0/otelconv/metric.go is excluded by !vendor/**, !**/vendor/**
  • vendor/go.opentelemetry.io/otel/semconv/v1.37.0/schema.go is excluded by !vendor/**, !**/vendor/**
  • vendor/go.opentelemetry.io/otel/trace/LICENSE is excluded by !vendor/**, !**/vendor/**
  • vendor/go.opentelemetry.io/otel/trace/auto.go is excluded by !vendor/**, !**/vendor/**
  • vendor/go.opentelemetry.io/otel/trace/config.go is excluded by !vendor/**, !**/vendor/**
  • vendor/go.opentelemetry.io/otel/trace/hex.go is excluded by !vendor/**, !**/vendor/**
  • vendor/go.opentelemetry.io/otel/trace/internal/telemetry/attr.go is excluded by !vendor/**, !**/vendor/**
  • vendor/go.opentelemetry.io/otel/trace/internal/telemetry/id.go is excluded by !vendor/**, !**/vendor/**
  • vendor/go.opentelemetry.io/otel/trace/internal/telemetry/value.go is excluded by !vendor/**, !**/vendor/**
  • vendor/go.opentelemetry.io/otel/trace/noop.go is excluded by !vendor/**, !**/vendor/**
  • vendor/go.opentelemetry.io/otel/trace/noop/noop.go is excluded by !vendor/**, !**/vendor/**
  • vendor/go.opentelemetry.io/otel/trace/span.go is excluded by !vendor/**, !**/vendor/**
  • vendor/go.opentelemetry.io/otel/trace/trace.go is excluded by !vendor/**, !**/vendor/**
  • vendor/go.opentelemetry.io/otel/trace/tracestate.go is excluded by !vendor/**, !**/vendor/**
  • vendor/go.opentelemetry.io/otel/version.go is excluded by !vendor/**, !**/vendor/**
  • vendor/go.opentelemetry.io/otel/versions.yaml is excluded by !vendor/**, !**/vendor/**
  • vendor/golang.org/x/net/html/escape.go is excluded by !vendor/**, !**/vendor/**
  • vendor/golang.org/x/net/html/parse.go is excluded by !vendor/**, !**/vendor/**
  • vendor/golang.org/x/net/html/render.go is excluded by !vendor/**, !**/vendor/**
  • vendor/golang.org/x/net/http2/config.go is excluded by !vendor/**, !**/vendor/**
  • vendor/golang.org/x/net/http2/config_go125.go is excluded by !vendor/**, !**/vendor/**
  • vendor/golang.org/x/net/http2/config_go126.go is excluded by !vendor/**, !**/vendor/**
  • vendor/golang.org/x/net/http2/frame.go is excluded by !vendor/**, !**/vendor/**
  • vendor/golang.org/x/net/http2/gotrack.go is excluded by !vendor/**, !**/vendor/**
  • vendor/golang.org/x/net/http2/http2.go is excluded by !vendor/**, !**/vendor/**
  • vendor/golang.org/x/net/http2/server.go is excluded by !vendor/**, !**/vendor/**
  • vendor/golang.org/x/net/http2/transport.go is excluded by !vendor/**, !**/vendor/**
  • vendor/golang.org/x/net/http2/writesched.go is excluded by !vendor/**, !**/vendor/**
  • vendor/golang.org/x/net/http2/writesched_priority_rfc7540.go is excluded by !vendor/**, !**/vendor/**
  • vendor/golang.org/x/net/http2/writesched_priority_rfc9218.go is excluded by !vendor/**, !**/vendor/**
  • vendor/golang.org/x/net/http2/writesched_roundrobin.go is excluded by !vendor/**, !**/vendor/**
  • vendor/golang.org/x/net/internal/httpcommon/request.go is excluded by !vendor/**, !**/vendor/**
  • vendor/golang.org/x/net/trace/events.go is excluded by !vendor/**, !**/vendor/**
  • vendor/golang.org/x/oauth2/deviceauth.go is excluded by !vendor/**, !**/vendor/**
  • vendor/golang.org/x/oauth2/oauth2.go is excluded by !vendor/**, !**/vendor/**
  • vendor/golang.org/x/oauth2/pkce.go is excluded by !vendor/**, !**/vendor/**
  • vendor/golang.org/x/oauth2/token.go is excluded by !vendor/**, !**/vendor/**
  • vendor/golang.org/x/oauth2/transport.go is excluded by !vendor/**, !**/vendor/**
  • vendor/golang.org/x/sys/plan9/pwd_plan9.go is excluded by !vendor/**, !**/vendor/**
  • vendor/golang.org/x/sys/unix/affinity_linux.go is excluded by !vendor/**, !**/vendor/**
  • vendor/golang.org/x/sys/unix/fdset.go is excluded by !vendor/**, !**/vendor/**
  • vendor/golang.org/x/sys/unix/ifreq_linux.go is excluded by !vendor/**, !**/vendor/**
  • vendor/golang.org/x/sys/unix/mkall.sh is excluded by !vendor/**, !**/vendor/**
  • vendor/golang.org/x/sys/unix/mkerrors.sh is excluded by !vendor/**, !**/vendor/**
  • vendor/golang.org/x/sys/unix/syscall_darwin.go is excluded by !vendor/**, !**/vendor/**
  • vendor/golang.org/x/sys/unix/syscall_linux.go is excluded by !vendor/**, !**/vendor/**
  • vendor/golang.org/x/sys/unix/syscall_netbsd.go is excluded by !vendor/**, !**/vendor/**
  • vendor/golang.org/x/sys/unix/syscall_solaris.go is excluded by !vendor/**, !**/vendor/**
  • vendor/golang.org/x/sys/unix/zerrors_linux.go is excluded by !vendor/**, !**/vendor/**
  • vendor/golang.org/x/sys/unix/zerrors_linux_386.go is excluded by !vendor/**, !**/vendor/**
  • vendor/golang.org/x/sys/unix/zerrors_linux_amd64.go is excluded by !vendor/**, !**/vendor/**
  • vendor/golang.org/x/sys/unix/zerrors_linux_arm.go is excluded by !vendor/**, !**/vendor/**
  • vendor/golang.org/x/sys/unix/zerrors_linux_arm64.go is excluded by !vendor/**, !**/vendor/**
  • vendor/golang.org/x/sys/unix/zerrors_linux_loong64.go is excluded by !vendor/**, !**/vendor/**
  • vendor/golang.org/x/sys/unix/zerrors_linux_mips.go is excluded by !vendor/**, !**/vendor/**
  • vendor/golang.org/x/sys/unix/zerrors_linux_mips64.go is excluded by !vendor/**, !**/vendor/**
  • vendor/golang.org/x/sys/unix/zerrors_linux_mips64le.go is excluded by !vendor/**, !**/vendor/**
  • vendor/golang.org/x/sys/unix/zerrors_linux_mipsle.go is excluded by !vendor/**, !**/vendor/**
  • vendor/golang.org/x/sys/unix/zerrors_linux_ppc.go is excluded by !vendor/**, !**/vendor/**
  • vendor/golang.org/x/sys/unix/zerrors_linux_ppc64.go is excluded by !vendor/**, !**/vendor/**
  • vendor/golang.org/x/sys/unix/zerrors_linux_ppc64le.go is excluded by !vendor/**, !**/vendor/**
  • vendor/golang.org/x/sys/unix/zerrors_linux_riscv64.go is excluded by !vendor/**, !**/vendor/**
  • vendor/golang.org/x/sys/unix/zerrors_linux_s390x.go is excluded by !vendor/**, !**/vendor/**
  • vendor/golang.org/x/sys/unix/zerrors_linux_sparc64.go is excluded by !vendor/**, !**/vendor/**
  • vendor/golang.org/x/sys/unix/zsyscall_linux.go is excluded by !vendor/**, !**/vendor/**
  • vendor/golang.org/x/sys/unix/zsyscall_solaris_amd64.go is excluded by !vendor/**, !**/vendor/**
  • vendor/golang.org/x/sys/unix/zsysnum_linux_386.go is excluded by !vendor/**, !**/vendor/**
  • vendor/golang.org/x/sys/unix/zsysnum_linux_amd64.go is excluded by !vendor/**, !**/vendor/**
  • vendor/golang.org/x/sys/unix/zsysnum_linux_arm.go is excluded by !vendor/**, !**/vendor/**
  • vendor/golang.org/x/sys/unix/zsysnum_linux_arm64.go is excluded by !vendor/**, !**/vendor/**
  • vendor/golang.org/x/sys/unix/zsysnum_linux_loong64.go is excluded by !vendor/**, !**/vendor/**
  • vendor/golang.org/x/sys/unix/zsysnum_linux_mips.go is excluded by !vendor/**, !**/vendor/**
  • vendor/golang.org/x/sys/unix/zsysnum_linux_mips64.go is excluded by !vendor/**, !**/vendor/**
  • vendor/golang.org/x/sys/unix/zsysnum_linux_mips64le.go is excluded by !vendor/**, !**/vendor/**
  • vendor/golang.org/x/sys/unix/zsysnum_linux_mipsle.go is excluded by !vendor/**, !**/vendor/**
  • vendor/golang.org/x/sys/unix/zsysnum_linux_ppc.go is excluded by !vendor/**, !**/vendor/**
  • vendor/golang.org/x/sys/unix/zsysnum_linux_ppc64.go is excluded by !vendor/**, !**/vendor/**
  • vendor/golang.org/x/sys/unix/zsysnum_linux_ppc64le.go is excluded by !vendor/**, !**/vendor/**
  • vendor/golang.org/x/sys/unix/zsysnum_linux_riscv64.go is excluded by !vendor/**, !**/vendor/**
  • vendor/golang.org/x/sys/unix/zsysnum_linux_s390x.go is excluded by !vendor/**, !**/vendor/**
  • vendor/golang.org/x/sys/unix/zsysnum_linux_sparc64.go is excluded by !vendor/**, !**/vendor/**
  • vendor/golang.org/x/sys/unix/ztypes_linux.go is excluded by !vendor/**, !**/vendor/**
  • vendor/golang.org/x/sys/unix/ztypes_linux_386.go is excluded by !vendor/**, !**/vendor/**
  • vendor/golang.org/x/sys/unix/ztypes_linux_amd64.go is excluded by !vendor/**, !**/vendor/**
  • vendor/golang.org/x/sys/unix/ztypes_linux_arm.go is excluded by !vendor/**, !**/vendor/**
  • vendor/golang.org/x/sys/unix/ztypes_linux_arm64.go is excluded by !vendor/**, !**/vendor/**
  • vendor/golang.org/x/sys/unix/ztypes_linux_loong64.go is excluded by !vendor/**, !**/vendor/**
  • vendor/golang.org/x/sys/unix/ztypes_linux_mips.go is excluded by !vendor/**, !**/vendor/**
  • vendor/golang.org/x/sys/unix/ztypes_linux_mips64.go is excluded by !vendor/**, !**/vendor/**
  • vendor/golang.org/x/sys/unix/ztypes_linux_mips64le.go is excluded by !vendor/**, !**/vendor/**
  • vendor/golang.org/x/sys/unix/ztypes_linux_mipsle.go is excluded by !vendor/**, !**/vendor/**
  • vendor/golang.org/x/sys/unix/ztypes_linux_ppc.go is excluded by !vendor/**, !**/vendor/**
  • vendor/golang.org/x/sys/unix/ztypes_linux_ppc64.go is excluded by !vendor/**, !**/vendor/**
  • vendor/golang.org/x/sys/unix/ztypes_linux_ppc64le.go is excluded by !vendor/**, !**/vendor/**
  • vendor/golang.org/x/sys/unix/ztypes_linux_riscv64.go is excluded by !vendor/**, !**/vendor/**
  • vendor/golang.org/x/sys/unix/ztypes_linux_s390x.go is excluded by !vendor/**, !**/vendor/**
  • vendor/golang.org/x/sys/unix/ztypes_linux_sparc64.go is excluded by !vendor/**, !**/vendor/**
  • vendor/golang.org/x/sys/unix/ztypes_netbsd_arm.go is excluded by !vendor/**, !**/vendor/**
  • vendor/golang.org/x/sys/windows/registry/zsyscall_windows.go is excluded by !vendor/**, !**/vendor/**
  • vendor/golang.org/x/sys/windows/syscall_windows.go is excluded by !vendor/**, !**/vendor/**
  • vendor/golang.org/x/sys/windows/types_windows.go is excluded by !vendor/**, !**/vendor/**
  • vendor/golang.org/x/sys/windows/zsyscall_windows.go is excluded by !vendor/**, !**/vendor/**
  • vendor/golang.org/x/term/term_windows.go is excluded by !vendor/**, !**/vendor/**
  • vendor/golang.org/x/term/terminal.go is excluded by !vendor/**, !**/vendor/**
  • vendor/golang.org/x/text/encoding/japanese/eucjp.go is excluded by !vendor/**, !**/vendor/**
  • vendor/golang.org/x/text/encoding/japanese/iso2022jp.go is excluded by !vendor/**, !**/vendor/**
  • vendor/golang.org/x/text/encoding/japanese/shiftjis.go is excluded by !vendor/**, !**/vendor/**
  • vendor/golang.org/x/text/encoding/korean/euckr.go is excluded by !vendor/**, !**/vendor/**
  • vendor/golang.org/x/text/encoding/simplifiedchinese/gbk.go is excluded by !vendor/**, !**/vendor/**
  • vendor/golang.org/x/text/encoding/simplifiedchinese/hzgb2312.go is excluded by !vendor/**, !**/vendor/**
  • vendor/golang.org/x/text/encoding/traditionalchinese/big5.go is excluded by !vendor/**, !**/vendor/**
  • vendor/golang.org/x/text/encoding/unicode/unicode.go is excluded by !vendor/**, !**/vendor/**
  • vendor/golang.org/x/text/unicode/bidi/core.go is excluded by !vendor/**, !**/vendor/**
  • vendor/golang.org/x/tools/go/ast/inspector/cursor.go is excluded by !vendor/**, !**/vendor/**
  • vendor/golang.org/x/tools/go/ast/inspector/inspector.go is excluded by !vendor/**, !**/vendor/**
  • vendor/golang.org/x/tools/go/ast/inspector/typeof.go is excluded by !vendor/**, !**/vendor/**
  • vendor/google.golang.org/grpc/CONTRIBUTING.md is excluded by !vendor/**, !**/vendor/**
  • vendor/google.golang.org/grpc/MAINTAINERS.md is excluded by !vendor/**, !**/vendor/**
  • vendor/google.golang.org/grpc/balancer/balancer.go is excluded by !vendor/**, !**/vendor/**
  • vendor/google.golang.org/grpc/balancer/endpointsharding/endpointsharding.go is excluded by !vendor/**, !**/vendor/**
  • vendor/google.golang.org/grpc/balancer/pickfirst/internal/internal.go is excluded by !vendor/**, !**/vendor/**
  • vendor/google.golang.org/grpc/balancer/pickfirst/pickfirst.go is excluded by !vendor/**, !**/vendor/**
  • vendor/google.golang.org/grpc/balancer/roundrobin/roundrobin.go is excluded by !vendor/**, !**/vendor/**
  • vendor/google.golang.org/grpc/balancer/subconn.go is excluded by !vendor/**, !**/vendor/**
  • vendor/google.golang.org/grpc/balancer_wrapper.go is excluded by !vendor/**, !**/vendor/**
  • vendor/google.golang.org/grpc/binarylog/grpc_binarylog_v1/binarylog.pb.go is excluded by !**/*.pb.go, !vendor/**, !**/vendor/**
  • vendor/google.golang.org/grpc/clientconn.go is excluded by !vendor/**, !**/vendor/**
  • vendor/google.golang.org/grpc/credentials/credentials.go is excluded by !vendor/**, !**/vendor/**
  • vendor/google.golang.org/grpc/credentials/tls.go is excluded by !vendor/**, !**/vendor/**
  • vendor/google.golang.org/grpc/dialoptions.go is excluded by !vendor/**, !**/vendor/**
  • vendor/google.golang.org/grpc/encoding/encoding.go is excluded by !vendor/**, !**/vendor/**
  • vendor/google.golang.org/grpc/encoding/gzip/gzip.go is excluded by !vendor/**, !**/vendor/**
  • vendor/google.golang.org/grpc/encoding/internal/internal.go is excluded by !vendor/**, !**/vendor/**
  • vendor/google.golang.org/grpc/encoding/proto/proto.go is excluded by !vendor/**, !**/vendor/**
  • vendor/google.golang.org/grpc/experimental/stats/metricregistry.go is excluded by !vendor/**, !**/vendor/**
  • vendor/google.golang.org/grpc/experimental/stats/metrics.go is excluded by !vendor/**, !**/vendor/**
  • vendor/google.golang.org/grpc/health/grpc_health_v1/health.pb.go is excluded by !**/*.pb.go, !vendor/**, !**/vendor/**
  • vendor/google.golang.org/grpc/health/grpc_health_v1/health_grpc.pb.go is excluded by !**/*.pb.go, !vendor/**, !**/vendor/**
  • vendor/google.golang.org/grpc/interceptor.go is excluded by !vendor/**, !**/vendor/**
  • vendor/google.golang.org/grpc/internal/balancer/gracefulswitch/gracefulswitch.go is excluded by !vendor/**, !**/vendor/**
  • vendor/google.golang.org/grpc/internal/balancer/weight/weight.go is excluded by !vendor/**, !**/vendor/**
  • vendor/google.golang.org/grpc/internal/buffer/unbounded.go is excluded by !vendor/**, !**/vendor/**
  • vendor/google.golang.org/grpc/internal/channelz/trace.go is excluded by !vendor/**, !**/vendor/**
  • vendor/google.golang.org/grpc/internal/envconfig/envconfig.go is excluded by !vendor/**, !**/vendor/**
  • vendor/google.golang.org/grpc/internal/envconfig/xds.go is excluded by !vendor/**, !**/vendor/**
  • vendor/google.golang.org/grpc/internal/experimental.go is excluded by !vendor/**, !**/vendor/**
  • vendor/google.golang.org/grpc/internal/grpcsync/callback_serializer.go is excluded by !vendor/**, !**/vendor/**
  • vendor/google.golang.org/grpc/internal/idle/idle.go is excluded by !vendor/**, !**/vendor/**
  • vendor/google.golang.org/grpc/internal/internal.go is excluded by !vendor/**, !**/vendor/**
  • vendor/google.golang.org/grpc/internal/resolver/delegatingresolver/delegatingresolver.go is excluded by !vendor/**, !**/vendor/**
  • vendor/google.golang.org/grpc/internal/resolver/dns/dns_resolver.go is excluded by !vendor/**, !**/vendor/**
  • vendor/google.golang.org/grpc/internal/stats/metrics_recorder_list.go is excluded by !vendor/**, !**/vendor/**
  • vendor/google.golang.org/grpc/internal/stats/stats.go is excluded by !vendor/**, !**/vendor/**
  • vendor/google.golang.org/grpc/internal/transport/client_stream.go is excluded by !vendor/**, !**/vendor/**
  • vendor/google.golang.org/grpc/internal/transport/controlbuf.go is excluded by !vendor/**, !**/vendor/**
  • vendor/google.golang.org/grpc/internal/transport/flowcontrol.go is excluded by !vendor/**, !**/vendor/**
  • vendor/google.golang.org/grpc/internal/transport/handler_server.go is excluded by !vendor/**, !**/vendor/**
  • vendor/google.golang.org/grpc/internal/transport/http2_client.go is excluded by !vendor/**, !**/vendor/**
  • vendor/google.golang.org/grpc/internal/transport/http2_server.go is excluded by !vendor/**, !**/vendor/**
  • vendor/google.golang.org/grpc/internal/transport/http_util.go is excluded by !vendor/**, !**/vendor/**
  • vendor/google.golang.org/grpc/internal/transport/server_stream.go is excluded by !vendor/**, !**/vendor/**
  • vendor/google.golang.org/grpc/internal/transport/transport.go is excluded by !vendor/**, !**/vendor/**
  • vendor/google.golang.org/grpc/mem/buffer_pool.go is excluded by !vendor/**, !**/vendor/**
  • vendor/google.golang.org/grpc/mem/buffer_slice.go is excluded by !vendor/**, !**/vendor/**
  • vendor/google.golang.org/grpc/mem/buffers.go is excluded by !vendor/**, !**/vendor/**
  • vendor/google.golang.org/grpc/picker_wrapper.go is excluded by !vendor/**, !**/vendor/**
  • vendor/google.golang.org/grpc/preloader.go is excluded by !vendor/**, !**/vendor/**
  • vendor/google.golang.org/grpc/resolver/resolver.go is excluded by !vendor/**, !**/vendor/**
  • vendor/google.golang.org/grpc/resolver_wrapper.go is excluded by !vendor/**, !**/vendor/**
  • vendor/google.golang.org/grpc/rpc_util.go is excluded by !vendor/**, !**/vendor/**
  • vendor/google.golang.org/grpc/server.go is excluded by !vendor/**, !**/vendor/**
  • vendor/google.golang.org/grpc/stats/stats.go is excluded by !vendor/**, !**/vendor/**
  • vendor/google.golang.org/grpc/stream.go is excluded by !vendor/**, !**/vendor/**
  • vendor/google.golang.org/grpc/version.go is excluded by !vendor/**, !**/vendor/**
  • vendor/google.golang.org/protobuf/encoding/protowire/wire.go is excluded by !vendor/**, !**/vendor/**
  • vendor/google.golang.org/protobuf/internal/editiondefaults/editions_defaults.binpb is excluded by !vendor/**, !**/vendor/**
  • vendor/google.golang.org/protobuf/internal/filedesc/desc.go is excluded by !vendor/**, !**/vendor/**
  • vendor/google.golang.org/protobuf/internal/filedesc/desc_init.go is excluded by !vendor/**, !**/vendor/**
  • vendor/google.golang.org/protobuf/internal/filedesc/desc_lazy.go is excluded by !vendor/**, !**/vendor/**
  • vendor/google.golang.org/protobuf/internal/filedesc/editions.go is excluded by !vendor/**, !**/vendor/**
  • vendor/google.golang.org/protobuf/internal/filedesc/presence.go is excluded by !vendor/**, !**/vendor/**
  • vendor/google.golang.org/protobuf/internal/genid/api_gen.go is excluded by !vendor/**, !**/vendor/**
  • vendor/google.golang.org/protobuf/internal/genid/descriptor_gen.go is excluded by !vendor/**, !**/vendor/**
  • vendor/google.golang.org/protobuf/internal/impl/codec_message_opaque.go is excluded by !vendor/**, !**/vendor/**
  • vendor/google.golang.org/protobuf/internal/impl/message_opaque.go is excluded by !vendor/**, !**/vendor/**
  • vendor/google.golang.org/protobuf/internal/impl/presence.go is excluded by !vendor/**, !**/vendor/**
  • vendor/google.golang.org/protobuf/internal/version/version.go is excluded by !vendor/**, !**/vendor/**
  • vendor/google.golang.org/protobuf/reflect/protoreflect/source_gen.go is excluded by !vendor/**, !**/vendor/**
  • vendor/google.golang.org/protobuf/types/descriptorpb/descriptor.pb.go is excluded by !**/*.pb.go, !vendor/**, !**/vendor/**
  • vendor/modules.txt is excluded by !vendor/**, !**/vendor/**
📒 Files selected for processing (1)
  • go.mod

golang.org/x/sys v0.33.0
google.golang.org/grpc v1.73.0
google.golang.org/protobuf v1.36.6
go.opentelemetry.io/otel/sdk v1.39.0
Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue | 🔴 Critical

🧩 Analysis chain

🏁 Script executed:

#!/bin/bash
# Description: Verify the OTel SDK vulnerability and check for secure versions

# Check the vulnerability details from GitHub Security Advisory
echo "=== Checking GHSA-9h8m-3fm2-qjrq details ==="
gh api graphql -f query='
{
  securityAdvisory(ghsaId: "GHSA-9h8m-3fm2-qjrq") {
    summary
    description
    severity
    publishedAt
    withdrawnAt
    vulnerabilities(first: 5) {
      nodes {
        package {
          name
        }
        vulnerableVersionRange
        firstPatchedVersion {
          identifier
        }
      }
    }
  }
}'

echo ""
echo "=== Checking available go.opentelemetry.io/otel/sdk versions ==="
curl -s 'https://proxy.golang.org/go.opentelemetry.io/otel/sdk/@v/list' | tail -20

echo ""
echo "=== Checking Go vulnerability database for GO-2026-4394 ==="
curl -s 'https://vuln.go.dev/ID/GO-2026-4394.json' || echo "Vulnerability entry not found or not accessible"

Repository: openshift/aws-ebs-csi-driver

Length of output: 1817


🌐 Web query:

GO-2026-4394 OpenTelemetry vulnerability

💡 Result:

GO-2026-4394 (CVE-2026-24051 / GHSA-9h8m-3fm2-qjrq) is a local arbitrary code execution issue in the OpenTelemetry Go SDK on macOS/Darwin: the SDK’s Darwin host ID resource detection runs the ioreg command via PATH lookup, so an attacker who can influence PATH can cause execution of a malicious ioreg. (github.com)

  • Affected module / versions: go.opentelemetry.io/otel/sdk >= 1.21.0 and <= 1.39.0. (pkg.go.dev)
  • Fix: upgrade to v1.40.0 or later (the patch changes the code to use a full path for ioreg). (github.com)

What to do

  • In your Go module, upgrade:
    • go get go.opentelemetry.io/otel/sdk@v1.40.0 (or newer), then go mod tidy. (pkg.go.dev)

Citations:


🌐 Web query:

GHSA-9h8m-3fm2-qjrq security advisory

💡 Result:

GHSA-9h8m-3fm2-qjrq is a GitHub Security Advisory for OpenTelemetry Go SDK (go.opentelemetry.io/otel/sdk) tracked as CVE-2026-24051: on macOS/Darwin, host resource detection executes the ioreg command using the system PATH, enabling PATH hijacking that can lead to local arbitrary code execution in the application’s context. (nvd.nist.gov)

  • Affected versions: go.opentelemetry.io/otel/sdk >= 1.21.0 and < 1.40.0 (NVD describes the vulnerable range as v1.20.0–1.39.0). (test.osv.dev)
  • Fixed version: 1.40.0 (upgrade to >= 1.40.0). (test.osv.dev)
  • Severity (GitHub CNA CVSS v3.1): 7.0 HIGH (AV:L/AC:H/PR:L/UI:N/S:U/C:H/I:H/A:H). (nvd.nist.gov)

Sources:
[1] (test.osv.dev) (GO-2026-4394 / OSV entry; affected & fixed versions)
[2] (nvd.nist.gov) (NVD CVE-2026-24051 details; description & CVSS)

Citations:


🌐 Web query:

go.opentelemetry.io/otel/sdk v1.39.0 security vulnerability

💡 Result:

go.opentelemetry.io/otel/sdk v1.39.0 is vulnerable: it falls in the affected range for CVE-2026-24051 (aka GHSA-9h8m-3fm2-qjrq, GO-2026-4394) >= 1.21.0 and < 1.40.0. The issue is a PATH hijacking / untrusted search path problem on macOS/Darwin, where resource detection runs the ioreg command via the system search path; a local attacker who can influence PATH may achieve arbitrary code execution in the app’s context. [1][2]

Fix: upgrade to v1.40.0 or later (patched in 1.40.0). Example:

go get go.opentelemetry.io/otel/sdk@v1.40.0

[1][2][3]

Sources: [1] GitHub Advisory (GHSA) [2] Go vuln database report (pkg.go.dev) [3] GitLab advisory database entry.


🌐 Web query:

CVE-2026-33186 gRPC vulnerability

💡 Result:

CVE-2026-33186 (gRPC-Go / google.golang.org/grpc) is a critical authorization-bypass caused by improper validation of the HTTP/2 :path pseudo-header: gRPC-Go would route requests whose :path omits the required leading / (e.g., Service/Method), but path-based authorization interceptors could evaluate the non-canonical method string—so canonical “deny” rules (that start with /) may not match, enabling bypass when a fallback allow exists. CVSS v3.1: 9.1 (Critical). [1][2]

  • Affected: gRPC-Go versions < 1.79.3 [1][2]
  • Exploitation requires: an attacker able to send raw HTTP/2 frames with a malformed :path directly to the gRPC server (i.e., not all client paths can produce this). [1][3]
  • Fix: upgrade to gRPC-Go v1.79.3 or newer; the patch rejects :path values not starting with / (returns codes.Unimplemented). [1][2]
  • Workarounds (if you can’t upgrade immediately): add an outermost interceptor to validate info.FullMethod starts with /, enforce strict HTTP/2 pseudo-header handling in proxies/LBs, and prefer default-deny authz policies. [1][3]

Key dates: GitHub advisory published March 17, 2026; Ubuntu lists CVE publication March 20, 2026. [1][3]

Sources:
[1] GitHub Security Advisory (GHSA-p77j-4mvh-x3m3) for grpc-go
[2] OSV / Go vuln entry (GO-2026-4762)
[3] Ubuntu CVE page for CVE-2026-33186


Upgrade OpenTelemetry SDK to v1.40.0 to fix CVE-2026-24051.

The PR introduces go.opentelemetry.io/otel/sdk v1.39.0, which contains CVE-2026-24051 (GHSA-9h8m-3fm2-qjrq, GO-2026-4394)—a HIGH severity local arbitrary code execution vulnerability on macOS/Darwin via PATH hijacking in host resource detection. Upgrade to v1.40.0 or later, where this vulnerability is patched.

🧰 Tools
🪛 OSV Scanner (2.3.5)

[HIGH] 24-24: go.opentelemetry.io/otel/sdk 1.39.0: OpenTelemetry Go SDK Vulnerable to Arbitrary Code Execution via PATH Hijacking in go.opentelemetry.io/otel/sdk

(GO-2026-4394)


[HIGH] 24-24: go.opentelemetry.io/otel/sdk 1.39.0: OpenTelemetry Go SDK Vulnerable to Arbitrary Code Execution via PATH Hijacking

(GHSA-9h8m-3fm2-qjrq)

🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@go.mod` at line 24, Update the OpenTelemetry SDK version reference in go.mod
from go.opentelemetry.io/otel/sdk v1.39.0 to v1.40.0 (or later) to address
CVE-2026-24051, then run module update commands (e.g., go get
go.opentelemetry.io/otel/sdk@v1.40.0 and go mod tidy) to refresh go.sum and
vendor files; verify by running the test/build to ensure no breaking changes
from the sdk module update.

google.golang.org/protobuf v1.36.6
go.opentelemetry.io/otel/sdk v1.39.0
golang.org/x/sys v0.39.0
google.golang.org/grpc v1.79.3
Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue | 🔴 Critical

🧩 Analysis chain

🏁 Script executed:

#!/bin/bash
# Description: Verify CVE-2026-33186 and check for gRPC breaking changes

echo "=== Checking CVE-2026-33186 in NVD ==="
curl -s "https://services.nvd.nist.gov/rest/json/cves/2.0?cveId=CVE-2026-33186" | jq -r '.vulnerabilities[0].cve | {id: .id, description: .descriptions[0].value, published: .published, references: .references[].url}' || echo "CVE not found or not accessible"

echo ""
echo "=== Checking GitHub Security Advisories for google.golang.org/grpc ==="
gh api graphql -f query='
{
  securityVulnerabilities(first: 10, ecosystem: GO, package: "google.golang.org/grpc") {
    nodes {
      advisory {
        ghsaId
        summary
        severity
        publishedAt
        identifiers {
          type
          value
        }
      }
      vulnerableVersionRange
      firstPatchedVersion {
        identifier
      }
    }
  }
}' | jq '.data.securityVulnerabilities.nodes[] | select(.advisory.identifiers[]? | select(.type == "CVE" and .value == "CVE-2026-33186"))'

echo ""
echo "=== Checking gRPC release notes for breaking changes v1.73.0 to v1.79.3 ==="
for version in 1.74.0 1.75.0 1.76.0 1.77.0 1.78.0 1.79.0 1.79.1 1.79.2 1.79.3; do
  echo "--- v${version} ---"
  curl -s "https://api.github.com/repos/grpc/grpc-go/releases/tags/v${version}" | jq -r '.body' | grep -iE "(breaking|deprecat|remov|incompatib)" | head -5 || echo "No breaking changes mentioned"
done

Repository: openshift/aws-ebs-csi-driver

Length of output: 1817


🌐 Web query:

CVE-2026-33186 google grpc vulnerability

💡 Result:

CVE-2026-33186 (Google gRPC / gRPC-Go) is a critical authorization-bypass bug in gRPC-Go (google.golang.org/grpc) affecting versions < 1.79.3. It stems from improper validation of the HTTP/2 :path pseudo-header: the server could route requests whose :path omits the required leading slash (e.g., Service/Method instead of /Service/Method), but path-based authorization interceptors (including google.golang.org/grpc/authz) may evaluate the non-canonical path string—so deny rules written for canonical paths don’t match, and a fallback allow rule can let the request through. An attacker needs the ability to send raw/malformed HTTP/2 frames to the gRPC server. [1][2]

Who is vulnerable (key conditions):

  • You run a gRPC-Go server using path-based auth (e.g., grpc/authz RBAC, or custom logic relying on info.FullMethod / grpc.Method(ctx)), and
  • Your policy uses specific deny rules for canonical paths (with /...) but otherwise defaults to allow. [1][2]

Fix:

  • Upgrade to gRPC-Go v1.79.3 or newer (patched version). The fix rejects any request whose :path doesn’t start with / (returns codes.Unimplemented). [1][2][3]

Mitigations if you can’t upgrade immediately:

  • Add an outer validating interceptor that rejects malformed info.FullMethod values (missing leading /).
  • Enforce/normalize strict HTTP/2 pseudo-header handling at a proxy/LB.
  • Move to a default-deny authorization posture. [1][3]

Severity (commonly reported): CVSS v3.1 base 9.1 (Critical). [1][2]

References: GitHub Security Advisory for grpc-go [1], Ubuntu CVE entry (includes impact and fixed version) [2], Snyk advisory summary and remediation [3].

[1] (github.com)
[2] (ubuntu.com)
[3] (security.snyk.io)

Citations:


🌐 Web query:

gRPC v1.79.3 release notes breaking changes

💡 Result:

gRPC-Go v1.79.3 release notes list no explicit API-breaking changes; the release is a security/behavioral change:

  • Server now strictly validates incoming HTTP/2 :path: requests with a non-canonical path (notably missing the leading /) are immediately rejected with Unimplemented. This closes an authorization-bypass where malformed :path could bypass path-based “deny” rules in interceptors such as grpc/authz. This can be a breaking behavioral change if any client/proxy in your environment sends such malformed :path headers. [1][2]

Sources: [1] gRPC-Go v1.79.3 GitHub release notes, [2] PR #8981 (details of the change).


🌐 Web query:

google.golang.org/grpc v1.73.0 to v1.79.3 compatibility breaking changes

💡 Result:

Notable compatibility / potentially breaking changes when upgrading google.golang.org/grpc from v1.73.0 → v1.79.3 (grouped by release):

  • v1.74.2

    • balancer.Balancer interface change: adds ExitIdle() as a required method (previously optional), which can break custom balancer implementations. [1]
    • xDS env var removed: GRPC_EXPERIMENTAL_ENABLE_LEAST_REQUEST removal means least-request can no longer be disabled via that env var. [1]
    • Server behavior: grpc-timeout: 0 is allowed again (restores pre-v1.73.0 behavior). If you relied on v1.73.0 rejecting it, behavior changes. [1]
  • v1.75.0

    • xDS env var removed: GRPC_EXPERIMENTAL_XDS_FALLBACK removed; fallback can no longer be disabled. [2]
    • Stats API/behavior: introduces DelayedPickComplete (alias of PickerUpdated) and changes emission semantics; notes PickerUpdated will be deleted in a future release (risk for code referencing it). [2]
    • Authority selection behavior: grpc.WithAuthority now has highest priority over credentials’ authority override. [2]
  • v1.76.0

    • Build-breaking dependency change: minimum supported Go version is now 1.24. [3]
  • v1.77.0

    • API change: mem.Reader changed from an interface to a struct (can break code that implemented/depended on the interface type). [4]
    • Behavior change: removal of the env var that enabled switching back to the old pick_first (GRPC_EXPERIMENTAL_ENABLE_NEW_PICK_FIRST=false). [4]
  • v1.78.0

    • Target URL validation tighter: rejects target URLs with unbracketed colons in the hostname (aligned with Go 1.26+ behavior). [5]
    • Transport behavior: returns Unknown on malformed grpc-status. [5]
    • xDS resolver behavior changes around route resources / virtual host matching and error handling. [5]
  • v1.79.0

    • API change (experimental/stats): MetricsRecorder implementations must embed UnimplementedMetricsRecorder (breaks existing implementations). [6]
    • Behavior change (balancer/weightedtarget): stops handling Addresses and only handles Endpoints in resolver updates (can break custom resolvers/balancers that relied on Addresses). [6]
  • v1.79.3

    • Security hardening behavior: requests with a non-canonical :path (e.g., missing leading /) are now rejected with Unimplemented (could break malformed/non-compliant clients/proxies). [7]

Sources (release notes):
[1] (github.com) (v1.74.2)
[2] (github.com) (v1.75.0)
[3] (github.com) (v1.76.0)
[4] (github.com) (v1.77.0)
[5] (github.com) (v1.78.0)
[6] (github.com) (v1.79.0)
[7] (github.com) (v1.79.3)

Citations:


Ensure compatibility testing for gRPC v1.79.3 upgrade; multiple breaking changes between v1.73.0 and v1.79.3 require validation.

CVE-2026-33186 is confirmed (CVSS 9.1, critical authorization-bypass in HTTP/2 :path validation) and v1.79.3 is the fix. However, the upgrade spans multiple versions with significant breaking/behavioral changes that must be tested:

  • v1.74.2: balancer.Balancer interface now requires ExitIdle() method (breaks custom balancer implementations)
  • v1.75.0: Stats API changes; authority selection behavior changes
  • v1.76.0: Go 1.24 minimum required (verify your build environment supports this)
  • v1.77.0: mem.Reader changed from interface to struct
  • v1.78.0: Stricter target URL validation; xDS resolver behavior changes
  • v1.79.0: MetricsRecorder implementations must now embed UnimplementedMetricsRecorder
  • v1.79.3: Rejects non-canonical HTTP/2 :path (security fix; verify clients/proxies don't send malformed paths)

Before merging, validate that custom gRPC server configuration in pkg/driver/driver.go (interceptors, options, balancers) works with all these changes, and confirm your build environment supports Go 1.24+.

🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@go.mod` at line 26, Upgrade to google.golang.org/grpc v1.79.3 requires
targeted compatibility validation: update module/go toolchain to Go 1.24+, then
run full build/tests; specifically inspect pkg/driver/driver.go server setup
(e.g., NewDriver / RegisterGRPCServer or where grpc.NewServer and
grpc.DialOptions/interceptors/balancer are configured) to ensure custom
balancers implement the new ExitIdle() method, MetricsRecorder embeds
UnimplementedMetricsRecorder, mem.Reader usage is updated for struct changes,
and target URL validation/xDS behavior and authority selection still work; also
run integration tests against common clients/proxies to verify they do not send
non-canonical HTTP/2 :path values (CVE fix) and adjust any interceptor/option
usage accordingly before merging.

@shannon
Copy link
Copy Markdown

shannon commented Apr 11, 2026

/ok-to-test

@openshift-ci openshift-ci bot added ok-to-test Indicates a non-member PR verified by an org member that is safe to test. and removed needs-ok-to-test Indicates a PR that requires an org member to verify it is safe to test. labels Apr 11, 2026
@openshift-ci
Copy link
Copy Markdown

openshift-ci bot commented Apr 11, 2026

@ocp-sustaining-admins: The following tests failed, say /retest to rerun all failed tests or /retest-required to rerun all mandatory failed tests:

Test name Commit Details Required Rerun command
ci/prow/e2e-aws-ovn-upgrade fa0ca83 link true /test e2e-aws-ovn-upgrade
ci/prow/verify-deps fa0ca83 link true /test verify-deps
ci/prow/verify-commits fa0ca83 link true /test verify-commits
ci/prow/verify fa0ca83 link true /test verify
ci/prow/images fa0ca83 link true /test images
ci/prow/e2e-aws-csi fa0ca83 link true /test e2e-aws-csi

Full PR test history. Your PR dashboard.

Details

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 kubernetes-sigs/prow repository. I understand the commands that are listed here.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

jira/invalid-bug Indicates that a referenced Jira bug is invalid for the branch this PR is targeting. jira/severity-important Referenced Jira bug's severity is important for the branch this PR is targeting. jira/valid-reference Indicates that this PR references a valid Jira ticket of any type. ok-to-test Indicates a non-member PR verified by an org member that is safe to test.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants