
PoC-Reproduzierer für CVE-2026-49042 (Apache Camel camel-langchain4j-tools): Die Tool-Call-Argumente eines per Prompt-Injection manipulierten LLM werden zu ungefilterten Exchange-Headern, wodurch der exec:-Sink der Tool-Route für RCE gekapert wird. Behoben in 4.14.8/4.18.3/4.21.0.
Ausführbare Proof-of-Concept-Reproduktionen für dieselbe Apache-Camel-Schwachstelle, eine pro Laufzeitumgebung:
| Laufzeitumgebung | Verzeichnis | Stack | Übernommener Sink | Demonstrierte Auswirkung |
|---|---|---|---|---|
| Camel Spring Boot | camel-spring-boot/ | Spring Boot 3.2.0 + camel-spring-boot 4.18.2 | exec: via CamelExecCommand* | Remote-Codeausführung |
| Camel Quarkus | camel-quarkus/ | Quarkus 3.36.0 + Camel Quarkus 3.36.0 (bündelt Camel 4.20.0) | http via CamelHttpUri | SSRF + Offenlegung von Geheimnissen |
Beide sind betroffene Versionen (behoben in 4.14.8 / 4.18.3 / 4.21.0) und zeigen denselben Defekt:
LangChain4jToolsProducer#invokeTools kopiert jedes Feld der Tool-Call-Argument-JSON des Modells direkt
in Exchange-Header, ohne Prüfung gegen das deklarierte Parameterschema. Das Tool deklariert einen Parameter
(host), aber ein per Prompt-Injection manipuliertes Modell emittiert zusätzliche Felder, die als Camel-Control-Header landen und
jeden Producer kapern, den die Tool-Route nachgelagert verwendet (CWE-20).
Es wird kein echtes LLM oder kein API-Schlüssel benötigt: Die Injection lebt vollständig in den Tool-Call-Argumenten, die ein Mock-Modell emittiert, genau wie ein per Jailbreak oder indirekter Prompt-Injection manipuliertes Modell sie produzieren würde.
Die Spring-Boot-Variante beweist RCE über einen exec:-Sink. Dieser Sink ist in Camel
4.20.0 (was Camel Quarkus 3.36.0 bündelt): CAMEL-23315 fügte eine Option allowControlHeaders zu
camel-exec hinzu, die standardmäßig auf false steht und erstmals in 4.20.0 ausgeliefert wurde. Diese Härtung ist unabhängig von dieser CVE und
behebt sie nicht — die injizierten Felder werden in 4.20.0 weiterhin zu Exchange-Headern (im Routenlog verifiziert);
nur dieser eine nachgelagerte Sink hat aufgehört, seine Control-Header zu beachten. Die Quarkus-Variante kapert daher den
http-Producer, der standardmäßig beachtet wird, und schmuggelt zusätzlich einen Camel-Property-Platzhalter ein, den der
Producer auflöst — was zu SSRF plus Offenlegung eines echten Anwendungsgeheimnisses führt.
Jedes Unterverzeichnis ist ein eigenständiges Projekt mit eigener Dockerfile, docker-compose.yml und eigenem README. Kurz
gesagt, für beide:
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
Sicherheitshinweis: https://camel.apache.org/security/CVE-2026-49042.html
Diese Reproduktionsprojekte werden ausschließlich für Sicherheitsforschung und autorisierte Tests bereitgestellt, für eine öffentlich bekannt gegebene und behobene Schwachstelle. Verwenden Sie sie nicht gegen Systeme ohne ausdrückliche Erlaubnis.
| Eigenschaft | Wert |
|---|
| Komponente | camel-langchain4j-tools (auch camel-langchain4j-agent, camel-spring-ai-tools) |
| Betroffene Klasse | org.apache.camel.component.langchain4j.tools.LangChain4jToolsProducer#invokeTools |
| CWE | CWE-20 (Unzureichende Eingabevalidierung) — ungefilterte Tool-Call-Argumente werden zu Exchange-Control-Headern |
| Auswirkung | RCE / SSRF / beliebiges Dateischreiben, abhängig vom nachgelagerten Producer der Tool-Route |
| Betroffene Versionen | 4.8.0–4.14.7, 4.15.0–4.18.2, 4.19.0–4.20.x |
| Behobene Versionen | 4.14.8, 4.18.3, 4.21.0 |
| JIRA | CAMEL-23621 (PR apache/camel#23535) |
| Entdecker | Yu Bao (PayPal) |