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

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

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

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

ツールディレクトリ

カテゴリ

すべてのカテゴリを見る
Loading categories
CVE-2026-23552 — CVE-2026-23552 - camel-keycloak におけるレルム間トークン受理 | Kitploit
ツール/GitHubGitHub/oscerd/cve-2026-23552
認証と認可脆弱性分析エクスプロイトウェブセキュリティ学習と教育APIセキュリティ
GitHuboscerd/cve-2026-23552

CVE-2026-23552

CVE-2026-23552 - camel-keycloak におけるレルム間トークン受理

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

人気

すべて見る →

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

すべてのツールを探索

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

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

CVE-2026-23552 - camel-keycloak におけるクロスレルムトークンの受け入れ

概要

Apache Camel の KeycloakSecurityPolicy は、JWT トークンの iss (issuer) クレームを設定されたレルムに対して検証しません。つまり、ある Keycloak レルムから発行されたトークンが、まったく別のレルム用に設定されたポリシーによって暗黙に受け入れられ、テナントの分離が壊れます。

影響を受けるバージョン: 4.15.0, 4.16.0, 4.17.0

追跡先: https://issues.apache.org/jira/browse/CAMEL-22854

根本原因

KeycloakSecurityHelper.parseAccessToken() では、公開鍵が明示的に提供されていない場合 (デフォルト設定)、トークンは Base64 からデコードされるだけで、検証されることはありません:

root@kitploit:~
public static AccessToken parseAccessToken(String tokenString, PublicKey publicKey)
        throws VerificationException {
    if (publicKey != null) {
        return TokenVerifier.create(tokenString, AccessToken.class)
                .publicKey(publicKey)
                .verify()
                .getToken();
    } else {
        // no signature verification, no issuer check
        return TokenVerifier.create(tokenString, AccessToken.class).getToken();
    }
}

デフォルトのコードパスは else 分岐に入るため、次の 3 つの項目がチェックされません:

  1. トークンの署名が検証されない
  2. iss クレームが期待される {serverUrl}/realms/{realm} と比較されない
  3. Keycloak から JWKS 公開鍵が取得されない

ロールチェックはトークンペイロード内のロール名のみを参照するため、依然として通過します。ロール名 (tenant-user) がレルム間で一致する場合 (マルチテナント構成ではよくあることです)、リクエストはそのまま通ってしまいます。

影響

各テナントが個別の Keycloak レルムに対応するマルチテナントアプリケーションでは、テナント A のユーザーがテナント B 用に保護されたルートにアクセスできます。具体的には次のとおりです:

  • マルチテナント SaaS アプリケーションにおけるクロステナントデータアクセス
  • 異なるレルムが異なるロール設定を持つ場合の権限昇格
  • レルムベースのセキュリティ分離の完全なバイパス

再現プログラム

このプロジェクトは、Apache Camel 4.17.0 とローカルの Keycloak インスタンスを使用して、この脆弱性を実証します。

前提条件

  • Java 17+
  • Maven 3.9+
  • Camel JBang CLI (jbang app install camel@apache/camel)
  • Docker または Podman (camel infra が内部的に使用)

セットアップ

ローカルの Keycloak を起動します:

root@kitploit:~
camel infra run keycloak

これにより、管理資格情報 admin/admin を使用して Keycloak が localhost:8080 で起動します。

実行

root@kitploit:~
mvn verify

動作内容

統合テスト (CrossRealmTokenBypassIT) は次のことを行います:

  1. ローカルの Keycloak に接続し、acme と globex の 2 つのレルムを作成します
  2. 各レルムに、ダイレクトアクセスグラントを有効にした機密クライアントを作成します
  3. 両方のレルムに tenant-user レルムロールを作成します
  4. acme レルムにユーザー alice (パスワード alice123) を作成し、彼女に tenant-user ロールを割り当てます
  5. globex レルムにバインドされた KeycloakSecurityPolicy によって保護された Camel ルート (direct:globex-protected) を設定します
  6. acme レルムから alice の JWT トークンを取得します (発行者: http://localhost:8080/realms/acme)
  7. そのトークンを globex 保護ルートに送信します

リクエストは成功します。acme トークンは、エラーなしで globex ポリシーを通過します。

4.17.0 での期待されるテスト結果

テスト結果意味
testAcmeTokenIsObtainablePASS健全性チェック -- トークン取得が機能する

パッチ適用済みバージョン (4.18.0+) では、2 番目のテストは失敗し、3 番目のテストは成功します。

クリーンアップ

root@kitploit:~
camel infra stop keycloak

テストは @AfterAll で acme および globex レルムも削除します。

修正

KeycloakSecurityPolicy は、iss クレームが {serverUrl}/realms/{realm} と一致しないトークンを拒否する必要があります。修正は CAMEL-22854 で追跡されており、Camel 4.18.0 (次の LTS リリース) で提供されます。

ツールをダウンロード
testCrossRealmTokenAcceptedPASS脆弱性が存在することを確認する
testCrossRealmTokenShouldBeRejectedFAIL正しい動作を示す -- 4.17.0 では例外がスローされない