本文へ移動
English version →
重大 9.1 急ぎ度: 早めに

Keycloakでコード実行の脆弱性、修正版は要確認

Keycloakでクライアント管理権限を持つ管理者が、サーバー上で任意のコードを実行できる脆弱性が公表されました。Red Hat製品の利用組織は、告知で修正版を確認し、管理権限を持つアカウントを見直してください。

CVE-2026-120984 公開 更新 執筆・監修: 佐々木 航 人が監修しながらAIを活用して執筆
画像は生成 AI で作成したイメージです

急ぎ度: 早めに

CVSS v3は9.1ですが、攻撃にはクライアント管理権限が要り、Red Hatは緩和策を示していないため、修正版の確認と権限の見直しを早めに進める段階と見ています。

関係があるか

Red Hat Build of KeycloakまたはRed Hat Single Sign-On 7を運用し、クライアントの作成や管理を複数の管理者やチームに委任している組織が対象です。realmを分けて複数のテナントを同居させている環境ほど、影響が広がりやすくなります。

製品影響を受ける版修正版
Red Hat Build of Keycloak 影響を受ける製品として記載されています。版ごとの状況はRed HatのCustomer Portalにある当該CVEのページで確認してください。 Red Hatの告知で確認してください。
Red Hat Single Sign-On 7 影響を受ける製品として記載されています。版ごとの状況はRed HatのCustomer Portalにある当該CVEのページで確認してください。 Red Hatの告知で確認してください。

確かめ方

  1. 1自社のID基盤がRed Hat Build of KeycloakかRed Hat Single Sign-On 7かを確認します。コミュニティ版のKeycloakや他社が配布する版を使っている場合は、各提供元の告知で該当するかを確認してください。
  2. 2管理コンソールで、クライアント管理の権限(manage-clientsなど)を持つユーザー、グループ、サービスアカウントを洗い出します。
  3. 3authorization servicesを有効にしたクライアントを一覧にし、JavaScriptで書かれたポリシーが登録されていないかを見ます。身に覚えのないスクリプトポリシーがあれば、登録者と時刻を調べます。

何が起きたか

Keycloakで、クライアント管理権限を持つ管理者が、本来は禁じられているJavaScriptのポリシーを登録し、サーバー上で任意のコードを実行できる脆弱性です。2026年11月7日に公表されました。

クライアントをauthorization services有効の状態で作成またはインポートするとき、セットアップ中に使う内部のセッション属性が消されずに残ります。このためスクリプト型ポリシーのアップロード制限をすり抜けられます。登録されたスクリプトは、認可リクエストが処理されたときにサーバー側で実行されます。弱点の種類はCWE-94(コードの生成に対する不適切な制御)です。

CVSS v3は9.1で、Red Hatは重大度をImportantと評価しています。

攻撃の流れ

  1. 1

    管理権限の取得

    クライアント管理の権限を持つアカウントでKeycloakにログインします。

  2. 2

    クライアント作成

    authorization servicesを有効にしたクライアントを作成またはインポートします。

  3. 3

    制限の回避

    内部のセッション属性が消えず、スクリプトポリシーの登録制限が効かなくなります。

  4. 4

    コード実行

    認可リクエストの処理時に、登録されたスクリプトがサーバー上で実行されます。

公開されている情報をもとにした流れの例です。

どう悪用されるか

ネットワーク経由で攻撃でき、特別な条件は要らない一方、クライアント管理の委任ロールなど高い権限を持つ認証済みアカウントが前提です。利用者の操作は要りません。匿名の外部者がそのまま攻撃できる脆弱性ではなく、管理権限を持つ内部の担当者、委託先、あるいは認証情報が盗まれたアカウントが入口になります。

成功すると、攻撃者はKeycloakが動くアプリケーションサーバーのプロセス内でコードを実行できます。Red Hatは、realmの境界を越えて、ホスト環境や同じサーバーに同居するほかのrealmにまで影響が及びうると説明しています。CVSSで影響範囲が変わる(Scope: Changed)とされているのは、このためです。

CWE-94の一般的な性質として、注入されたコードの動きは記録に残らないことがあります。権限を悪用された疑いがある場合は、ログだけで安全と判断しないほうが無難です。

今すぐやること

  1. 1

    Red Hatの告知で修正版を確認する

    Red HatのCustomer Portalにある当該CVEのページとBugzilla 2565599で、利用中の製品と版の状況、修正版の有無を確認します。修正版が出ていれば、検証環境で動作を確かめたうえで本番に適用してください。

  2. 2

    使っている版を把握する

    Red Hat Build of Keycloakを自社で動かしている場合は、サーバー上で版を確認し、告知の対象版と突き合わせます。Red Hat Single Sign-On 7は、それぞれの製品の手順で版を確認してください。

    bin/kc.sh --version
  3. 3

    クライアント管理権限を棚卸しする

    manage-clientsを含むロールの付与先を洗い出し、業務上不要なユーザー、グループ、サービスアカウントから権限を外します。委任管理者のパスワードと多要素認証の状態も合わせて確認してください。

  4. 4

    スクリプトポリシーと管理操作の履歴を調べる

    authorization servicesを有効にしたクライアントに、見覚えのないJavaScriptポリシーがないかを確認します。管理イベントがあれば、クライアントの作成やインポートの履歴を、公表日より前のものも含めてたどります。

修正版がないあいだのつなぎ

Red Hatは、この脆弱性に対する緩和策は提供されていないか、提供できる選択肢が同社の基準を満たさないと説明しています。公式の回避策が無い以上、修正版を適用するまでのつなぎは運用面の対策です。クライアント管理権限の付与先を必要最小限に絞り、管理コンソールに到達できるネットワークを限定し、修正版の適用まではクライアントの新規作成やインポートを控えてください。これらは攻撃の入口を狭めるだけで、脆弱性そのものは残ります。

背景

Keycloakは、社内外の業務アプリのログインを一手に受けるID基盤です。realmという単位でテナントや環境を分け、クライアント(Keycloakにログインを任せるアプリ)の管理を各チームの管理者に委任する構成がよく使われます。今回の影響は、この委任が前提の運用に集中します。

authorization servicesには、JavaScriptでアクセス判定を書けるスクリプト型ポリシーがあります。スクリプトはサーバーのプロセス内で評価されるため、Red Hatによると、複数のテナントが同居するRed Hat Single Sign-OnとRed Hat Build of Keycloakでは、既定でこの種のポリシーの登録が制限されています。今回の脆弱性は、この制限を守るはずの処理が、クライアント作成時に内部状態を消し忘れることで効かなくなるものです。実行が許されるスクリプトが1本入るだけで、委任された管理権限がサーバー上の実行権限にまで広がってしまいます。

よくある質問

Q.CVSSは9.1なのに、Red HatがImportantとしているのはなぜですか。
A.Red Hatは、攻撃にクライアント管理の委任ロールなど高い管理権限を持つ認証済みの攻撃者が必要なことを理由に挙げ、Criticalではなく、Importantと評価しています。権限の与え方次第で、実際の危険度は環境ごとに変わります。

この記事は、取得元の公開情報をもとに、人が監修しながらAIを活用して執筆しています。執筆と監修は佐々木 航が担い、公開したあとも人が内容を確認しています。誤りに気づいたときは直し、記事の末尾に訂正の行を残します。対応を決める前に、下の原文と参照先も確認してください。

原文の説明 取得元が公開している説明をそのまま載せています (多くは英語)。

A flaw was found in the Keycloak server's client management component. When a client is created or imported with authorization services enabled, the system fails to properly clear an internal session attribute used during the setup process. This allows an authenticated attacker with client management permissions to bypass security controls and upload a malicious JavaScript policy, which is then executed on the server when an authorization request is made. Successful exploitation could allow the attacker to run arbitrary code on the server, potentially compromising the entire system.

出典: CVE.org (CVE Program・cvelistV5) NVD GitHub Advisory

参照URL

当サイトでは、アクセス解析と広告の効果測定のために Cookie を使います。株式会社Game のサイト共通の設定です。 詳しく