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

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

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

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

ツールディレクトリ

カテゴリ

すべてのカテゴリを見る
Loading categories
ツール/GitHubGitHub/kyos-public/keycloak-cve-2026-18963-hunt
脆弱性分析デジタルフォレンジック認証インシデントレスポンスデータベースセキュリティログ分析
GitHubkyos-public/keycloak-cve-2026-18963-hunt

keycloak-cve-2026-18963-hunt

Keycloakデータベース内でCVE-2026-18963(Keycloakの未認証アカウント乗っ取り)の悪用痕跡をハントする

リポジトリを見る
914時間37分前未レビュー

人気

すべて見る →

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

すべてのツールを探索

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

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

CVE-2026-18963: Keycloak アカウント乗っ取り、悪用痕跡のハンティング

Keycloak の PostgreSQL データベースから CVE-2026-18963 の悪用痕跡(reset-credentials フローを介した未認証のアカウント乗っ取り)を検索する psql スクリプトです。

KYOS が公開しています。私たちが運用する Keycloak デプロイメントにパッチを適用する際、暴露期間中に誰も乗っ取られていないことを確認するために作成しました。

脆弱性

CVE-2026-18963 は keycloak-services の reset-credentials フローにおける欠陥です(keycloak#51833)。未認証の攻撃者は、メール検証リンクをクリックすることなく任意のユーザーのパスワードリセットプロセスを完了し、そのアカウントに新しいパスワードを設定できます。ユーザーの操作は必要ありません。

深刻度: Critical、CVSS v3.1 9.1(AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:N)、Red Hat および NVD による。根本原因は認証フローにおける不適切な状態検証であり、keycloak#51844 で修正されています。

影響を受ける / 修正済みのバージョン

ツールをダウンロード
ストリーム修正版
26.7.x26.7.2 (リリースノート)
26.6.x26.6.6
26.4.x (LTS)26.4.15
26.826.8.0

サポート対象ストリームのこれらのバージョンより古いものはすべて脆弱です。サポート終了のリリース(26.5.x、26.3 以前)には修正が提供されないため、暴露を想定して修正済みストリームにアップグレードしてください。Red Hat はレガシー RH-SSO 7 を影響なしとしています。Red Hat Build of Keycloak 26.4/26.6 は 26.4.15-1 / 26.6.6-1 で修正されています。

すぐにパッチを適用できない場合の回避策

セルフサービスのパスワードリセットを無効にすると、脆弱なエントリポイントが除去されます: すべてのレルムで、Admin console > Realm settings > Login > "Forgot password" をオフにします。管理 API の場合は: PUT /admin/realms/{realm} に {"resetPasswordAllowed": false} を指定します。

これにより login-actions/reset-credentials エンドポイントはブロックされますが、正当なユーザーが自分のパスワードをリセットすることもできなくなるため、アップグレードまでの暫定措置として扱ってください。Red Hat はこの CVE に対する推奨緩和策を公開していないことに注意してください。パッチ適用が唯一の本当の修正です。

スクリプトがチェックする内容

cve-2026-18963-keycloak-hunt.sql は4つの読み取り専用クエリを実行します:

クエリ検出内容
Q0レルムがログイン/管理イベントをそもそも保存しているかどうか、およびその TTL。イベントがオフまたは期限切れの場合、Q2/Q3 の空の結果は何も証明しません。
Q1暴露期間内に設定されたすべてのパスワード資格情報(credential.created_date)。これが乗っ取りそのものであり、イベントログがオフでも機能します。
Q2リセット/資格情報のログインイベントを調べ、直前の24時間に SEND_RESET_PASSWORD がない完了済みリセットにフラグを立てます(no_email_before = t)。このフラグが CVE のシグネチャです: 攻撃者はメールを一切トリガーしていません。
Q3管理者主導の経路を除外するための、Admin-API による資格情報リセットおよび execute-actions オペレーション。

使用方法

root@kitploit:~
# defaults: realm 'master', window since 2026-06-01
psql -U keycloak -d keycloak -f cve-2026-18963-keycloak-hunt.sql

# explicit realm and window (run once per realm, quote values exactly like this)
psql -U keycloak -d keycloak \
  -v realm="'myrealm'" -v since="'2026-05-01'" \
  -f cve-2026-18963-keycloak-hunt.sql

since は、脆弱なバージョンが稼働し始めた直前の日付に設定します。Kubernetes の場合:

root@kitploit:~
kubectl exec -it my-postgres-pod -- \
  psql -U keycloak -d keycloak -v realm="'myrealm'" -v since="'2026-05-01'" \
  -f - < cve-2026-18963-keycloak-hunt.sql

結果の解釈

Q1 の行は自動的に侵害を意味するわけではありません。それぞれを既知の正当な原因(セルフサービスリセット、ヘルプデスクによる操作、新規登録)と照合し、説明できないものは乗っ取りの候補として扱ってください。

RESET_PASSWORD、UPDATE_CREDENTIAL、UPDATE_PASSWORD で no_email_before = t となっている Q2 の行は、この CVE が悪用された最も強い指標です。ip_address 列をアクセスログと突き合わせてください。

最初に Q0 を確認してください: ログインイベントは期限切れになり(events_expiration)、完全に無効化されている可能性もあります。Q1 は期限切れにならないため、最も信頼できるチェックです。

乗っ取りを発見した場合

  1. 影響を受けたアカウントを無効化するか、信頼できる経路でパスワードリセットを強制します。
  2. アカウントのセッションとオフライントークンを失効させ(Admin console > Sessions)、そのアカウントが到達可能だった可能性のあるシークレットをローテーションします。
  3. 調査を広げます: Q2 のタイムスタンプと IP 周辺のリバースプロキシ/イングレスログ、資格情報変更後にアカウントが実行した操作、Keycloak を通じてフェデレーションされたダウンストリームアプリケーション。

注意事項

  • 読み取り専用ですが、レプリカまたはバックアップに対して実行することを推奨します。
  • PostgreSQL 上の Keycloak 26.x 向けに作成されています。テーブル名は最近のバージョン間で安定していますが、他のデータベースや古いバージョンでは確認してください。
  • 検出結果がないことは侵害がないことの証明にはなりません(Q0 を参照)。特にイベント保持期間が短い場合やロギングが無効な場合はそうです。

ライセンス

MIT、LICENSE を参照してください。現状のまま提供され、保証はありません。