
Proof-of-concept eseguibile in Spring Boot che riproduce CVE-2026-84176, una vulnerabilità CORS con credenziali e qualsiasi origine in Apache Camel camel-platform-http-vertx, con passaggi di verifica.
Riproduttore proof-of-concept eseguibile per la vulnerabilità di Apache Camel in cui VertxPlatformHttpServerSupport. createCorsHandler() impostava Access-Control-Allow-Credentials: true al di fuori del controllo dell'origin — quindi
veniva inviato su ogni risposta a una richiesta che trasportava un header Origin, incluse le risposte verso origin che
l'handler aveva appena deciso di non consentire. Quando camel.server.cors.origins non è impostato, l'handler considera
ogni origin consentito e rimanda indietro l'Origin del chiamante stesso come Access-Control-Allow-Origin. Insieme,
questi comportamenti producono la configurazione credenziata any-origin che la specifica fetch rifiuta di esprimere
come wildcard letterale — esattamente il motivo per cui riflettere l'origin è il modo abituale per aggirare tale regola.
Una pagina su qualsiasi origin può quindi effettuare richieste cross-origin con credenziali verso l'endpoint Camel e
leggere le risposte.
| 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) |
Camel Quarkus: non applicabile. L'handler vulnerabile si trova nel server platform-http Vert.x autonomo di Camel (
camel-platform-http-vertx). Su Camel Quarkus,platform-httpè servito dal server HTTP di Quarkus e il CORS è gestito da Quarkus (quarkus.http.cors.*), non dacreateCorsHandler(), quindi questo specifico difetto non è raggiungibile in quel contesto. (Non esiste inoltre alcuncamel-platform-http-vertx-starter; il modulo Spring Boot utilizza il semplice artefattocamel-platform-http-vertx, che esegue un proprio server Vert.x indipendente dal server web di Spring Boot.)
L'app avvia il server platform-http Vert.x di Camel sulla porta 8081 con CORS abilitato e nessun origin configurato,
e una route platform-http:/api. L'attaccante invia GET /api con Origin: https://evil.example (un origin mai
inserito nella allow-list) e ispeziona la risposta:
Access-Control-Allow-Origin: https://evil.example (riflesso) e
Access-Control-Allow-Credentials: true.Access-Control-Allow-Credentials non viene più concesso a questo origin.cd camel-spring-boot
mvn clean package
docker compose up -d --build
curl -s http://localhost:8080/exploit/attack
docker compose down
Output atteso sulla build interessata:
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 ...
| Proprietà | Valore |
|---|---|
| Componente | camel-platform-http-vertx |
| CWE | CWE-942 (Permissive Cross-domain Policy with Untrusted Domains) |
| Gravità | MEDIA |
| Vettore di attacco | Una richiesta cross-origin (con credenziali) che trasporta un header Origin verso un endpoint platform-http-vertx con CORS abilitato e nessuna origine configurata |
| Impatto | Qualsiasi origine può effettuare richieste cross-origin con credenziali e leggere le risposte |
| 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-24436 |
| Credito | Claude Security Scan Tool |
Advisory: https://camel.apache.org/security/CVE-2026-84176.html
Access-Control-Allow-Credentials: true non viene più emesso incondizionatamente per ogni origine; le credenziali non
vengono concesse a un'origine non esplicitamente consentita, quindi la combinazione origine-riflessa-più-credenziali
("credenziali per qualsiasi origine") non si verifica più.
Impostare una allow-list esplicita camel.server.cors.origins e non fare affidamento sull'accesso cross-origin con
credenziali da origini arbitrarie; collocare l'endpoint dietro un proxy che applichi una policy CORS corretta.
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. Non utilizzare questo materiale contro sistemi di cui non si è proprietari o gestori.