
Apache Camel の脆弱性に対する実行可能な概念実証(PoC)再現ツールです。この脆弱性では、camel-http の OAuth2 クライアントトークンキャッシュ
— JVM グローバルな static マップ — が、そのエントリのキーを (uri, clientId, clientSecret) のみで構成しており、
トークンを実際に形作るフィールド、すなわち要求スコープ、リソースインジケーター、トークンエンドポイントを省略していました。したがって、
これらのフィールドのみが異なる 2 つのエンドポイントがキャッシュエントリを共有し、あるエンドポイントに対して異なるスコープ、
異なるリソース、または異なる認可サーバーによって発行されたトークンが提供される可能性がありました — つまり、エンドポイントが
設定されていた以上の権限を持つリクエスト、または発行先ではない相手に提示されるトークンです
(CWE-524)。
Spring Boot のみ。 この再現ツールは単一の Camel Spring Boot モジュールを同梱しています。この欠陥は
camel-httpの OAuth2 クライアントにあり、camel-quarkus-http拡張も存在します。しかし、その拡張の JVM パッケージングでは、エンドポイントレベルのoauth2*クライアントオプションが Spring Boot の場合のようには適用されません(トークンキャッシュを所有する OAuth2 リクエストインターセプターが 配線されないため、トークンエンドポイントが呼び出されることはありません)— これは CVE-2026-85251 で文書化されたのと同じ制限です。 Spring Boot モジュールは、影響を受ける動作および修正後の動作を実演します。
| ランタイム | ディレクトリ | スタック |
|---|---|---|
| Camel Spring Boot | camel-spring-boot/ | Spring Boot 3.5.13 + camel-http 4.22.0(影響あり、修正版 4.22.1) |
ドライバーは修正自体の回帰テスト(HttpOAuth2TokenCachingTest)を模倣しています。プロセス内で 2 つの使い捨て HTTP サーバーが動作します。
ベアラートークンを発行するトークンエンドポイントと、それを要求するターゲットです。検証ツール(/exploit/attack)は次の処理を行います。
oauth2CacheTokens=true&oauth2Scope=read を指定してターゲットへ最初のリクエストを行います — トークンが発行され、キャッシュされます。oauth2Scope=read+write 以外は同一の 2 回目のリクエストを行います。read トークンを再利用します —
トークンエンドポイントが停止しているにもかかわらず成功します(新しいトークンが発行されることはあり得ません)。HttpHostConnectException)。cd camel-spring-boot
mvn clean package
docker compose up -d --build
curl -s http://localhost:8080/exploit/attack # affected: 2nd request 200 (reused read token); >>> PROVEN
docker compose down
# Patched control
mvn clean package -Dcamel.version=4.22.1
java -jar target/cve-2026-85317-http-oauth2-token-cache-0.0.1-SNAPSHOT.jar &
curl -s http://localhost:8080/exploit/attack # fixed: 2nd request HttpHostConnectException; >>> Not exploited
| 項目 | 値 |
|---|---|
| コンポーネント | camel-http (OAuth2ClientConfigurer、トークンキャッシュ) |
| CWE | CWE-524 (機密情報を含むキャッシュの使用) |
| 重大度 | MEDIUM |
| 攻撃ベクトル | スコープ、リソースインジケーター、またはトークンエンドポイントのみが異なる複数の OAuth2 エンドポイントを 1 つのデプロイメントで構成した場合、それらが JVM グローバルなトークンキャッシュを共有する |
| 影響 | あるエンドポイントに対して、異なるスコープ/リソース/認可サーバー向けに発行されたトークンが提供される — 構成された権限より広い権限、または誤った相手に提示されるトークン |
| 影響を受けるバージョン | 4.0.0 から 4.18.5 未満、4.19.0 から 4.22.1 未満 |
| 修正済みバージョン | 4.18.5、4.22.1、4.23.0 |
| JIRA | CAMEL-24456 |
| クレジット | Claude Security Scan Tool |
アドバイザリ: https://camel.apache.org/security/CVE-2026-85317.html
OAuth2ClientConfigurer はキャッシュキーのレコード
OAuth2URIAndCredentials を拡張してトークンエンドポイント、スコープ、リソースインジケーターを含めるようにしたため、
これらのフィールドのいずれかが異なるエンドポイント間でエントリが共有されることはなくなった。
スコープ、リソースインジケーター、またはトークンエンドポイントが異なるエンドポイントは、別々の JVM で実行して 静的キャッシュを共有しないようにする。
このリポジトリは教育および防御目的で公開されている。Apache Camel ユーザーが脆弱性を理解し、影響を受けているかどうかを確認し、
アップグレードによって解決されることを確かめるためのものである。トークン
(xxx.yyy.zzz)、クライアント ID、シークレットは無害なプレースホルダーであり、両方の HTTP サーバーはインプロセスで動作する。
所有または運用していないシステムに対してこの資料を使用しないこと。