
Apache Camelの脆弱性に対する実行可能な概念実証(PoC)再現ツールです。この脆弱性では、リクエストごとの署名素材が、処理中のリクエストに限定されるのではなく、リクエスト間で共有される状態に保持されていました。単一のResponseMDNが共有HttpProcessorに登録され、すべてのAS2リクエストを処理します。動的鍵構成(パスごとに1つの取引パートナーを持ち、それぞれがHttpContextからリクエストごとに解決される独自の鍵を持つ)において、影響を受けるビルドは、解決されたリクエストごとの署名鍵をインスタンスフィールドに書き戻していました。複数のパートナーを処理するデプロイでは、並行または連続するリクエストが互いの素材を観測する可能性があり、Message Disposition Notificationが別の取引パートナーの鍵で署名される可能性がありました。AS2デプロイは通常、設計上マルチパートナーであるため、この条件は通常の並行トラフィックによって到達されます。
| ランタイム | ディレクトリ | スタック |
|---|---|---|
| Camel Spring Boot | camel-spring-boot/ | Spring Boot 3.5.13 + camel-as2 4.22.0(影響あり、修正版 4.22.1) |
| Camel Quarkus | camel-quarkus/ | Quarkus 3.39.0 + camel-quarkus-as2(Camel 4.22.0、影響あり、修正対照 CQ 3.40.0 / Camel 4.22.1) |
両方のモジュールが、影響を受ける動作および修正済みの動作を示します。
ドライバは、動的鍵形式の実際のResponseMDN(AS2レスポンスインターセプタ)を使用します。2つのパートナーの署名素材を順番に解決します — まずパートナーA、次にパートナーB — ResponseMDN.process(...)を通じて(それぞれのRSA鍵をHttpContextに設定)、各処理後にインスタンスのsigningPrivateKeyフィールドを読み取ります。
finalであり、決して書き込まれません。リクエストごとの鍵はリクエストに限定されるため、共有インスタンスのsigningPrivateKeyはnullのままです。# Camel Spring Boot
cd camel-spring-boot
mvn clean package
docker compose up -d --build
curl -s http://localhost:8080/exploit/attack # affected: per-request key on the shared instance; >>> PROVEN
docker compose down
# Patched control
mvn clean package -Dcamel.version=4.22.1
java -jar target/cve-2026-85296-as2-signing-key-confusion-0.0.1-SNAPSHOT.jar &
curl -s http://localhost:8080/exploit/attack # fixed: field stays null; >>> 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.22.0): per-request key on the shared instance
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: field stays null
| プロパティ | 値 |
|---|---|
| コンポーネント | camel-as2(ResponseMDN の動的キー処理) |
| CWE | CWE-488(データ要素の誤ったセッションへの露出) |
| 深刻度 | MEDIUM |
| 攻撃ベクトル | 単一の ResponseMDN インスタンスを共有するマルチパートナー展開における、通常の並行 AS2 トラフィック |
| 影響 | 別の取引パートナーの秘密鍵で署名された Message Disposition Notification。パートナー間での署名素材の再利用 |
| 影響を受けるバージョン | 4.0.0 から 4.18.5 未満、4.19.0 から 4.22.1 未満 |
| 修正済みバージョン | 4.18.5、4.22.1、4.23.0 |
| JIRA | CAMEL-24429 |
| クレジット | Claude Security Scan Tool |
アドバイザリ: https://camel.apache.org/security/CVE-2026-85296.html
Quarkus の影響を受けるモジュールは CQ 3.39.0(Camel 4.22.0)でビルドされています。この PoC が対象とする リクエストごとの動的 AS2 署名鍵メカニズムは CQ 3.29.0(Camel 4.15.0)より後に導入されたものであるため、 CQ 3.39.0 は Spring Boot モジュールと同じ Camel 4.22.0 を同梱しています。
ResponseMDN は、設定されたセキュリティフィールドを final にし、
リクエストごとの動的な素材を process() 内のローカル変数に解決するようにして、インスタンスフィールドへ
書き戻すことは一切なくなりました。これにより、単一の共有インスタンスが、あるリクエストの署名鍵を別の
リクエストへ漏洩させることができなくなりました。
取引パートナーごとに個別の Camel コンテキストを実行し、パートナー間で署名素材が共有されないようにしてください。
このリポジトリは教育および防御目的で公開されています。Apache Camel ユーザーが脆弱性を理解し、影響を受けているか どうかを確認し、アップグレードによって解決されることを確証できるようにするためのものです。RSA 鍵ペアは デモンストレーション用にプロセス内で生成されるものであり、無害です。この資料を、所有または運用していない システムに対して使用しないでください。