CVE-2026-95663
Apache Camel: キャッシュされたトークンイントロスペクション結果がトークンの有効期限に制限されていないため、Camel-Keycloak セキュリティポリシーが期限切れのアクセストークンを受け入れる
- 公開済み
- 2026/10/26
- 更新済み
- 2026/11/02
- CNA の割り当て
- apache
- 観察された証拠
- 2026/10/30
プライマリ CVSS
nvd · CVSS 3.1
CVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:U/C:L/I:L/A:N低 · 今後 30 日間
- パーセンタイル
- 15.7%
- モデルの日付
- 2026/10/31
EPSS は統計的な推定値であり、確実性や影響の尺度ではありません。 CVSS、KEV ステータス、暴露、環境と組み合わせます。
概要
Apache Camel Keycloakコンポーネントにおける不十分なセッション有効期限切れの脆弱性。この問題はApache Camelに影響します: 4.16.0から4.18.5より前、4.19.0から4.22.2より前。camel-keycloakのKeycloakSecurityPolicyでトークンイントロスペクションが有効になっている場合(useTokenIntrospection=true)、セキュリティプロセッサはリクエストのアクセストークンをKeycloakのOAuth 2.0トークンイントロスペクションエンドポイントに送信して検証し、レスポンスがトークンをアクティブと報告している間はそのトークンを受け入れます。イントロスペクションエンドポイントは、トークンのexp(有効期限)時刻が過ぎるとそのトークンを非アクティブとして報告するため、この経路ではactiveフラグがトークンの有効期限を強制する役割を担っています。イントロスペクションの結果はデフォルトでキャッシュされ(introspectionCacheEnabled=true、introspectionCacheTtl=60秒)、コンポーネントに同梱される両方のキャッシュ実装(ConcurrentMapTokenCacheおよびCaffeineTokenCache)は、エントリを挿入から一定時間後に期限切れとしていましたが、その存続期間をキャッシュされたレスポンスがすでに保持していたexpクレームによって制限していませんでした。さらにKeycloakSecurityProcessorは、イントロスペクションを使用するすべての経路において、結果のactiveフラグのみをチェックし、expと現在時刻を比較することはありませんでした。そのため、トークンの有効期限直前にキャッシュされたレスポンスは、同じトークンを持つ後続のリクエストに対して、トークンの有効期限後も設定されたtime-to-liveまで提供され続け、それらのリクエストは有効期限切れのトークンが持っていたロールと権限で許可されていました。しかし、トークンイントロスペクションを定義するRFC 7662は、expを含むレスポンスをその時刻を超えてキャッシュしてはならないと述べています。アクセストークンは呼び出し元によって各リクエストごとに提供され、通常はAuthorizationヘッダーのベアラートークンとして渡されるため、直前まで有効だったトークンを保持する呼び出し元は、キャッシュされたエントリが存続する限り、有効期限後もそのトークンを使い続けることができました。このウィンドウはintrospectionCacheTtlによって制限され、デフォルトでは60秒、内部サービス向けのドキュメントの推奨に従った場合は300〜600秒であり、同じCamelプロセスがトークンをイントロスペクトしてキャッシュした時点でトークンがまだアクティブだった場合にのみ発生します。この問題はトークンがすでに持っていた以上のものを付与するものではありません: トークンの偽造や権限昇格はできず、トークンイントロスペクションはデフォルトで有効になっていないため、深刻度は中程度と評価されています。イントロスペクションが無効な場合に使用されるローカルJWT検証経路は、この問題の影響を受けません。ユーザーはこの問題を修正したバージョン4.23.0へのアップグレードを推奨されています。4.22.xリリースストリームを使用している場合は、4.22.2へのアップグレードを推奨します。4.18.xリリースストリームを使用している場合は、4.18.5へのアップグレードを推奨します。4.16.x、4.17.x、および4.19.xから4.21.xのリリースラインは、この問題が解決される前にサポート終了となっており、修正は提供されないため、これらのデプロイメントはサポート対象のリリースに移行する必要があります。すぐにアップグレードできないデプロイメントでは、KeycloakSecurityPolicyでintrospectionCacheEnabled=falseを設定してください。これにより、すべてのリクエストがイントロスペクションエンドポイントに対してチェックされ、有効期限切れのトークンは非アクティブとして報告されますが、リクエストごとに1回のイントロスペクション呼び出しのコストがかかります。introspectionCacheTtlを下げてもウィンドウが狭まるだけで、閉じることはできません。
ソース
CVE-2026-95663 の実行可能な概念実証(PoC)再現ツール。Apache Camel の camel-keycloak がトークン有効期限を過ぎてもキャッシュされたトークンイントロスペクション結果を返していた問題で、Spring Boot と Quarkus のデモを含みます。
責任ある使用
脆弱性情報は、自分が所有しているシステム、またはテストを許可されているシステムでのみ使用してください。 Kitploit は公開研究メタデータにリンクしており、エクスプロイト コードや悪意のあるペイロードは保存しません。