CVE-2026-94386
Apache Camel: キー不足のJVMグローバルクライアントクレデンシャルトークンキャッシュによるCamel-OAuthのクロススコープトークン再利用
- 公開済み
- 2026/10/26
- 更新済み
- 2026/10/26
- 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 日間
- パーセンタイル
- 28.0%
- モデルの日付
- 2026/10/29
EPSS は統計的な推定値であり、確実性や影響の尺度ではありません。 CVSS、KEV ステータス、暴露、環境と組み合わせます。
概要
Apache Camel Oauthコンポーネントにおける機密情報を含むキャッシュの使用に関する脆弱性。この問題はApache Camel: 4.19.0から4.22.2より前に影響します。OAuthClientCredentialsTokenResolverは、名前付きOAuthプロファイルで送信呼び出しを認証するコンポーネント(camel-openai、camel-langchain4j-agent、camel-huggingface、camel-docling、camel-a2a、camel-spring-ai-chat、およびIBM watsonxコンポーネントなど)や、OAuthClientAuthenticationFactory SPIを直接呼び出すアプリケーションに代わって、クライアントクレデンシャルグラントを通じてOAuth 2.0ベアラートークンを取得します。取得したトークンは、JVM内のすべてのリゾルバーインスタンスとすべてのCamelContextで共有される静的キャッシュに保持され、そのキャッシュのキーはトークンエンドポイントとクライアントIDのみでしたが、トークンリクエストにはクライアントシークレットと要求スコープも含まれていました。したがって、トークンエンドポイントとクライアントIDを共有しながら、異なるスコープを要求する、または異なるクライアントシークレットで認証する2つのプロファイルは、同じキャッシュエントリにマッピングされました。先にトークンを解決したプロファイルがエントリを設定し、もう一方のプロファイルには、トークンが有効な間、自身の設定でトークンリクエストが行われることなく、そのトークンが渡されました。トークンキャッシュはデフォルトで有効になっており、複数のプロファイルを1つのIDプロバイダークライアントに向けることは、安全でない設定へのオプトインではなく、プロファイルサポートの通常の使用方法です。その結果、別のプロファイルのスコープに対して発行されたトークンを含む送信リクエストが発生し、呼び出し元プロファイルが設定されていたよりも広い権限を付与したり、トークンが発行されていないサービスに到達したりする可能性があります。要求スコープからトークンのオーディエンスを導出するIDプロバイダーでは、異なるスコープはまったく別のサービス向けのトークンを意味する場合があります。異なるクライアントシークレットで設定されたプロファイルも同様に、自身で認証することなく、もう一方のシークレットで取得されたトークンが提供されました。プロファイルはデプロイメントによって設定され、デプロイメントは信頼されるため、信頼できない入力がキャッシュに到達することはありません。利益を得るのは、受け取るべきでないトークンを受け取るサービスであり、そのサービスが敵対的または侵害されている場合、そのスコープ内でトークンをリプレイできます。この問題に到達するには、トークンエンドポイントとクライアントIDを共有しながらスコープまたはクライアントシークレットが異なる複数のプロファイルを定義するデプロイメントが必要です。ユーザーは、この問題を修正するバージョン4.23.0へのアップグレードを推奨されます。4.22.xリリースストリームを使用している場合は、4.22.2へのアップグレードを推奨されます。4.19.xから4.21.xのリリーズラインはこの問題が解決される前にサポート終了となっており、修正は提供されないため、これらのデプロイメントはサポート対象のリリースに移行する必要があります。直ちにアップグレードできないデプロイメントでは、別のプロファイルとトークンエンドポイントおよびクライアントIDを共有するすべてのOAuthプロファイルでトークンキャッシュを無効にしてください。名前付きプロファイルの場合は`camel.oauth.NAME.cache-tokens=false`、デフォルトプロファイルの場合は`camel.oauth.cache-tokens=false`を設定することで、各解決時にそのプロファイル自身のスコープとクライアントシークレットでトークンを要求しますが、その代償として解決のたびにトークンリクエストが発生します。あるいは、異なるスコープまたはクライアントシークレットを必要とする各プロファイルに対してIDプロバイダーで個別のクライアントを登録し、そのような2つのプロファイルがクライアントIDを共有しないようにしてください。
ソース
CVE-2026-94386 の再現用に実行可能な Spring Boot および Quarkus プロジェクトで、Apache Camel camel-oauth の静的トークンキャッシュにおけるスコープ間の OAuth トークン再利用を実演します。
責任ある使用
脆弱性情報は、自分が所有しているシステム、またはテストを許可されているシステムでのみ使用してください。 Kitploit は公開研究メタデータにリンクしており、エクスプロイト コードや悪意のあるペイロードは保存しません。