
POC de vulnerabilidade de leitura arbitrária de arquivos no Jenkins através da CLI pode levar a RCE
O Jenkins possui uma interface de linha de comando (CLI) integrada para acessar o Jenkins a partir de um script ou ambiente de shell.
O Jenkins usa a biblioteca args4j para analisar argumentos e opções de comando no controlador do Jenkins ao processar comandos CLI. Esse analisador de comandos possui um recurso que substitui um caractere @ seguido por um caminho de arquivo em um argumento pelo conteúdo do arquivo (expandAtFiles). Esse recurso está habilitado por padrão e o Jenkins 2.441 e anteriores, LTS 2.426.2 e anteriores não o desabilitam.
Isso permite que atacantes leiam arquivos arbitrários no sistema de arquivos do controlador Jenkins usando a codificação de caracteres padrão do processo do controlador Jenkins.
Atacantes com permissão Overall/Read podem ler arquivos inteiros.
Atacantes sem permissão Overall/Read podem ler as primeiras linhas dos arquivos. O número de linhas que podem ser lidas depende dos comandos CLI disponíveis. Na data de publicação deste aviso, a equipe de segurança do Jenkins encontrou maneiras de ler as três primeiras linhas de arquivos em versões recentes do Jenkins sem ter nenhum plugin instalado e não identificou nenhum plugin que aumente esse número de linhas.
Descrição da correção: O Jenkins 2.442, LTS 2.426.3 desabilita o recurso do analisador de comandos que substitui um caractere @ seguido por um caminho de arquivo em um argumento pelo conteúdo do arquivo para comandos CLI.
Em caso de problemas com esta correção, desabilite essa alteração definindo a propriedade de sistema do Java hudson.cli.CLICommand.allowAtSyntax como true. Essa ação é fortemente desencorajada em qualquer rede acessível por usuários que não sejam administradores do Jenkins.
Solução alternativa: Desabilitar o acesso à CLI deve prevenir a exploração completamente. Essa ação é fortemente recomendada para administradores que não possam atualizar imediatamente para o Jenkins 2.442, LTS 2.426.3. Aplicar essa solução alternativa não requer reinicialização do Jenkins.
Mais informações em: https://www.jenkins.io/security/advisory/2024-01-24/#SECURITY-3314
Comando para executar: python CVE-2024-23897 Jenkins.py -l list.txt -f /etc/passwd
A resposta de saída do VULN pode conter mais do que daemon ou bin; adicione na linha 28 se desejar incluir mais.