
Apache Camel の脆弱性に対する実行可能な概念実証(PoC)再現ツールです。この脆弱性では、エクスチェンジの処理が失敗した際に Mina コンシューマーが exchange.getException() をそのままソケット経由でリモートピアに書き戻して いました。
textline コーデックを使用している場合は、例外の クラス名とメッセージ がピアに渡されます。object コーデックを使用している場合は、シリアライズされた例外(原因チェーンを含む) が渡されます。障害を引き起こすことができるリモートピアは、デプロイメントに関する内部情報(クラス名やパッケージ名、メッセージやネストされた原因が運ぶ情報 — 実際にはパス、ホスト名、接続の詳細などが含まれます)を読み取ることができました。CAMEL-23651 で対応された HTTP ファミリーのコンシューマーとは異なり、このコンシューマーにはこれを抑制するオプションがありませんでした。
Spring Boot のみ。
camel-quarkus-mina拡張機能は存在しないため、この再現ツールは単一の Camel Spring Boot モジュールのみを提供します。(この欠陥はコンポーネントのMinaConsumerにあり、ランタイムに依存しません。)
| ランタイム | ディレクトリ | スタック |
|---|---|---|
| Camel Spring Boot | camel-spring-boot/ | Spring Boot 3.5.13 + camel-mina 4.22.0(影響あり、修正版 4.22.1) |
Mina TCP コンシューマー(sync=true、textline=true)は受信した各行を処理し、失敗します — これは内部エラーに遭遇する任意のルートを模したものです。このルートは IllegalStateException をスローし、そのメッセージには シミュレートされた 内部情報(偽の設定パス /etc/camel/secret.properties、偽のホスト、マーカートークン)が含まれています。エクスプロイトドライバーは単純なリモート TCP ピアです。ソケットを開き、1 行送信し、コンシューマーが書き戻す応答を読み取ります。
java.lang.IllegalStateException: INTERNAL-DETAIL-MARKER-7F3A2B config=/etc/camel/secret.properties db=internal-db.prod.svc。java.lang.Exception: Exchange processing failed です — ルートの例外のクラス、メッセージ、スタックトレースは含まれません — ただし応答自体は返されるため、同期ピアがタイムアウトすることはありません。cd camel-spring-boot
mvn clean package
docker compose up -d --build
curl -s http://localhost:8080/exploit/attack # affected: exception leaks over the socket; >>> PROVEN
docker compose down
# Patched control
mvn clean package -Dcamel.version=4.22.1
java -jar target/cve-2026-85246-mina-info-disclosure-0.0.1-SNAPSHOT.jar &
curl -s http://localhost:8080/exploit/attack # fixed: generic reply; >>> Not exploited
| プロパティ | 値 |
|---|---|
| コンポーネント | camel-mina (MinaConsumer.messageReceived) |
| CWE | CWE-209 (機密情報を含むエラーメッセージの生成) |
| 重大度 | MEDIUM |
| 攻撃ベクトル | リモートの TCP/UDP ピアがルート障害を引き起こし、ソケット経由で返信される応答から例外を読み取る |
| 影響 | 情報漏えい: textline コーデック経由では例外のクラス/メッセージが、object コーデック経由ではシリアライズされた例外とその原因チェーン(内部ホスト名、パス、接続の詳細)が漏えいする |
| 影響を受けるバージョン | 4.0.0 から 4.18.5 未満、4.19.0 から 4.22.1 未満 |
| 修正済みバージョン | 4.18.5、4.22.1、4.23.0 |
| JIRA | CAMEL-24476 |
| クレジット | Claude Security Scan Tool |
アドバイザリ: https://camel.apache.org/security/CVE-2026-85246.html
MinaConsumer は muteException コンシューマーオプション(デフォルト true)を追加します。
有効にすると、失敗した exchange は exchange.getException() を書き戻さなくなり、代わりに空のスタックトレースを持つ
代替の Exception("Exchange processing failed") を書き込みます。これは依然として Exception であるため(object コーデックのピアも
引き続き受け取ります)、ルートの例外のクラス、メッセージ、フレームは一切含みません。同期ピアがタイムアウトしないよう、
返信は引き続き書き込まれます。以前の動作に戻すには muteException=false を設定してください。
返信本文を明示的に設定する onException ハンドラーを追加し、フレームワークが例外をピアに書き戻さないようにしてください。
このリポジトリは教育および防御目的で公開されています。Apache Camel ユーザーが脆弱性を理解し、影響を受けているかどうかを確認し、 アップグレードによって解決されることを確証できるようにするためのものです。失敗するルート内の設定パス、ホスト、マーカートークンは、 無害な架空のローカルフィクスチャです。所有または運用していないシステムに対してこの資料を使用しないでください。