CVE-2026-95664
Apache Camel: o produtor Camel-AWS2-S3 avalia chaves de objetos S3 não confiáveis do cabeçalho CamelAwsS3Key como expressões simples
- Publicado
- 26 de out. de 2026
- Atualizado
- 26 de out. de 2026
- Atribuindo CNA
- apache
- Evidência observada
- 30 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:L/I:L/A:NBaixo · próximos 30 dias
- Percentil
- 57,6%
- Data do modelo
- 29 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
Vulnerabilidade de Neutralização Imprópria de Elementos Especiais usados em uma Instrução de Linguagem de Expressão ('Injeção de Linguagem de Expressão') no componente AWS2-s3 do Apache Camel. Este problema afeta o Apache Camel: de 4.8.0 antes de 4.18.5, de 4.19.0 antes de 4.22.2. Para o objeto que envia, lê ou exclui, o produtor camel-aws2-s3 obtém a chave do cabeçalho de mensagem CamelAwsS3Key e recorre à opção keyName configurada no endpoint apenas quando esse cabeçalho está ausente. Desde a 4.8.0, AWS2S3Utils.determineKey() também passava o valor resultante para a linguagem Simple sempre que ele continha ${ ou $simple{, para que uma rota pudesse usar uma chave dinâmica, e a avaliação era aplicada tanto a um valor obtido do cabeçalho quanto à opção configurada. O cabeçalho, no entanto, não é configuração de rota: o consumidor aws2-s3 define CamelAwsS3Key nas exchanges que cria com a chave do objeto que leu, ou seja, o nome do objeto no bucket. Em uma rota que não faz nada além de consumir de um endpoint aws2-s3 e produzir para outro, o nome de cada objeto consumido chegava, portanto, ao produtor, e um nome contendo qualquer um dos marcadores era avaliado como uma expressão, embora o autor da rota nunca tenha solicitado qualquer avaliação, e configurar keyName no produtor não o impedia, porque o cabeçalho tinha precedência. Uma chave que uma rota copiava para o cabeçalho a partir de outro conteúdo de mensagem era avaliada da mesma forma. Qualquer pessoa capaz de escolher o nome de um objeto em um bucket que tal rota consome, tipicamente um principal autorizado a enviar para esse bucket, poderia, portanto, ter expressões Simple de sua escolha avaliadas no processo Camel. A linguagem Simple pode ler propriedades de sistema da JVM, variáveis de ambiente e propriedades de configuração, que comumente carregam credenciais e, onde camel-bean está no classpath, invocar métodos em beans no registro. O resultado avaliado tornava-se a chave que o produtor usava, de modo que ler um valor de volta exigia adicionalmente a capacidade de ver nomes de objetos no bucket de destino, enquanto uma invocação de método tinha efeito sem isso; juntamente com a necessidade de nomear um objeto em um bucket consumido, é por isso que a severidade é avaliada como média. O nome do bucket passava pela mesma avaliação, mas o consumidor apenas coloca o bucket configurado em seu próprio endpoint em um cabeçalho de bucket, nunca um valor derivado de um objeto remoto, portanto o nome do bucket não era alcançável dessa forma. Versões anteriores à 4.8.0 usavam a chave do cabeçalho como fornecida e não são afetadas. 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.2. Se os usuários estiverem no fluxo de versões 4.18.x, sugere-se que atualizem para 4.18.5. As linhas de versão 4.8.x a 4.17.x e 4.19.x a 4.21.x atingiram o fim de vida antes que este problema fosse resolvido e não receberão uma correção, portanto implantações nelas devem migrar para uma versão suportada. Após a atualização, uma chave ou nome de bucket fornecido por meio de um cabeçalho de mensagem é usado literalmente, portanto uma rota que colocava uma expressão Simple não avaliada no cabeçalho CamelAwsS3Key ou CamelAwsS3OverrideBucketName deve avaliá-la na rota, por exemplo com setHeader e simple(), ou configurá-la como a opção keyName ou bucketName do endpoint. Para implantações que não podem atualizar imediatamente, não deixe uma chave derivada de um nome de objeto ou de outro conteúdo de mensagem não confiável chegar a um produtor aws2-s3 sem verificação: em rotas que passam exchanges de um consumidor aws2-s3 para um produtor aws2-s3, remova o cabeçalho CamelAwsS3Key antes do produtor com removeHeader(“CamelAwsS3Key”), para que o keyName configurado no endpoint seja usado, ou rejeite exchanges cujo cabeçalho CamelAwsS3Key contenha ${ ou $simple{. Configurar apenas keyName não é uma solução alternativa, porque o cabeçalho tem precedência sobre ele. Como defesa em profundidade, permita apenas que principais confiáveis escrevam em buckets que as rotas Camel consomem.
Fontes
Reprodutor executável em Spring Boot e Quarkus para a CVE-2026-95664, demonstrando injeção de expressão Simple por meio do cabeçalho CamelAwsS3Key no camel-aws2-s3 e verificando a correção.
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.