
CVE-2026-49042 — Updated!
Reprodutor de PoC para CVE-2026-49042 (Apache Camel camel-langchain4j-tools): os argumentos de chamada de ferramenta de um LLM com injeção de prompt tornam-se cabeçalhos Exchange não filtrados, sequestrando o sink exec: da rota da ferramenta para RCE. Corrigido em 4.14.8/4.18.3/4.21.0.
CVE-2026-49042 — camel-langchain4j-tools Injeção de Prompt → Injeção de Cabeçalho
Reprodutores de prova de conceito executáveis para a mesma vulnerabilidade do Apache Camel, um por runtime:
| Runtime | Diretório | Stack | Sink sequestrado | Impacto demonstrado |
|---|---|---|---|---|
| Camel Spring Boot | camel-spring-boot/ | Spring Boot 3.2.0 + camel-spring-boot 4.18.2 | exec: via CamelExecCommand* | execução remota de código |
| Camel Quarkus | camel-quarkus/ | Quarkus 3.36.0 + Camel Quarkus 3.36.0 (inclui Camel 4.20.0) | http via CamelHttpUri | SSRF + divulgação de segredos |
Ambas são versões afetadas (corrigidas em 4.14.8 / 4.18.3 / 4.21.0), e ambas demonstram o mesmo defeito:
LangChain4jToolsProducer#invokeTools copia todos os campos do JSON de argumentos de chamada de ferramenta do modelo
diretamente para os cabeçalhos do Exchange, sem qualquer verificação contra o esquema de parâmetros declarado. A ferramenta declara um parâmetro
(host), mas um modelo com injeção de prompt emite campos adicionais que se tornam cabeçalhos de controle do Camel e sequestram
qualquer produtor que a rota da ferramenta use a jusante (CWE-20).
Nenhum LLM real ou chave de API é necessário: a injeção vive inteiramente nos argumentos de chamada de ferramenta que um modelo simulado emite, exatamente como um modelo com jailbreak ou injeção indireta de prompt produziria.
Por que as duas variantes sequestram sinks diferentes
A variante Spring Boot prova RCE através de um sink exec:. Esse sink não é alcançável por padrão no Camel
4.20.0 (o que o Camel Quarkus 3.36.0 inclui): CAMEL-23315 adicionou uma opção allowControlHeaders ao
camel-exec, com padrão false, lançada pela primeira vez em 4.20.0. Esse endurecimento é independente deste CVE e
não o corrige — os campos injetados ainda se tornam cabeçalhos do Exchange na versão 4.20.0 (verificado no log da rota);
apenas aquele sink a jusante parou de honrar seus cabeçalhos de controle. A variante Quarkus, portanto, sequestra o
produtor http, que é honrado por padrão, e adicionalmente contrabandeia um placeholder de propriedade do Camel que o
produtor resolve — resultando em SSRF mais divulgação de um segredo real da aplicação.
Cada subdiretório é um projeto autossuficiente com seu próprio Dockerfile, docker-compose.yml e README. Em
resumo, para qualquer um deles:
cd camel-spring-boot # ou: cd camel-quarkus
mvn clean package
docker compose up -d --build
curl -s http://localhost:8080/exploit/attack
docker compose down
Resumo da Vulnerabilidade
| Propriedade | Valor |
|---|---|
| Componente | camel-langchain4j-tools (também camel-langchain4j-agent, camel-spring-ai-tools) |
| Classe Afetada | org.apache.camel.component.langchain4j.tools.LangChain4jToolsProducer#invokeTools |
| CWE | CWE-20 (Validação de Entrada Incorreta) — argumentos de chamada de ferramenta não filtrados se tornam cabeçalhos de controle do Exchange |
| Impacto | RCE / SSRF / escrita arbitrária de arquivos, dependendo do produtor a jusante da rota da ferramenta |
| Versões Afetadas | 4.8.0–4.14.7, 4.15.0–4.18.2, 4.19.0–4.20.x |
| Versões Corrigidas | 4.14.8, 4.18.3, 4.21.0 |
| JIRA | CAMEL-23621 (PR apache/camel#23535) |
| Crédito | Yu Bao (PayPal) |
Aviso: https://camel.apache.org/security/CVE-2026-49042.html
Aviso Legal
Estes reprodutores são fornecidos apenas para pesquisa de segurança e testes autorizados, para uma vulnerabilidade divulgada publicamente e corrigida. Não os utilize contra sistemas sem permissão explícita.