
CVE-2026-46455 の再現スクリプト — Apache Camel camel-keycloak における TokenVerifier.IS_ACTIVE チェックの欠落(期限切れアクセストークンが受け入れられる)
IS_ACTIVE チェックの欠落 (期限切れトークンの受け入れ)同じApache Camel脆弱性に対する実行可能な概念実証(PoC)再現コードです。ランタイムごとに1つ用意されています:
| ランタイム | ディレクトリ | スタック |
|---|---|---|
| Camel Spring Boot | camel-spring-boot/ | Spring Boot 3.2.0 + camel-keycloak 4.18.2 |
| Camel Quarkus | camel-quarkus/ | Quarkus 3.36.0 + Camel Quarkus 3.36.0 (Camel 4.20.0 をバンドル) |
どちらも影響を受けるバージョンです (4.18.3 / 4.21.0 で修正)。両方とも同一の欠陥を示します:
KeycloakSecurityHelper.parseAndVerifyAccessToken はトークンの署名、サブジェクト、発行者を検証しますが、Keycloakの TokenVerifier.IS_ACTIVE チェックを省略しています。そのため exp / nbf は決して強制されず、期限切れトークンが受け入れられます。漏洩または傍受されたトークンは無期限に使用可能なままとなります (CWE-613 + CWE-287)。
各PoCは、exp が30分前に設定された正しく署名されたアクセストークンを生成し、それを脆弱なヘルパーと IS_ACTIVE を追加した検証器 (修正が行う処理) の両方に通します。これにより、ヘルパーが IS_ACTIVE が拒否するものを受け入れることを証明します。Keycloakサーバーは不要です。トークンはプロセス内で生成されたRSAキーで署名されます。
各サブディレクトリは、それぞれ独自の Dockerfile、docker-compose.yml、README を備えた自己完結型プロジェクトです。要するに、どちらでも次のように実行します:
cd camel-spring-boot # or: cd camel-quarkus
mvn clean package
docker compose up -d --build
curl -s http://localhost:8080/exploit/attack
docker compose down
勧告: https://camel.apache.org/security/CVE-2026-46455.html
これらの再現コードは、公開され修正済みの脆弱性に対するセキュリティ研究および許可されたテストのみを目的として提供されています。明示的な許可なくシステムに対して使用しないでください。
| プロパティ | 値 |
|---|
| コンポーネント | camel-keycloak |
| 影響を受けるクラス | org.apache.camel.component.keycloak.security.KeycloakSecurityHelper#parseAndVerifyAccessToken |
| CWE | CWE-613 (不十分なセッション有効期限) + CWE-287 (不適切な認証) |
| 影響 | 期限切れまたはまだ有効でないアクセストークンが受け入れられる → トークンの有効期間外でリクエストが認証される |
| 影響を受けるバージョン | 4.18.0以上4.18.3未満、4.19.0以上4.21.0未満 (ヘルパーは4.18.0で導入。4.14.x LTSは影響なし) |
| 修正バージョン | 4.18.3, 4.21.0 |
| JIRA | CAMEL-23504 |