
Preuve de concept Spring Boot exécutable reproduisant CVE-2026-84176, une faille CORS avec identifiants acceptant toute origine dans Apache Camel camel-platform-http-vertx, avec les étapes de vérification.
Reproducteur de preuve de concept exécutable pour la vulnérabilité Apache Camel où VertxPlatformHttpServerSupport. createCorsHandler() définissait Access-Control-Allow-Credentials: true en dehors de la vérification d'origine — ainsi cet en-tête était émis sur
chaque réponse à une requête portant un en-tête Origin, y compris les réponses aux origines que le gestionnaire venait de décider
de ne pas autoriser. Lorsque camel.server.cors.origins n'est pas défini, le gestionnaire considère toutes les origines comme autorisées et renvoie
l'Origin de l'appelant lui-même comme Access-Control-Allow-Origin. Ensemble, ces comportements produisent la configuration avec identifiants, toutes origines
que la spécification Fetch refuse d'exprimer comme un joker littéral — c'est précisément pourquoi refléter l'origine
est le moyen habituel de contourner cette règle. Une page sur n'importe quelle origine peut donc effectuer des requêtes cross-origin avec identifiants vers le
point de terminaison Camel et lire les réponses.
| Runtime | Répertoire | Stack |
|---|---|---|
| Camel Spring Boot | camel-spring-boot/ | Spring Boot 3.5.13 + camel-platform-http-vertx 4.22.0 (affecté ; corrigé en 4.22.1) |
Camel Quarkus : non applicable. Le gestionnaire vulnérable se trouve dans le serveur platform-http Vert.x autonome de Camel (
camel-platform-http-vertx). Sur Camel Quarkus,platform-httpest servi par le serveur HTTP Quarkus et CORS est géré par Quarkus (quarkus.http.cors.*), et non parcreateCorsHandler(), donc ce défaut spécifique n'est pas atteignable ici. (Il n'existe pas non plus decamel-platform-http-vertx-starter; le module Spring Boot utilise l'artefactcamel-platform-http-vertxsimple, qui exécute son propre serveur Vert.x indépendamment du serveur web Spring Boot.)
L'application démarre le serveur platform-http Vert.x de Camel sur le port 8081 avec CORS activé et aucune origine configurée, et
une route platform-http:/api. L'attaquant envoie GET /api avec Origin: https://evil.example (une origine jamais
autorisée) et inspecte la réponse :
Access-Control-Allow-Origin: https://evil.example (reflétée) et
Access-Control-Allow-Credentials: true.Access-Control-Allow-Credentials n'est plus accordé à cette origine.cd camel-spring-boot
mvn clean package
docker compose up -d --build
curl -s http://localhost:8080/exploit/attack
docker compose down
Sortie attendue sur le build affecté :
Response CORS headers:
Access-Control-Allow-Origin = https://evil.example
Access-Control-Allow-Credentials = true
>>> PROVEN: the endpoint echoes the attacker's Origin ... and sends Access-Control-Allow-Credentials: true ...
| Propriété | Valeur |
|---|---|
| Composant | camel-platform-http-vertx |
| CWE | CWE-942 (Politique inter-domaines permissive avec des domaines non fiables) |
| Gravité | MOYENNE |
| Vecteur d'attaque | Une requête cross-origin (avec identifiants) portant un en-tête Origin vers un point de terminaison platform-http-vertx avec CORS activé et aucune origine configurée |
| Impact | Toute origine peut effectuer des requêtes cross-origin avec identifiants et lire les réponses |
| Versions affectées | À partir de 4.0.0 avant 4.18.5, à partir de 4.19.0 avant 4.22.1 |
| Versions corrigées | 4.18.5, 4.22.1, 4.23.0 |
| JIRA | CAMEL-24436 |
| Crédit | Claude Security Scan Tool |
Avis : https://camel.apache.org/security/CVE-2026-84176.html
Access-Control-Allow-Credentials: true n'est plus émis inconditionnellement pour chaque origine ; les identifiants ne sont pas accordés à une origine qui n'est pas explicitement autorisée, de sorte que la combinaison origine reflétée plus identifiants (« identifiants pour toute origine ») ne se produit plus.
Définissez une liste d'autorisation explicite camel.server.cors.origins, et ne vous appuyez pas sur un accès cross-origin avec identifiants depuis des origines arbitraires ; placez le point de terminaison derrière un proxy qui applique une politique CORS correcte.
Ce dépôt est publié à des fins éducatives et défensives : pour aider les utilisateurs d'Apache Camel à comprendre la vulnérabilité, à vérifier s'ils sont affectés et à confirmer que la mise à jour la résout. N'utilisez pas ce contenu contre des systèmes que vous ne possédez pas ou n'exploitez pas.