
Prova de conceito executável em Spring Boot que reproduz a CVE-2026-84176, uma falha de CORS com credenciais e qualquer origem no Apache Camel camel-platform-http-vertx, com etapas de verificação.
Reprodutor de prova de conceito executável para a vulnerabilidade do Apache Camel em que VertxPlatformHttpServerSupport. createCorsHandler() definia Access-Control-Allow-Credentials: true fora da verificação de origem — de modo que esse cabeçalho era enviado em
toda resposta a uma requisição que carregasse um cabeçalho Origin, incluindo respostas a origens que o handler acabara de decidir
não permitir. Quando camel.server.cors.origins não está definido, o handler trata toda origem como permitida e ecoa o
próprio Origin do chamador de volta como Access-Control-Allow-Origin. Juntos, esses comportamentos produzem a configuração de
qualquer origem com credenciais que a especificação Fetch se recusa a expressar como um curinga literal — exatamente por isso refletir a origem
é a forma usual de contornar essa regra. Uma página em qualquer origem pode, portanto, fazer requisições cross-origin com credenciais ao
endpoint do Camel e ler as respostas.
| Runtime | Diretório | Stack |
|---|---|---|
| Camel Spring Boot | camel-spring-boot/ | Spring Boot 3.5.13 + camel-platform-http-vertx 4.22.0 (afetado; corrigido em 4.22.1) |
Camel Quarkus: não aplicável. O handler vulnerável está no servidor platform-http Vert.x autônomo do próprio Camel (
camel-platform-http-vertx). No Camel Quarkus, oplatform-httpé servido pelo servidor HTTP do Quarkus e o CORS é tratado pelo Quarkus (quarkus.http.cors.*), não porcreateCorsHandler(), portanto esse defeito específico não é alcançável ali. (Também não existecamel-platform-http-vertx-starter; o módulo Spring Boot usa o artefato simplescamel-platform-http-vertx, que executa seu próprio servidor Vert.x independente do servidor web do Spring Boot.)
A aplicação inicia o servidor platform-http Vert.x do Camel na porta 8081 com CORS habilitado e sem origens configuradas, e
uma rota platform-http:/api. O atacante envia GET /api com Origin: https://evil.example (uma origem nunca
incluída na allow-list) e inspeciona a resposta:
Access-Control-Allow-Origin: https://evil.example (refletido) e
Access-Control-Allow-Credentials: true.Access-Control-Allow-Credentials não é mais concedido a essa origem.cd camel-spring-boot
mvn clean package
docker compose up -d --build
curl -s http://localhost:8080/exploit/attack
docker compose down
Saída esperada na build afetada:
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 ...
| Propriedade | Valor |
|---|---|
| Componente | camel-platform-http-vertx |
| CWE | CWE-942 (Política Cross-domain Permissiva com Domínios Não Confiáveis) |
| Severidade | MÉDIA |
| Vetor de ataque | Uma requisição cross-origin (com credenciais) carregando um cabeçalho Origin para um endpoint platform-http-vertx com CORS habilitado e sem origens configuradas |
| Impacto | Qualquer origem pode fazer requisições cross-origin com credenciais e ler as respostas |
| Versões Afetadas | A partir de 4.0.0 antes de 4.18.5, a partir de 4.19.0 antes de 4.22.1 |
| Versões Corrigidas | 4.18.5, 4.22.1, 4.23.0 |
| JIRA | CAMEL-24436 |
| Crédito | Claude Security Scan Tool |
Aviso: https://camel.apache.org/security/CVE-2026-84176.html
Access-Control-Allow-Credentials: true não é mais emitido incondicionalmente para toda origem; credenciais não são
concedidas a uma origem que não seja explicitamente permitida, de modo que a combinação de origem refletida mais
credenciais ("qualquer origem com credenciais") não ocorre mais.
Defina uma lista de permissões explícita em camel.server.cors.origins, e não dependa de acesso cross-origin com
credenciais a partir de origens arbitrárias; coloque o endpoint atrás de um proxy que imponha uma política CORS correta.
Este repositório é publicado para fins educacionais e defensivos: para ajudar usuários do Apache Camel a entender a vulnerabilidade, verificar se são afetados e confirmar que a atualização a resolve. Não use este material contra sistemas que você não possui ou opera.