
Apache Camel の脆弱性を再現する実行可能な概念実証(PoC)です。この脆弱性では、リクエストヘッダーがレスポンスに反映されるのを防ぐガードがヘッダー名を大文字小文字を区別して比較していた一方で、HTTP ヘッダー名は大文字小文字を区別しません。呼び出し元はヘッダー名の大文字小文字を変えるだけで抑制を回避でき、さらにHTTP/2 ではまったく一致しませんでした。これはプロトコル上、ヘッダー名をワイヤー上で小文字にする必要があるため、すべての HTTP/2 リクエストに対して抑制が機能していなかったためです。その結果、呼び出し元が選んだコンテンツがレスポンスにエコーバックされ(レスポンス分割やキャッシュポイズニング攻撃の基盤)、抑制がレスポンスから排除すべき認証情報ヘッダー(Authorization、Cookie、Proxy-Authorization)そのものが反映されてしまいます。
| ランタイム | ディレクトリ | スタック |
|---|---|---|
| Camel Spring Boot | camel-spring-boot/ | Spring Boot 3.5.13 + camel-platform-http-vertx 4.22.0(影響あり、修正版 4.22.1)、Camel の Vert.x サーバー |
| Camel Quarkus | camel-quarkus/ | Quarkus 3.29.0 + camel-quarkus-platform-http(Camel 4.15.0、影響あり、修正対照 CQ 3.40.0 / Camel 4.22.1) |
両モジュールとも、影響を受ける動作および修正済みの動作を示します。
platform-http:/echo エンドポイントが提供されます。その HeaderFilterStrategy は、一般的なリクエストヘッダーをレスポンスから抑制するはずです。ドライバーはストラテジーを直接チェックし、さらに小文字(HTTP/2 形式)の認証情報ヘッダーを含む実際のリクエストを送信します。
Authorization(正規形)を抑制しますが、authorization(小文字)は抑制しません。また、authorization: Bearer <secret> を含む実際のリクエストがレスポンスにエコーバックされます。# Camel Spring Boot
cd camel-spring-boot
mvn clean package
docker compose up -d --build
curl -s http://localhost:8080/exploit/attack # affected: lowercase header echoed back; >>> PROVEN
docker compose down
# Patched control
mvn clean package -Dcamel.version=4.22.1
java -jar target/cve-2026-85254-platform-http-header-echo-0.0.1-SNAPSHOT.jar &
curl -s http://localhost:8080/exploit/attack # fixed: suppressed; >>> Not exploited
# Camel Quarkus
cd camel-quarkus
mvn clean package
docker compose up -d --build
curl -s http://localhost:8080/exploit/attack # affected (Camel 4.15.0): lowercase header echoed back
docker compose down
# Patched control: CQ 3.40.0 ships Camel 4.22.1
mvn clean package -Dcamel-quarkus.version=3.40.0 -Dquarkus.platform.version=3.40.0
java -jar target/quarkus-app/quarkus-run.jar &
curl -s http://localhost:8080/exploit/attack # fixed: suppressed
| プロパティ | 値 |
|---|---|
| コンポーネント | camel-platform-http (PlatformHttpEndpoint, COMMON_HTTP_REQUEST_HEADERS) |
| CWE | CWE-178 (大文字・小文字の扱いの不備) |
| 重大度 | MEDIUM |
| 攻撃ベクトル | 正規の表記と大文字・小文字が異なる名前のリクエストヘッダー (例: 任意の HTTP/2 リクエスト) |
| 影響 | 呼び出し元が選択したヘッダー内容がレスポンスに反映される — レスポンス分割 / キャッシュポイズニング、および抑制対象である認証情報ヘッダーの反射 |
| 影響を受けるバージョン | 4.0.0 から 4.18.5 未満、4.19.0 から 4.22.1 未満 |
| 修正済みバージョン | 4.18.5、4.22.1、4.23.0 |
| JIRA | CAMEL-24453 |
| クレジット | Claude Security Scan Tool |
アドバイザリ: https://camel.apache.org/security/CVE-2026-85254.html
PlatformHttpEndpoint は、COMMON_HTTP_REQUEST_HEADERS を大文字・小文字を区別する Set.of(...) ではなく、大文字・小文字を区別しない TreeSet(String.CASE_INSENSITIVE_ORDER) で保持するようになりました。これにより、呼び出し元がヘッダー名をどのように大文字・小文字で表記しても — HTTP/2 が要求するすべて小文字の名前を含めて — 抑制が一致するようになります。
対象のヘッダーを Camel エンドポイントの手前で除去するか、組み込みの抑制に頼るのではなくルート内でレスポンスから削除してください。
このリポジトリは教育および防御目的で公開されています。Apache Camel ユーザーが脆弱性を理解し、影響を受けているかどうかを確認し、アップグレードによって解決されることを検証できるようにするためです。注入されるヘッダー値は無害なローカルフィクスチャです。所有または運用していないシステムに対してこの資料を使用しないでください。