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, 伪头绕过, 授权绕过, 日志审计, 权限控制, 网络安全, 请求拦截, 路径规范化, 逆向工具, 鉴权绕过, 隐私保护