Torna agli aggiornamenti
UpdatedJul 31, 2026

CVE-2026-49042 — Updated!

Riproduttore PoC per CVE-2026-49042 (Apache Camel camel-langchain4j-tools): gli argomenti delle tool-call di un LLM colpito da prompt injection diventano header Exchange non filtrati, dirottando il sink exec: della route dello strumento per ottenere RCE. Corretto nelle versioni 4.14.8/4.18.3/4.21.0.

Condividi

CVE-2026-49042 — camel-langchain4j-tools Prompt-Injection → Header-Injection

Reproducer proof-of-concept eseguibili per la stessa vulnerabilità Apache Camel, uno per runtime:

RuntimeDirectoryStackSink dirottatoImpatto dimostrato
Camel Spring Bootcamel-spring-boot/Spring Boot 3.2.0 + camel-spring-boot 4.18.2exec: via CamelExecCommand*esecuzione remota di codice
Camel Quarkuscamel-quarkus/Quarkus 3.36.0 + Camel Quarkus 3.36.0 (che include Camel 4.20.0)http via CamelHttpUriSSRF + divulgazione di segreti

Entrambe sono versioni interessate (corrette in 4.14.8 / 4.18.3 / 4.21.0) e dimostrano il medesimo difetto: LangChain4jToolsProducer#invokeTools copia ogni campo del JSON degli argomenti di tool-call del modello direttamente nelle intestazioni Exchange, senza alcun controllo rispetto allo schema dei parametri dichiarato. Il tool dichiara un solo parametro (host), ma un modello manipolato tramite iniezione nel prompt emette campi aggiuntivi che finiscono come intestazioni di controllo Camel e dirottano qualunque producer utilizzi la route del tool a valle (CWE-20).

Non serve alcun LLM reale né chiave API: l'iniezione risiede interamente negli argomenti di tool-call emessi da un modello mock, esattamente come li produrrebbe un modello jailbroken o soggetto a iniezione indiretta nel prompt.

Perché le due varianti dirottano sink diversi

La variante Spring Boot dimostra RCE tramite un sink exec:. Quel sink non è raggiungibile di default su Camel 4.20.0 (quella inclusa in Camel Quarkus 3.36.0): CAMEL-23315 ha aggiunto un'opzione allowControlHeaders a camel-exec, con default false, distribuita per la prima volta in 4.20.0. Questa mitigazione è indipendente da questa CVE e non la corregge — i campi iniettati diventano comunque intestazioni Exchange in 4.20.0 (verificato nel log della route); solo quel singolo sink a valle ha smesso di onorare le proprie intestazioni di controllo. La variante Quarkus dirotta quindi il producer http, che è onorato di default, e in più introduce di nascosto un property placeholder Camel che il producer risolve — con conseguente SSRF e divulgazione di un segreto reale dell'applicazione.

Ogni sottodirectory è un progetto autonomo con il proprio Dockerfile, docker-compose.yml e README. In breve, per entrambi:

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

Riepilogo della vulnerabilità

ProprietàValore
Componentecamel-langchain4j-tools (anche camel-langchain4j-agent, camel-spring-ai-tools)
Classe interessataorg.apache.camel.component.langchain4j.tools.LangChain4jToolsProducer#invokeTools
CWECWE-20 (Improper Input Validation) — gli argomenti di tool-call non filtrati diventano intestazioni di controllo Exchange
ImpattoRCE / SSRF / scrittura arbitraria di file, a seconda del producer a valle nella route del tool
Versioni interessate4.8.0–4.14.7, 4.15.0–4.18.2, 4.19.0–4.20.x
Versioni corrette4.14.8, 4.18.3, 4.21.0
JIRACAMEL-23621 (PR apache/camel#23535)
CreditiYu Bao (PayPal)

Advisory: https://camel.apache.org/security/CVE-2026-49042.html

Esclusione di responsabilità

Questi reproducer sono forniti esclusivamente per ricerca sulla sicurezza e test autorizzati, per una vulnerabilità divulgata pubblicamente e corretta. Non utilizzarli contro sistemi senza autorizzazione esplicita.

Categorie