CVE-2026-66908
Apache Camel: Camel-platform-http-main: quando a autenticação JWT foi configurada com um keystore, mas sem emissor ou público-alvo, as declarações iss e aud nunca foram validadas, de modo que qualquer token não expirado assinado por uma chave confiável era aceito.
- Publicado
- 24 de ago. de 2026
- Atualizado
- 25 de ago. de 2026
- Atribuindo CNA
- apache
- Evidência observada
- 24 de ago. de 2026
CVSS primário
nvd · CVSS 3.1
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:H/A:NBaixo · próximos 30 dias
- Percentil
- 34,8%
- Data do modelo
- 21 de set. de 2026
EPSS é uma estimativa estatística, não uma certeza ou uma medida de impacto. Combine-o com CVSS, status KEV, exposição e seu ambiente.
Resumo
Vulnerabilidade de Autenticação Incorreta no componente Platform HTTP Main do Apache Camel. Este problema afeta o Apache Camel: da versão 4.8.0 até antes da 4.22.0. O servidor HTTP embarcado do camel-main pode proteger seus endpoints com autenticação JWT, configurada por meio de authenticationEnabled em conjunto com as propriedades do keystore JWT. O JWTAuthenticationConfigurer.buildJwtOptions retornava null quando nem jwtIssuer nem jwtAudience eram configurados, e o chamador então pulava completamente a chamada JWTAuthOptions.setJWTOptions, de modo que a instância Vert.x JWTAuth era construída apenas a partir do keystore. O resultado era que os tokens recebidos eram verificados somente quanto à assinatura e à expiração: as claims iss e aud não eram validadas de forma alguma. Nada sinalizava isso - o servidor iniciava normalmente e não emitia nenhum aviso -, portanto, uma implantação configurada da maneira documentada aplicava silenciosamente menos do que o operador acreditava ter habilitado, e a própria documentação do componente apresentava a verificação de assinatura e expiração como padrão, com emissor e público-alvo como um extra opcional. Tanto o servidor de aplicação quanto o servidor de gerenciamento foram afetados, porque a omissão estava em cada um dos dois caminhos configureAuthentication. Qualquer token não expirado assinado por qualquer chave em que o keystore configurado confie era, portanto, aceito, independentemente de qual emissor o emitiu ou para qual público-alvo era destinado. O alcance disso depende do conjunto de confiança do keystore: quando a chave de assinatura pertence a um provedor de identidade compartilhado ou multi-tenant, um token legitimamente emitido para um público-alvo totalmente diferente é aceito, enquanto um keystore que mantém um assinante dedicado restringe o alcance à reutilização de tokens emitidos para outros serviços dentro do mesmo domínio de confiança. As opções jwtIssuer e jwtAudience não existiam antes da 4.21.0, portanto, em versões anteriores, não havia nenhuma maneira suportada de aplicar essas claims. Recomenda-se que os usuários atualizem para a versão 4.22.0, que corrige o problema. A partir da 4.22.0, o servidor se recusa a iniciar quando um keystore JWT é configurado, mas nem jwtIssuer nem jwtAudience estão definidos, indicando as propriedades envolvidas, e uma implantação que realmente deseja apenas a validação de assinatura e expiração deve declarar isso explicitamente com a nova opção jwtAllowMissingIssuerAndAudience, que tem false como padrão. Esse comportamento é corrigido apenas na 4.22.0. As versões 4.14.9 e 4.18.4 não alteram o padrão: elas adicionam as opções jwtIssuer e jwtAudience para que os operadores nessas linhas de manutenção possam aplicar as claims por configuração, e uma instalação que atualize para 4.14.9 ou 4.18.4 sem também definir pelo menos uma dessas duas propriedades ainda aceitará qualquer token não expirado assinado por uma chave confiável. Usuários na 4.14.x ou 4.18.x devem, portanto, atualizar para 4.14.9 ou 4.18.4 e depois definir jwtIssuer, jwtAudience ou ambos. As versões de 4.8.0 até 4.21.x, inclusive, não oferecem nenhuma maneira de aplicar essas claims e devem ser migradas para uma versão que o faça. Independentemente da versão, restrinja o keystore JWT ao menor conjunto de confiança possível - idealmente um assinante dedicado a este serviço, em vez de uma chave compartilhada de provedor de identidade - e, quando um gateway já validar emissor e público-alvo na frente do servidor, garanta que ele não possa ser contornado. Notas: O ticket JIRA: https://issues.apache.org/jira/browse/CAMEL-24281 refere-se aos vários commits que resolveram o problema e contém mais detalhes. A salvaguarda fail-closed não pôde ser retroportada. As próprias opções jwtIssuer e jwtAudience só foram introduzidas na 4.21.0 pelo CAMEL-23525, portanto, em camel-4.18.x e camel-4.14.x, não havia nada que um operador pudesse definir para atender ao requisito, e a salvaguarda teria quebrado todas as implantações JWT nesses ramos, sem nenhuma solução disponível.
Uso responsável
Use informações de vulnerabilidade apenas em sistemas que você possui ou está autorizado a testar. O Kitploit vincula-se a metadados de pesquisa pública e não armazena código de exploração ou cargas maliciosas.