
Reproducer eseguibile per Spring Boot e Quarkus per CVE-2026-85254, che dimostra il bypass della soppressione dell'echo degli header in Apache Camel camel-platform-http tramite la variazione di maiuscole/minuscole nei nomi degli header, con controlli vulnerabili e corretti.
Riproduttore proof-of-concept eseguibile per la vulnerabilità di Apache Camel in cui la protezione che impedisce che un header di richiesta venga riflesso nella risposta confrontava i nomi degli header in modo case-sensitive, mentre i nomi degli header HTTP sono case-insensitive. Un chiamante poteva aggirare la soppressione semplicemente variando le maiuscole/minuscole del nome dell'header — e sotto HTTP/2 non corrispondeva mai, perché il protocollo richiede che i nomi degli header siano in minuscolo sul filo, quindi la soppressione era inerte per ogni richiesta HTTP/2. La conseguenza è che il contenuto scelto dal chiamante viene restituito nella risposta (la base per attacchi di response-splitting e cache-poisoning), e riflette proprio gli header di credenziali (Authorization, Cookie, Proxy-Authorization) che la soppressione dovrebbe tenere fuori dalla risposta.
| Runtime | Directory | Stack |
|---|---|---|
| Camel Spring Boot | camel-spring-boot/ | Spring Boot 3.5.13 + camel-platform-http-vertx 4.22.0 (affetto; corretto in 4.22.1), server Vert.x di Camel |
| Camel Quarkus | camel-quarkus/ | Quarkus 3.29.0 + camel-quarkus-platform-http (Camel 4.15.0, affetto; controllo corretto CQ 3.40.0 / Camel 4.22.1) |
Entrambi i moduli dimostrano il comportamento affetto e quello corretto.
Viene servito un endpoint platform-http:/echo. Il suo HeaderFilterStrategy dovrebbe sopprimere gli header di richiesta comuni dalla risposta. Il driver verifica direttamente la strategia e invia anche una richiesta live che trasporta un header di credenziali in minuscolo (stile HTTP/2).
Authorization (canonico) ma non authorization (minuscolo), e una richiesta live che trasporta authorization: Bearer <secret> viene restituita nella risposta.# 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
| Proprietà | Valore |
|---|---|
| Componente | camel-platform-http (PlatformHttpEndpoint, COMMON_HTTP_REQUEST_HEADERS) |
| CWE | CWE-178 (Gestione impropria della distinzione tra maiuscole e minuscole) |
| Gravità | MEDIA |
| Vettore di attacco | Un'intestazione di richiesta il cui nome ha una capitalizzazione diversa dalla grafia canonica (ad es. qualsiasi richiesta HTTP/2) |
| Impatto | Contenuto dell'intestazione scelto dal chiamante riflesso nella risposta — response-splitting / cache-poisoning, e riflessione delle intestazioni di credenziali che la soppressione dovrebbe trattenere |
| Versioni interessate | Dalla 4.0.0 precedente alla 4.18.5, dalla 4.19.0 precedente alla 4.22.1 |
| Versioni corrette | 4.18.5, 4.22.1, 4.23.0 |
| JIRA | CAMEL-24453 |
| Riconoscimento | Claude Security Scan Tool |
Avviso: https://camel.apache.org/security/CVE-2026-85254.html
PlatformHttpEndpoint ora mantiene COMMON_HTTP_REQUEST_HEADERS in un
TreeSet(String.CASE_INSENSITIVE_ORDER) senza distinzione tra maiuscole e minuscole invece di un Set.of(...) sensibile alle maiuscole, così la
soppressione corrisponde indipendentemente da come il chiamante ha scritto il nome dell'intestazione — inclusi i nomi tutti in minuscolo
richiesti da HTTP/2.
Rimuovere le intestazioni in questione davanti all'endpoint Camel, oppure rimuoverle dalla risposta nella route invece di affidarsi alla soppressione integrata.
Questo repository è pubblicato per scopi educativi e difensivi: per aiutare gli utenti di Apache Camel a comprendere la vulnerabilità, verificare se sono interessati e confermare che l'aggiornamento la risolve. Il valore dell'intestazione iniettato è un fixture locale inerte. Non utilizzare questo materiale contro sistemi di cui non si è proprietari o gestori.