Skip to content
KitploitKITPLOIT
ツールブログ
提出
ツールブログ
提出

ハッキング、侵入テスト、サイバーセキュリティツールをあなたのセキュリティアーセナルに!

Kitploitはハッキング、サイバーセキュリティ、ペネトレーションテストのツールディレクトリです。最新のプロジェクトアップデートを見つけて、脆弱性の発見、システム分析、テストの自動化、セキュリティの強化を行いましょう。

··フィード·お問い合わせ·プライバシー·© 2026 Kitploit

ツールディレクトリ

カテゴリ

すべてのカテゴリを見る
Loading categories
CVE-2026-33186 — gRPC-Go RBAC 認可ポリシーバイパス - `:path` スラッシュ欠落による(認可バイパス) | Kitploit
ツール/GitHubGitHub/johanneslks/cve-2026-33186
認証と認可エクスプロイトウェブアプリケーション悪用ペネトレーションテスト学習と教育APIセキュリティ
GitHubjohanneslks/cve-2026-33186

CVE-2026-33186

gRPC-Go RBAC 認可ポリシーバイパス - `:path` スラッシュ欠落による(認可バイパス)

リポジトリを見る
152ヶ月前未レビュー

人気

すべて見る →

コミュニティで最も使われているツールを見つけましょう。

すべてのツールを探索

ツールコレクションを閲覧

すべてのツールを見る →
共有

CVE-2026-33186

gRPC-Go RBAC 認可ポリシーのバイパス: :path スラッシュ欠如 (認可バイパス)

説明

google.golang.org/grpc の authz パッケージは、:path 疑似ヘッダーに対して拒否ルールと許可ルールをマッチングさせる SDK レベルの RBAC 認可を実装しています。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) で修正済み。

使用方法

root@kitploit:~
# Install the Python HTTP/2 dependency:
pip install h2

# Against an existing vulnerable gRPC server:
python3 poc.py --host <HOST> --port <PORT>
python3 poc.py --host <HOST> --port <PORT> --service MyService --method SecretMethod

# When TCP destination and HTTP/2 authority differ:
python3 poc.py --host <VHOST> --connect-host <IP> --port 80 \
  --service MyService --method SecretMethod

# Canonical upstream malformed path:
python3 poc.py --host <HOST> --port <PORT> --path-mode no-slash

# Reverse-proxy deployments that preserve a double slash before grpc_pass:
python3 poc.py --host <VHOST> --connect-host <IP> --port 80 \
  --path-mode double-slash --service MyService --method SecretMethod

# Literal :path value when you already know the backend path shape:
python3 poc.py --host <VHOST> --connect-host <IP> --path-mode custom \
  --attack-path '//MyService/SecretMethod'

# Save a decoded successful attack response for follow-on manual use:
python3 poc.py --host <HOST> --port <PORT> --output-response /tmp/grpc-response.txt

--host は、--authority が設定されていない限り HTTP/2 の :authority ホストを制御します。--connect-host は TCP 接続先を制御します。これは、到達可能な IP がルーティング先のバックエンドオーソリティと異なる仮想ホストやリバースプロキシ構成で便利です。

標準の grpc-go の問題は --path-mode no-slash です。double-slash と custom は、プロキシが異なる不正なパス形状を脆弱なバックエンドに転送する環境向けの汎用ヘルパーです。

必要条件

  • 攻撃者: Python 3.8+、h2 (pip install h2)
  • ターゲット: authz パッケージを拒否ルールと共に使用する gRPC-Go サーバー

ファイル

FileDescription
poc.pyPython PoC -- 3つの生のHTTP/2呼び出し(ベースライン/攻撃/制御)を送信してバイパスを証明します
README.md脆弱性の詳細、使用例、参考文献
LICENSEGPLv3 ライセンス

参考文献

  • https://github.com/grpc/grpc-go/security/advisories/GHSA-p77j-4mvh-x3m3
  • https://github.com/grpc/grpc-go/pull/8981

法的通知

このプロジェクトは GNU GPLv3 の下で公開されています。

これは防御的なセキュリティ研究、教育、および許可されたテストのために提供されています。所有者の明示的な許可なしに、このコードをシステムやサービスに対して使用しないでください。

無許可での使用は適用される法律に違反する可能性があります。著者は第三者のシステムをテストする許可を与えておらず、誤用について責任を負いません。

保証および賠償責任の条件については LICENSE ファイルを参照してください。

ツールをダウンロード