
Reproducteur exécutable Spring Boot et Quarkus pour CVE-2026-85254, démontrant le contournement de la suppression d'écho d'en-tête d'Apache Camel camel-platform-http via la casse du nom d'en-tête, avec des contrôles affectés et corrigés.
Reproducteur de preuve de concept exécutable pour la vulnérabilité Apache Camel où la protection qui empêche un en-tête de requête
d'être répercuté dans la réponse comparait les noms d'en-têtes de manière sensible à la casse, alors que les noms d'en-têtes HTTP sont
insensibles à la casse. Un appelant pouvait contourner la suppression simplement en variant la casse du nom d'en-tête — et sous
HTTP/2, elle ne correspondait jamais du tout, car le protocole exige que les noms d'en-têtes soient en minuscules sur le fil, de sorte que
la suppression était inopérante pour toute requête HTTP/2. La conséquence est que le contenu choisi par l'appelant est renvoyé dans la
réponse (la base des attaques par division de réponse et empoisonnement de cache), et il reflète précisément les en-têtes d'identification
(Authorization, Cookie, Proxy-Authorization) que la suppression est censée empêcher de sortir dans la réponse.
| Runtime | Répertoire | Pile |
|---|---|---|
| Camel Spring Boot | camel-spring-boot/ | Spring Boot 3.5.13 + camel-platform-http-vertx 4.22.0 (affecté ; corrigé en 4.22.1), serveur Vert.x de Camel |
| Camel Quarkus | camel-quarkus/ | Quarkus 3.29.0 + camel-quarkus-platform-http (Camel 4.15.0, affecté ; témoin corrigé CQ 3.40.0 / Camel 4.22.1) |
Les deux modules démontrent le comportement affecté ainsi que le comportement corrigé.
Un point de terminaison platform-http:/echo est exposé. Son HeaderFilterStrategy est censé supprimer les en-têtes de requête courants
de la réponse. Le pilote vérifie directement la stratégie et envoie également une requête réelle portant un en-tête d'identification en
minuscules (style HTTP/2).
Authorization (forme canonique) mais pas authorization (minuscules), et une
requête réelle portant authorization: Bearer <secret> est renvoyée dans la réponse.# Camel Spring Boot
cd camel-spring-boot
mvn clean package
docker compose up -d --build
curl -s http://localhost:8080/exploit/attack # affected: lowercase header echoed back; >>> PROVEN
docker compose down
# Patched control
mvn clean package -Dcamel.version=4.22.1
java -jar target/cve-2026-85254-platform-http-header-echo-0.0.1-SNAPSHOT.jar &
curl -s http://localhost:8080/exploit/attack # fixed: suppressed; >>> Not exploited
# Camel Quarkus
cd camel-quarkus
mvn clean package
docker compose up -d --build
curl -s http://localhost:8080/exploit/attack # affected (Camel 4.15.0): lowercase header echoed back
docker compose down
# Patched control: CQ 3.40.0 ships Camel 4.22.1
mvn clean package -Dcamel-quarkus.version=3.40.0 -Dquarkus.platform.version=3.40.0
java -jar target/quarkus-app/quarkus-run.jar &
curl -s http://localhost:8080/exploit/attack # fixed: suppressed
| Propriété | Valeur |
|---|---|
| Composant | camel-platform-http (PlatformHttpEndpoint, COMMON_HTTP_REQUEST_HEADERS) |
| CWE | CWE-178 (Gestion incorrecte de la sensibilité à la casse) |
| Gravité | MOYENNE |
| Vecteur d'attaque | Un en-tête de requête dont le nom diffère par la casse de l'orthographe canonique (par exemple, toute requête HTTP/2) |
| Impact | Contenu d'en-tête choisi par l'appelant renvoyé dans la réponse — response-splitting / empoisonnement de cache, et réflexion des en-têtes d'identification que la suppression est censée retenir |
| 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-24453 |
| Crédit | Claude Security Scan Tool |
Avis : https://camel.apache.org/security/CVE-2026-85254.html
PlatformHttpEndpoint conserve désormais COMMON_HTTP_REQUEST_HEADERS dans un
TreeSet(String.CASE_INSENSITIVE_ORDER) insensible à la casse au lieu d'un Set.of(...) sensible à la casse, de sorte que la
suppression corresponde quelle que soit la casse utilisée par l'appelant pour le nom de l'en-tête — y compris les noms entièrement en minuscules
qu'exige HTTP/2.
Supprimez les en-têtes en question en amont du point de terminaison Camel, ou retirez-les de la réponse dans la route plutôt que de vous fier à la suppression intégrée.
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. La valeur d'en-tête injectée est un élément local inerte. N'utilisez pas ce contenu contre des systèmes que vous ne possédez pas ou n'exploitez pas.