CVE-2026-83531
Apache Camel: o endpoint de controle Camel-Dynamic-Router compila expressões de predicado fornecidas por mensagens de controle
- Publicado
- 19 de out. de 2026
- Atualizado
- 20 de out. de 2026
- Atribuindo CNA
- apache
- Evidência observada
- 19 de out. de 2026
CVSS primário
nvd · CVSS 3.1
CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:HBaixo · próximos 30 dias
- Percentil
- 57,9%
- Data do modelo
- 25 de out. 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
Controle inadequado da geração de código ('Injeção de Código'), vulnerabilidade de neutralização inadequada de elementos especiais usados em uma instrução de linguagem de expressão ('Injeção de Linguagem de Expressão') no Apache Camel. Este problema afeta o Apache Camel: de 4.4.0 antes de 4.18.5, de 4.19.0 antes de 4.22.1. O endpoint dynamic-router-control, introduzido na 4.4.0, permite que os participantes de roteamento gerenciem assinaturas do Dynamic Router enviando mensagens de controle. Ao tratar uma solicitação de assinatura ou atualização, o DynamicRouterControlProducer obtinha o predicado da assinatura e o nome da linguagem usada para compilá-lo a partir da mensagem recebida, seja a partir dos campos predicate e expressionLanguage de um corpo DynamicRouterControlMessage, seja a partir dos cabeçalhos CamelDynamicRouterPredicate e CamelDynamicRouterExpressionLanguage. O DynamicRouterControlService então resolvia essa linguagem a partir do CamelContext e compilava a expressão em um Predicate, sem lista de permissões e sem adesão opcional. O predicado compilado era adicionado à base de regras do canal e avaliado em cada exchange roteado pelo endpoint dynamic-router correspondente, enquanto a assinatura existisse. Uma rota que encaminha mensagens de um transporte externo para o endpoint de controle, como mostrado na documentação do componente para participantes de roteamento em outras JVMs ou aplicações, portanto, permitia que qualquer ator capaz de enviar uma mensagem nesse transporte fornecesse uma expressão de sua escolha, que era avaliada com os privilégios do processo Camel. Qualquer linguagem de expressão disponível no classpath podia ser selecionada, incluindo a linguagem simple, que está sempre presente e era o padrão no caminho do cabeçalho, de modo que remover linguagens de expressão opcionais do classpath não impedia o problema. A exploração exige a capacidade de enviar uma mensagem em um transporte cuja rota a encaminhe para um endpoint dynamic-router-control; nenhuma outra autenticação ou interação do usuário é necessária. Versões anteriores à 4.4.0 não são afetadas, porque seu canal de controle obtinha expressões de predicado apenas a partir do URI do endpoint configurado pelo autor da rota. Recomenda-se que os usuários atualizem para a versão 4.23.0, que corrige o problema. Se os usuários estiverem no fluxo de versões 4.22.x, sugere-se que atualizem para 4.22.1. Se os usuários estiverem no fluxo de versões 4.18.x, sugere-se que atualizem para 4.18.5. O fluxo de versões 4.14.x e anteriores atingiu o fim de vida antes que este problema fosse resolvido e não receberá uma correção, portanto, implantações nessas linhas devem migrar para uma versão suportada. Após a atualização, uma mensagem de controle que carregue uma expressão de predicado ou uma linguagem de expressão é rejeitada, a menos que a nova opção allowPredicateFromMessage esteja habilitada no endpoint dynamic-router-control; habilite-a apenas quando todos os remetentes de mensagens de controle forem confiáveis. Para implantações que não podem atualizar imediatamente, não encaminhe mensagens de transportes não confiáveis ou compartilhados para um endpoint dynamic-router-control. Onde mensagens de controle precisarem atravessar tal transporte, autentique o remetente e certifique-se de que o predicado e a linguagem de expressão de cada assinatura sejam definidos pela rota, em vez de obtidos da mensagem recebida, por exemplo, removendo os cabeçalhos CamelDynamicRouterPredicate e CamelDynamicRouterExpressionLanguage e limpando os campos predicate e expressionLanguage de um DynamicRouterControlMessage antes que ele chegue ao endpoint. Remover linguagens de expressão opcionais do classpath não é uma solução alternativa suficiente. Como defesa em profundidade, restrinja quem pode enviar para os transportes que alimentam o endpoint de controle e, na 4.23.0 e 4.22.1, defina a opção allowedSchemes do endpoint dynamic-router para limitar quais endpoints o destinationUri de uma assinatura pode nomear.
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.