Skip to content
This repository was archived by the owner on Jun 5, 2026. It is now read-only.

fix(security/unknown): update module google.golang.org/grpc to v1.79.3 [security]#313

Closed
renovate-sh-app[bot] wants to merge 1 commit into
mainfrom
renovate/go-google.golang.org-grpc-vulnerability
Closed

fix(security/unknown): update module google.golang.org/grpc to v1.79.3 [security]#313
renovate-sh-app[bot] wants to merge 1 commit into
mainfrom
renovate/go-google.golang.org-grpc-vulnerability

Conversation

@renovate-sh-app
Copy link
Copy Markdown
Contributor

@renovate-sh-app renovate-sh-app Bot commented Mar 19, 2026

This PR contains the following updates:

Package Change Age Confidence
google.golang.org/grpc v1.56.3v1.79.3 age confidence

gRPC-Go has an authorization bypass via missing leading slash in :path

CVE-2026-33186 / GHSA-p77j-4mvh-x3m3 / GO-2026-4762

More information

Details

Impact

What kind of vulnerability is it? Who is impacted?

It is an Authorization Bypass resulting from Improper Input Validation of the HTTP/2 :path pseudo-header.

The gRPC-Go server was too lenient in its routing logic, accepting requests where the :path omitted the mandatory leading slash (e.g., Service/Method instead of /Service/Method). While the server successfully routed these requests to the correct handler, authorization interceptors (including the official grpc/authz package) evaluated the raw, non-canonical path string. Consequently, "deny" rules defined using canonical paths (starting with /) failed to match the incoming request, allowing it to bypass the policy if a fallback "allow" rule was present.

Who is impacted?
This affects gRPC-Go servers that meet both of the following criteria:

  1. They use path-based authorization interceptors, such as the official RBAC implementation in google.golang.org/grpc/authz or custom interceptors relying on info.FullMethod or grpc.Method(ctx).
  2. Their security policy contains specific "deny" rules for canonical paths but allows other requests by default (a fallback "allow" rule).

The vulnerability is exploitable by an attacker who can send raw HTTP/2 frames with malformed :path headers directly to the gRPC server.

Patches

Has the problem been patched? What versions should users upgrade to?

Yes, the issue has been patched. The fix ensures that any request with a :path that does not start with a leading slash is immediately rejected with a codes.Unimplemented error, preventing it from reaching authorization interceptors or handlers with a non-canonical path string.

Users should upgrade to the following versions (or newer):

  • v1.79.3
  • The latest master branch.

It is recommended that all users employing path-based authorization (especially grpc/authz) upgrade as soon as the patch is available in a tagged release.

Workarounds

Is there a way for users to fix or remediate the vulnerability without upgrading?

While upgrading is the most secure and recommended path, users can mitigate the vulnerability using one of the following methods:

1. Use a Validating Interceptor (Recommended Mitigation)

Add an "outermost" interceptor to your server that validates the path before any other authorization logic runs:

func pathValidationInterceptor(ctx context.Context, req any, info *grpc.UnaryServerInfo, handler grpc.UnaryHandler) (any, error) {
    if info.FullMethod == "" || info.FullMethod[0] != '/' {
        return nil, status.Errorf(codes.Unimplemented, "malformed method name")
    }   
    return handler(ctx, req)
}

// Ensure this is the FIRST interceptor in your chain
s := grpc.NewServer(
    grpc.ChainUnaryInterceptor(pathValidationInterceptor, authzInterceptor),
)
2. Infrastructure-Level Normalization

If your gRPC server is behind a reverse proxy or load balancer (such as Envoy, NGINX, or an L7 Cloud Load Balancer), ensure it is configured to enforce strict HTTP/2 compliance for pseudo-headers and reject or normalize requests where the :path header does not start with a leading slash.

3. Policy Hardening

Switch to a "default deny" posture in your authorization policies (explicitly listing all allowed paths and denying everything else) to reduce the risk of bypasses via malformed inputs.

Severity

  • CVSS Score: 9.1 / 10 (Critical)
  • Vector String: CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:N

References

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


Authorization bypass in gRPC-Go via missing leading slash in :path in google.golang.org/grpc

CVE-2026-33186 / GHSA-p77j-4mvh-x3m3 / GO-2026-4762

More information

Details

Authorization bypass in gRPC-Go via missing leading slash in :path in google.golang.org/grpc

Severity

Unknown

References

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


Release Notes

grpc/grpc-go (google.golang.org/grpc)

v1.79.3

Compare Source

v1.79.2

Compare Source

v1.79.1

Compare Source

v1.79.0

Compare Source

v1.78.0

Compare Source

v1.77.0

Compare Source

v1.76.0

Compare Source

v1.75.1

Compare Source

v1.75.0

Compare Source

v1.74.3

Compare Source

v1.74.2

Compare Source

v1.74.1

Compare Source

v1.74.0

Compare Source

v1.73.1

Compare Source

v1.73.0

Compare Source

v1.72.3

Compare Source

v1.72.2

Compare Source

v1.72.1

Compare Source

v1.72.0

Compare Source

v1.71.3

Compare Source

v1.71.2

Compare Source

v1.71.1

Compare Source

v1.71.0

Compare Source

v1.70.0

Compare Source

v1.69.4

Compare Source

v1.69.2

Compare Source

v1.69.0

Compare Source

v1.68.2

Compare Source

v1.68.1

Compare Source

v1.68.0

Compare Source

v1.67.3

Compare Source

v1.67.2

Compare Source

v1.67.1

Compare Source

v1.67.0

Compare Source

v1.66.3

Compare Source

v1.66.2

Compare Source

v1.66.1

Compare Source

v1.66.0

Compare Source

v1.65.1

Compare Source

v1.65.0

Compare Source

v1.64.1

Compare Source

v1.64.0

Compare Source

v1.63.3

Compare Source

v1.63.2

Compare Source

v1.63.1

Compare Source

v1.63.0

Compare Source

v1.62.2

Compare Source

v1.62.1

Compare Source

v1.62.0

Compare Source

v1.61.2

Compare Source

v1.61.1

Compare Source

v1.61.0

Compare Source

v1.60.1

Compare Source

v1.60.0

Compare Source

v1.59.0

Compare Source

v1.58.3

Compare Source

v1.58.2

Compare Source

v1.58.1

Compare Source

v1.58.0

Compare Source

v1.57.2

Compare Source

v1.57.1

Compare Source

v1.57.0

Compare Source


Configuration

📅 Schedule: (UTC)

  • Branch creation
    • ""
  • 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 these updates 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

renovate-sh-app Bot commented Mar 19, 2026

⚠️ Artifact update problem

Renovate failed to update an artifact related to this branch. You probably do not want to merge this PR as-is.

♻ Renovate will retry this branch, including artifacts, only when one of the following happens:

  • any of the package files in this branch needs updating, or
  • the branch becomes conflicted, or
  • you click the rebase/retry checkbox if found above, or
  • you rename this PR's title to start with "rebase!" to trigger it manually

The artifact failure details are included below:

File name: go.sum
Command failed: go mod tidy
go: downloading github.com/alecthomas/repr v0.2.0
go: downloading golang.org/x/term v0.38.0
go: downloading go.opentelemetry.io/otel/exporters/stdout/stdoutmetric v1.29.0
go: downloading gonum.org/v1/gonum v0.16.0
go: downloading github.com/rogpeppe/go-internal v1.14.1
go: downloading github.com/Microsoft/go-winio v0.6.2
go: downloading github.com/GoogleCloudPlatform/opentelemetry-operations-go/internal/cloudmock v0.50.0
go: downloading github.com/google/martian/v3 v3.3.3
go: downloading github.com/envoyproxy/go-control-plane/ratelimit v0.1.0
go: downloading cloud.google.com/go/logging v1.13.0
go: downloading cloud.google.com/go/trace v1.11.5
go: finding module for package golang.org/x/tools/godoc/vfs/httpfs
go: finding module for package github.com/prometheus/common/promlog
go: finding module for package golang.org/x/tools/godoc/vfs/mapfs
go: downloading github.com/prometheus/common v0.67.5
go: found golang.org/x/tools/godoc/vfs/httpfs in golang.org/x/tools/godoc v0.1.0-deprecated
go: found golang.org/x/tools/godoc/vfs/mapfs in golang.org/x/tools/godoc v0.1.0-deprecated
go: finding module for package github.com/prometheus/common/promlog
go: github.com/grafana/cortex-tools/pkg/rules imports
	github.com/grafana/loki/pkg/ruler imports
	github.com/grafana/loki/pkg/util/build imports
	github.com/prometheus/prometheus/web/api/v1 tested by
	github.com/prometheus/prometheus/web/api/v1.test imports
	github.com/prometheus/common/promlog: module github.com/prometheus/common@latest found (v0.67.5), but does not contain package github.com/prometheus/common/promlog

@renovate-sh-app renovate-sh-app Bot force-pushed the renovate/go-google.golang.org-grpc-vulnerability branch from 9392efa to 18fcc43 Compare March 19, 2026 16:05
@renovate-sh-app renovate-sh-app Bot changed the title chore(deps): update module google.golang.org/grpc to v1.79.3 [security] chore(deps): update module google.golang.org/grpc to v1.79.3 [security] - autoclosed May 14, 2026
@renovate-sh-app renovate-sh-app Bot closed this May 14, 2026
@renovate-sh-app renovate-sh-app Bot deleted the renovate/go-google.golang.org-grpc-vulnerability branch May 14, 2026 10:06
…3 [security]

| datasource | package                | from    | to      |
| ---------- | ---------------------- | ------- | ------- |
| go         | google.golang.org/grpc | v1.56.3 | v1.79.3 |


Signed-off-by: renovate-sh-app[bot] <219655108+renovate-sh-app[bot]@users.noreply.github.com>
@renovate-sh-app renovate-sh-app Bot changed the title chore(deps): update module google.golang.org/grpc to v1.79.3 [security] - autoclosed fix(security/unknown): update module google.golang.org/grpc to v1.79.3 [security] May 15, 2026
@renovate-sh-app renovate-sh-app Bot reopened this May 15, 2026
@renovate-sh-app renovate-sh-app Bot force-pushed the renovate/go-google.golang.org-grpc-vulnerability branch 2 times, most recently from 18fcc43 to 6620beb Compare May 15, 2026 16:08
@phlope phlope closed this May 20, 2026
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant