MimeMultipart ヘッダーインジェクション(headersInline)同じApache Camel脆弱性に対する実行可能な概念実証(PoC)リプロデューサーです。ランタイムごとに1つ用意しています:
両方とも影響を受けるバージョンです(この問題は4.14.9 / 4.18.4 / 4.22.0で修正済み)。また、両方とも同じ欠陥を示しています:camel-mailのMimeMultipartデータフォーマットは、headersInline=trueでアンマーシャリングする際、受信メッセージのすべての非標準MIMEヘッダーを、HeaderFilterStrategyを一切適用せずにsetHeader経由でCamel Exchangeにコピーします。MIMEヘッダー名は信頼できないボディに由来するため、送信者はCamel内部ネームスペース(例:CamelHttpUri)にヘッダーを配置し、ルートがHTTP境界でCamel*ヘッダーを除去した後でも、それをExchangeに設定させることができます。その後、下流コンポーネントが注入された制御ヘッダーを読み取ります(ヘッダーインジェクション → CWE-74)。
これらのリプロデューサーでは、注入されたCamelHttpUriが下流のHTTPプロデューサーを、意図された/legit-backendから内部の/internal/secretエンドポイント(SSRF)へリダイレクトし、内部データが目に見えて返されます。
各サブディレクトリは自己完結型プロジェクトで、独自の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
影響を受けるビルドでの期待される出力:
1) Benign MIME (no injected header):
/ingest responded: LEGIT: your message was accepted
2) Malicious MIME (injected MIME header 'CamelHttpUri: http://localhost:8080/internal/secret'):
/ingest responded: SECRET: internal_db_password=S3cr3t-INTERNAL-9f2a
>>> PROVEN: ... redirecting the HTTP producer to an internal service (SSRF): true
アドバイザリ: https://camel.apache.org/security/CVE-2026-59230.html
MimeMultipartDataFormat.copyNonStandardHeadersは、Exchangeに設定する前に、受信した各MIMEヘッダーをMailHeaderFilterStrategyに通すようになりました。これは、メールコンシューマーが受信時に既に適用しているフィルタリングと整合します。そのため、信頼できないボディ由来のCamel*ヘッダーは、そのままコピーされることなく破棄されます:
// fixed
if (headerFilterStrategy.applyFilterToExternalHeaders(header.getName(), header.getValue(),
camelMessage.getExchange())) {
continue; // filtered
}
camelMessage.setHeader(header.getName(), header.getValue());
このリポジトリは、教育および防御目的で公開されています。Apache Camelユーザーが脆弱性を理解し、自分たちが影響を受けるかどうかを確認し、アップグレードによって解決されることを確認するのに役立ちます。ペイロードは無害です(ローカルエンドポイントへのリダイレクト)。所有または運用していないシステムに対してこの資料を使用しないでください。
| ランタイム | ディレクトリ | スタック |
|---|
| Camel Spring Boot | camel-spring-boot/ | Spring Boot 3.5.13 + camel-spring-boot 4.18.2 |
| Camel Quarkus | camel-quarkus/ | Quarkus 3.36.0 + Camel Quarkus 3.36.0(Camel 4.20.0 を同梱) |
| プロパティ | 値 |
|---|
| コンポーネント | camel-mail — MimeMultipartデータフォーマット(Spring Boot: camel-mail-starter、Quarkus: camel-quarkus-mail) |
| CWE | CWE-20(不適切な入力検証)→ CWE-74(インジェクション) |
| 攻撃ベクトル | headersInline=trueでアンマーシャリングされた巧妙に細工されたMIMEマルチパートボディ |
| 影響 | ExchangeへのCamel内部制御ヘッダーの注入(ここでは:CamelHttpUri → SSRF) |
| 影響を受けるバージョン | 2.17.0から4.14.9未満、4.15.0から4.18.4未満、4.19.0から4.22.0未満 |
| 修正済みバージョン | 4.14.9、4.18.4、4.22.0 |
| JIRA | CAMEL-23891 |
| クレジット | Atuin — Automated Vulnerability Discovery Engine、Tencent Xuanwu Lab の anciety |