JohannesLks/CVE-2026-33186

GitHub: JohannesLks/CVE-2026-33186

该项目提供了针对 gRPC-Go RBAC 授权策略的绕过验证工具,通过构造缺失前导斜杠的 HTTP/2 请求路径实现权限提升。

Stars: 0 | Forks: 0

# CVE-2026-33186 gRPC-Go RBAC 授权策略绕过(因缺少 `:path` 斜杠导致)(Auth Bypass) ## 描述 `google.golang.org/grpc` 中的 `authz` 包实现了 SDK 级别的 RBAC 授权,使用与 `:path` 伪头部匹配的拒绝和允许规则。HTTP/2 服务器传输层存储来自 客户端的原始 `:path` 值,而不验证其是否以 `/` 开头。路由层 (`handleStream`)在分发之前会对路径进行规范化,但 RBAC 引擎通过 `grpc.Method(ctx)` 从上下文中读取的是规范化前的值。 拒绝规则被写成 `/Service/Method`(带有前导斜杠)。发送 `:path = "Service/Method"`(不带斜杠)会导致拒绝规则在首字符 比较时未命中。默认的允许规则触发,受保护的方法被执行。 任何使用带有拒绝规则的 `authz.NewStatic()` 或 `authz.NewFileWatcher()` 的 gRPC 服务器都存在漏洞。一个原始的 HTTP/2 客户端(Python `h2`、`curl --http2` 或 任何自定义帧写入器)足以利用此漏洞——无需凭据,无需先前的状态。 针对 grpc-go v1.71.0 的实时验证显示,当省略前导斜杠时,在被拒绝列表中的 `AdminMethod` 上返回了 gRPC 状态码 0 (OK),而带有规范斜杠的相同调用返回状态码 7 (PermissionDenied)。 受影响版本:`google.golang.org/grpc` < v1.79.3。已在 v1.79.3 中修复(PR #8981)。 ## 使用方法 ``` # Native (需要 Go + Python 3 和 h2): pip install h2 ./run.sh # Docker (无本地依赖): docker compose up --build --abort-on-container-exit # 针对现有的易受攻击的 gRPC 服务器: python3 poc.py --host --port python3 poc.py --host --port --service MyService --method SecretMethod ``` ## 环境要求 - 原生环境:Go(任意较新版本)、Python 3.8+、`h2`(`pip install h2`) - Docker 环境:Docker + Docker Compose - 目标:使用带有拒绝规则的 `authz` 包的 gRPC-Go 服务器 ## 文件说明 | 文件 | 描述 | |------|-------------| | `poc.py` | Python 概念验证(PoC)——发送 3 个原始 HTTP/2 调用(基线/攻击/控制)以证明绕过 | | `server/main.go` | 带有拒绝列表 RBAC 策略的易受攻击的 gRPC 服务器(grpc-go v1.71.0) | | `server/go.mod` | 锁定到易受攻击的 grpc-go v1.71.0 的 Go 模块 | | `run.sh` | 构建服务器、启动服务器、运行 PoC、显示服务器日志 | | `Dockerfile` | 多阶段构建(Go 服务器 + Python 客户端) | | `docker-compose.yml` | 带有健康检查的一键式 Docker 设置 | | `proto/service.proto` | Protobuf 服务定义 | | `proof_output.txt` | 来自实时验证的完整 PoC 输出 + 服务器日志 | ## 参考资料 - https://github.com/grpc/grpc-go/security/advisories/GHSA-p77j-4mvh-x3m3 - https://github.com/grpc/grpc-go/pull/8981 ## 法律声明 本项目在 GNU GPLv3 下发布。 它仅供防御性安全研究、教育和授权测试使用。未经所有者明确许可, 请勿将此代码用于针对系统或服务的测试。 未经授权的使用可能违反适用法律。作者未授予测试第三方系统的权限, 也不对误用负责。 有关保修和责任条款,请参阅 LICENSE 文件。
标签:CVE-2026-33186, Docker环境, Go语言安全, gRPC-Go, HTTP/2, Python PoC, Python工具, RBAC, 伪头绕过, 授权绕过, 日志审计, 权限控制, 网络安全, 请求拦截, 路径规范化, 逆向工具, 鉴权绕过, 隐私保护