CVE-2026-33186
gRPC-Go 存在通过 :path 中缺少前导斜杠导致的授权绕过漏洞
- 已发布
- 2026年3月20日
- 已更新
- 2026年9月18日
- 分配 CNA
- GitHub_M
- 观察到的证据
- 2026年8月17日
初级CVSS
nvd · CVSS 3.1
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:N低 · 未来 30 天
- 百分位
- 73.7%
- 型号日期
- 2026年9月21日
EPSS 是统计估计,而不是确定性或影响衡量标准。将其与 CVSS、KEV 状态、暴露程度和您的环境相结合。
总结
gRPC-Go 是 gRPC 的 Go 语言实现。1.79.3 之前的版本存在授权绕过漏洞,该漏洞源于对 HTTP/2 `:path` 伪标头的不当输入验证。gRPC-Go 服务器在其路由逻辑中过于宽松,接受了 `:path` 省略必需前导斜杠的请求(例如,`Service/Method` 而非 `/Service/Method`)。虽然服务器成功将这些请求路由到正确的处理器,但授权拦截器(包括官方的 `grpc/authz` 包)评估的是原始的非规范路径字符串。因此,使用规范路径(以 `/` 开头)定义的“拒绝”规则无法匹配传入的请求,如果存在回退的“允许”规则,则允许该请求绕过策略。这会影响使用基于路径的授权拦截器的 gRPC-Go 服务器,例如 `google.golang.org/grpc/authz` 中的官方 RBAC 实现,或依赖 `info.FullMethod` 或 `grpc.Method(ctx)` 的自定义拦截器;并且其安全策略包含针对规范路径的特定“拒绝”规则,但默认允许其他请求(回退的“允许”规则)。攻击者可以通过直接向 gRPC 服务器发送带有畸形 `:path` 标头的原始 HTTP/2 帧来利用此漏洞。1.79.3 版本中的修复确保任何 `:path` 不以正斜杠开头的请求都会立即以 `codes.Unimplemented` 错误被拒绝,从而防止其以非规范路径字符串到达授权拦截器或处理器。虽然升级是最安全且推荐的路径,但用户也可以通过以下方法之一缓解该漏洞:使用验证拦截器(推荐的缓解措施);基础设施层面的规范化;和/或策略加固。
来源
1gRPC-Go RBAC 授权策略绕过:利用缺失的 `:path` 斜杠(认证绕过)
负责任的使用
仅在您拥有或有权测试的系统上使用漏洞信息。 Kitploit 链接到公共研究元数据,并且不存储漏洞代码或恶意负载。