
CVE-2026-49042(Apache Camel camel-langchain4j-tools)のPoC再現コード:プロンプトインジェクションを受けたLLMのツール呼び出し引数が、フィルタリングされないExchangeヘッダーとなり、ツールルートのexec:シンクを乗っ取ってRCEを引き起こす。4.14.8/4.18.3/4.21.0で修正済み。
同じApache Camel脆弱性に対する実行可能な概念実証(PoC)再現コード。ランタイムごとに1つ用意されています:
| ランタイム | ディレクトリ | スタック | ハイジャックされるシンク | 実証される影響 |
|---|---|---|---|---|
| Camel Spring Boot | camel-spring-boot/ | Spring Boot 3.2.0 + camel-spring-boot 4.18.2 | CamelExecCommand*経由のexec: | リモートコード実行(RCE) |
| Camel Quarkus | camel-quarkus/ | Quarkus 3.36.0 + Camel Quarkus 3.36.0(Camel 4.20.0 をバンドル) | CamelHttpUri経由のhttp | SSRF + シークレット情報の漏えい |
どちらも影響を受けるバージョン(4.14.8 / 4.18.3 / 4.21.0で修正済み)であり、両方とも同一の欠陥を実証しています:LangChain4jToolsProducer#invokeTools は、モデルのツール呼び出し引数JSONのすべてのフィールドを、宣言されたパラメータスキーマに対するチェックなしでそのままExchangeヘッダーにコピーします。ツールは1つのパラメータ(host)しか宣言していないのに、プロンプトインジェクションされたモデルが追加フィールドを出力し、それらがCamelの制御ヘッダーとして扱われ、ツールルートが下流で使用するあらゆるプロデューサを乗っ取ります(CWE-20)。
実際のLLMやAPIキーは不要です。インジェクションはモックモデルが出力するツール呼び出し引数に完全に含まれており、ジェイルブレイクされた、または間接プロンプトインジェクションを受けたモデルが生成するものとまったく同じです。
Spring Bootバリアントは、exec:シンクを通じてRCEを実証します。このシンクは、Camel Quarkus 3.36.0がバンドルするCamel 4.20.0ではデフォルトで到達できません。CAMEL-23315がcamel-execにallowControlHeadersオプション(デフォルトfalse)を追加し、4.20.0で初めて搭載されたためです。この堅牢化は本CVEとは独立しており、本CVEを修正しません — 4.20.0でも注入されたフィールドはExchangeヘッダーになります(ルートログで確認済み)。ただ、その1つの下流シンクが制御ヘッダーを尊重しなくなっただけです。したがってQuarkusバリアントは、デフォルトで制御ヘッダーを尊重するhttpプロデューサをハイジャックし、さらにプロデューサが解決するCamelプロパティプレースホルダーを忍ばせます — これにより、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
セキュリティ勧告:https://camel.apache.org/security/CVE-2026-49042.html
これらの再現コードは、公開済みかつ修正済みの脆弱性に対するセキュリティ研究および許可されたテストのみを目的として提供されています。明示的な許可なくシステムに対して使用しないでください。
| プロパティ | 値 |
|---|
| コンポーネント | camel-langchain4j-tools(camel-langchain4j-agent、camel-spring-ai-tools も対象) |
| 影響を受けるクラス | org.apache.camel.component.langchain4j.tools.LangChain4jToolsProducer#invokeTools |
| CWE | CWE-20(不適切な入力検証)— フィルタリングされていないツール呼び出し引数がExchange制御ヘッダーになる |
| 影響 | ツールルートの下流プロデューサに応じて、RCE / SSRF / 任意のファイル書き込み |
| 影響を受けるバージョン | 4.8.0–4.14.7, 4.15.0–4.18.2, 4.19.0–4.20.x |
| 修正済みバージョン | 4.14.8, 4.18.3, 4.21.0 |
| JIRA | CAMEL-23621(PR apache/camel#23535) |
| クレジット | Yu Bao(PayPal) |