Vulnerabilidade crítica do Jenkins expõe servidores a ataques RCE
Os mantenedores do software de automação de integração contínua (CI/CD) de código aberto Jenkins resolveram nove falhas de segurança, incluindo um bug crítico que, se explorado com sucesso, pode resultar em execução remota de código (RCE).
O CVE-2024-23897 foi descrito como uma vulnerabilidade de leitura arbitrária de arquivos por meio da interface de linha de comando (CLI) integrada.
“Jenkins usa a biblioteca args4j para analisar argumentos e opções de comando no controlador Jenkins ao processar comandos CLI”, disseram os mantenedores em um comunicado de quarta-feira.
“Este analisador de comando possui um recurso que substitui um caractere @ seguido por um caminho de arquivo em um argumento com o conteúdo do arquivo (expandAtFiles). Este recurso é habilitado por padrão e Jenkins 2.441 e anteriores, LTS 2.426.2 e anteriores não o desabilitam .”
O exploit que explora o CVE-2024-23897 já se tornou publico e pode ser encontrado no github.
Um agente de ameaça poderia explorar essa peculiaridade para ler arquivos arbitrários no sistema de arquivos do controlador Jenkins usando a codificação de caracteres padrão do processo do controlador Jenkins.
Embora os invasores com permissão “Geral/Leitura” possam ler arquivos inteiros, aqueles que não têm permissão podem ler as três primeiras linhas dos arquivos, dependendo dos comandos CLI.
Além disso, a deficiência poderia ser transformada em arma para ler arquivos binários contendo chaves criptográficas, embora com certas restrições. Desde que os segredos binários possam ser extraídos, Jenkins diz que isso poderia abrir a porta para vários ataques:
- Remote code execution via Resource Root URLs
- Remote code execution via “Remember me” cookie
- Remote code execution via stored cross-site scripting (XSS) attacks pelos logs de build
- Remote code execution via CSRF protection bypass
- Decrypt secrets armazenados no Jenkins
- Delete itens no Jenkins
- Download Java heap dump
“Embora os arquivos contendo dados binários possam ser lidos, o recurso afetado tenta lê-los como strings usando a codificação de caracteres padrão do processo do controlador”, disse Jenkins.
“É provável que isso faça com que alguns bytes não sejam lidos com êxito e sejam substituídos por um valor de espaço reservado. Quais bytes podem ou não ser lidos depende dessa codificação de caracteres.”
O pesquisador de segurança Yaniv Nizry foi creditado por descobrir e relatar a falha, que foi corrigida no Jenkins 2.442, LTS 2.426.3 desativando o recurso de analisador de comando.
Como solução alternativa de curto prazo até que o patch possa ser aplicado, é recomendável desligar o acesso à CLI.