iss/aud が検証されないApache Camel の脆弱性に対する実行可能な Proof-of-Concept 再現コードです。この脆弱性では、camel-main 組み込み HTTP サーバーが、jwtIssuer も jwtAudience も設定されていない場合に、キーストアのみから JWT 認証子を構築するため、受信トークンは署名と有効期限のみがチェックされ、iss および aud クレームは一切検証されません。
| ランタイム | ディレクトリ | スタック |
|---|---|---|
| Camel Main (スタンドアロン) | camel-main/ | camel-main 4.21.0 + camel-platform-http-main |
なぜ Camel Spring Boot / Camel Quarkus ではなく camel-main なのか? 影響を受けるクラス
JWTAuthenticationConfigurerはcamel-platform-http-main— camel-main 組み込み HTTP サーバー (MainHttpServer) に存在します。これは、スタンドアロンの camel-main アプリケーションとcamel-jbangで使用されます。このサーバーは、Camel Spring Boot の platform-http 統合 (サーブレットベース) でも、Camel Quarkus の統合 (独自のセキュリティを持つ Quarkus/Vert.x HTTP) でもありません。そのため、この特定の欠陥に対する忠実な Spring Boot または Quarkus の再現コードは存在しません。したがって、このリポジトリは、バグの正確なホストであるスタンドアロンの camel-main 再現コードを提供します。
cd camel-main
mvn clean package
docker compose up -d --build
curl -s http://localhost:8080/exploit
docker compose down
影響を受けるビルドでの期待される出力:
[1] GET /protected with NO token -> HTTP 401 (auth is enforced)
[2] GET /protected with token iss=https://attacker.example aud=some-unrelated-service -> HTTP 200 (ACCEPTED — iss/aud NOT validated)
[3] GET /protected with the same token but EXPIRED -> HTTP 401 (expiry IS checked)
>>> PROVEN: ... the iss and aud claims were never checked ... : true
アドバイザリ: https://camel.apache.org/security/CVE-2026-66908.html
4.22.0 以降、JWT キーストアが設定されているにもかかわらず jwtIssuer も jwtAudience も設定されていない場合、サーバーは不足しているプロパティを指定して起動を拒否します。実際に署名と有効期限のみの検証を望む運用者は、camel.server.jwtAllowMissingIssuerAndAudience=true で明示的にオプトインする必要があります (デフォルトではフェイルクローズ):
// fixed (JWTAuthenticationConfigurer.assertIssuerOrAudienceConfigured)
if (ObjectHelper.isEmpty(audience) && ObjectHelper.isEmpty(issuer)) {
throw new IllegalArgumentException(
"JWT authentication requires camel.server.jwtIssuer or camel.server.jwtAudience to be configured, ...");
}
このリポジトリは、教育および防御目的で公開されています。Apache Camel ユーザーが脆弱性を理解し、影響を受けるかどうかを確認し、アップグレードで解決することを確認できるようにするためです。トークンは、プロジェクトに同梱されている使い捨てのデモ用キーストアに対してローカルで生成されます。この資料を、あなたが所有または運用していないシステムに対して使用しないでください。
| プロパティ | 値 |
|---|
| コンポーネント | camel-platform-http-main (camel-main 組み込み HTTP サーバー) |
| CWE | CWE-287 (不適切な認証) / CWE-1259 (セキュリティクレームの検証欠落) |
| 攻撃ベクトル | 信頼されたキー (例: 共有 JWKS) で署名されているが、異なる issuer/audience 向けに発行された JWT |
| 影響 | 署名キーを共有している任意の当事者からの未期限切れトークンが受け入れられる — デプロイメントは運用者が考えているよりも弱い検証しか行わない |
| 影響を受けるバージョン | 4.8.0 から 4.22.0 未満 |
| 修正済みバージョン | 4.22.0 |
| JIRA | CAMEL-24281 |
| クレジット | n0mi1k |