Resolve GHSA-p77j-4mvh-x3m3 by bumping grpc-go in go.mod and documenting reachability#149
Open
Resolve GHSA-p77j-4mvh-x3m3 by bumping grpc-go in go.mod and documenting reachability#149
Conversation
Copilot
AI
changed the title
[WIP] Fix authorization bypass in gRPC-Go due to missing leading slash
Resolve GHSA-p77j-4mvh-x3m3 by confirming grpc-go is pinned to v1.79.3 and documenting reachability
Apr 21, 2026
bcho
requested changes
Apr 21, 2026
Agent-Logs-Url: https://github.com/Azure/AKSFlexNode/sessions/205cecaf-d33f-4da8-a6bb-2f2b45efe5fa Co-authored-by: bcho <1975118+bcho@users.noreply.github.com>
Contributor
Author
Updated in commit Warning Firewall rules blocked me from connecting to one or more addresses (expand for details)I tried to connect to the following addresses, but was blocked by firewall rules:
If you need me to access, download, or install something from one of these locations, you can either:
|
Copilot
AI
changed the title
Resolve GHSA-p77j-4mvh-x3m3 by confirming grpc-go is pinned to v1.79.3 and documenting reachability
Resolve GHSA-p77j-4mvh-x3m3 by bumping grpc-go in go.mod and documenting reachability
Apr 21, 2026
bcho
approved these changes
Apr 21, 2026
Contributor
There was a problem hiding this comment.
Pull request overview
Updates the repo’s Go module dependencies to address GHSA-p77j-4mvh-x3m3 (grpc-go) and refreshes the resolved module metadata.
Changes:
- Bumped
google.golang.org/grpctov1.80.0(and updated related protobuf/genproto versions). - Updated
go.sumentries to reflect the new resolved versions.
Reviewed changes
Copilot reviewed 1 out of 2 changed files in this pull request and generated 1 comment.
| File | Description |
|---|---|
| go.mod | Updates grpc-go/protobuf direct requirements and bumps an indirect genproto dependency. |
| go.sum | Adds checksums for the newly resolved versions after the dependency bump. |
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
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.
This advisory is a gRPC-Go authorization bypass triggered by malformed HTTP/2
:pathvalues (missing leading/) when path-based authorization interceptors are used. The repository now updatesgoogle.golang.org/grpcingo.modand includes a reachability assessment for the affected code path.Dependency resolution
go.modto bumpgoogle.golang.org/grpcfromv1.79.3tov1.80.0.go.sumvia Go tooling.Reachability assessment
google.golang.org/grpc/authzinfo.FullMethod/grpc.Method(ctx)path-based authorization logiccomponents/services/inmem/services.go), but it does not implement the vulnerable authorization pattern.Original prompt
This section details the Dependabot vulnerability alert you should resolve
<alert_title>gRPC-Go has an authorization bypass via missing leading slash in :path</alert_title>
<alert_description>### Impact
What kind of vulnerability is it? Who is impacted?
It is an Authorization Bypass resulting from Improper Input Validation of the HTTP/2
:pathpseudo-header.The gRPC-Go server was too lenient in its routing logic, accepting requests where the
:pathomitted the mandatory leading slash (e.g.,Service/Methodinstead of/Service/Method). While the server successfully routed these requests to the correct handler, authorization interceptors (including the officialgrpc/authzpackage) 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:
google.golang.org/grpc/authzor custom interceptors relying oninfo.FullMethodorgrpc.Method(ctx).The vulnerability is exploitable by an attacker who can send raw HTTP/2 frames with malformed
:pathheaders 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
:paththat does not start with a leading slash is immediately rejected with acodes.Unimplementederror, preventing it from reaching authorization interceptors or handlers with a non-canonical path string.Users should upgrade to the following versions (or newer):
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:
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
:pathheader 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.</alert_description>
critical
https://github.com/grpc/grpc-go/security/advisories/GHSA-p77j-4mvh-x3m3 https://nvd.nist.gov/vuln/detail/CVE-2026-33186 https://github.com/advisories/GHSA-p77j-4mvh-x3m3GHSA-p77j-4mvh-x3m3, CVE-2026-33186
google.golang.org/grpc
go
<vulnerable_versions>= v1.72.3</vulnerable_versions>
<patched_version>1.79.3</patched_version>
<manifest_path>go.mod</manifest_path>
<agent_instructions>bump this dep</agent_instructions>
<task_instructions>Resolve this alert by updating the affected package to a non-vulnerable version. Prefer the lowest non-vulnerable version (see the patched_version field above) over the latest to minimize breaking changes. Include a Reachability Assessment section in the PR description. Review the alert_description field to understand which APIs, features, or configurations are affected, then search the codebase for usage of those specific items. If the vulnerable code path is reachable, explain how (which files, APIs, or call sites use the affected functionality) and note that the codebase is actively exposed to this vulnerability. If the vulnerable code path is not reachable, explain why (e.g. the affected API is never called, the vulnerable configuration is not used) and note that the upd...