
Reproducteur pour CVE-2026-46726 : injection d'en-têtes entrants non filtrés dans camel-vertx-websocket d'Apache Camel permettant une SSRF et la divulgation de secrets via la résolution de property-placeholder (corrigé dans 4.14.8/4.18.3/4.21.0)
Reproducteurs de preuve de concept exécutables pour la même vulnérabilité Apache Camel, un par runtime :
| Runtime | Répertoire | Stack | Flux WebSocket |
|---|---|---|---|
| Camel Spring Boot | camel-spring-boot/ | Spring Boot 3.2.0 + camel-spring-boot 4.18.2 | port séparé :8090 |
| Camel Quarkus | camel-quarkus/ | Quarkus 3.36.0 + Camel Quarkus 3.36.0 (embarque Camel 4.20.0) | serveur HTTP Quarkus géré :8080 |
Les deux sont des versions affectées (corrigées en 4.14.8 / 4.18.3 / 4.21.0) et démontrent toutes deux le même défaut :
VertxWebsocketConsumer#populateExchangeHeaders copie les paramètres de requête de la connexion WebSocket sur
l'Exchange sans HeaderFilterStrategy. Un client fournit CamelHttpUri comme paramètre de requête et oriente
le producteur camel-http en aval où bon lui semble (SSRF, CWE-918). Comme le producteur résout également les
placeholders de propriétés Camel sur cet URI contrôlé par l'attaquant, un {{app.secret}} injecté est résolu en sa valeur réelle
et envoyé au collecteur de l'attaquant (exposition d'informations, CWE-200).
Les deux variantes ne diffèrent que par l'endroit où le flux est servi : l'extension
camel-quarkus-vertx-websocketlie toujours le consommateur au serveur HTTP Quarkus géré et rejette tout autre hôte/port, de sorte que la variante Quarkus sert/feedsur:8080aux côtés de ses points de terminaison REST. Le défaut n'est pas affecté.
Chaque sous-répertoire est un projet autonome avec son propre Dockerfile, docker-compose.yml et README. En
bref, pour l'un ou l'autre :
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
Avis de sécurité : https://camel.apache.org/security/CVE-2026-46726.html
Ces reproducteurs sont fournis uniquement pour la recherche en sécurité et les tests autorisés, pour une vulnérabilité publiquement divulguée et corrigée. Ne les utilisez pas contre des systèmes sans autorisation explicite.
| Propriété | Valeur |
|---|
| Composant | camel-vertx-websocket |
| Classe affectée | org.apache.camel.component.vertx.websocket.VertxWebsocketConsumer#populateExchangeHeaders (aucun HeaderFilterStrategy sur les paramètres de requête/chemin entrants) |
| CWE | CWE-20 → CWE-918 (SSRF) et CWE-200 (exposition d'informations) |
| Impact | Injecter CamelHttpUri via un paramètre de requête WebSocket → SSRF depuis un producteur HTTP aval + divulgation de secrets d'environnement/propriétés/coffre via la résolution de placeholders |
| Versions affectées | De 4.0.0 avant 4.14.8, de 4.15.0 avant 4.18.3, de 4.19.0 avant 4.21.0 |
| Versions corrigées | 4.14.8, 4.18.3, 4.21.0 |
| JIRA | CAMEL-23532 (PR apache/camel#23285) |
| Crédit | Kamalpreet Singh |