Skip to content
KitploitKITPLOIT
FerramentasExploitsBlog
Log in
Enviar
FerramentasExploitsBlog
Enviar

Ferramentas de Hacking, PenTest e Cibersegurança para o seu Arsenal de Segurança!

Kitploit é um diretório de ferramentas de hacking, cibersegurança e pentesting. Descubra as últimas atualizações de projetos para encontrar vulnerabilidades, analisar sistemas, automatizar testes e fortalecer sua segurança.

··Feeds·Contato·Privacidade·© 2026 Kitploit

Diretório de Ferramentas

Categorias

Ver todas as categorias
Loading categories
CVE-2025-53652-Jenkins-Git-Parameter-Analysis — CVE-2025-53652: Análise do Git Parameter do Jenkins | Kitploit
Ferramentas/GitHubGitHub/pl4tyz/cve-2025-53652-jenkins-git-parameter-analysis
Análise de VulnerabilidadesAnálise de CódigoExploraçãoDevSecOpsComando e ControleAprendizado e Educação
GitHubpl4tyz/cve-2025-53652-jenkins-git-parameter-analysis

CVE-2025-53652-Jenkins-Git-Parameter-Analysis

CVE-2025-53652: Análise do Git Parameter do Jenkins

Ver Repositório
235há 1 anoAinda não revisado

Mais Populares

Ver todos →

Descubra as ferramentas mais usadas pela nossa comunidade.

Explore todas as ferramentas

Navegue pela nossa coleção de ferramentas

Ver todas as ferramentas →
Compartilhar

CVE-2025-53652: Vulnerabilidade de entrada não validada no plugin Git Parameter do Jenkins.

Resumo

Esta vulnerabilidade surge porque a entrada controlada pelo usuário, proveniente dos parâmetros de build do Jenkins, é injetada de forma insegura no comando Git checkout.

A entrada do usuário é fornecida como um parâmetro de build (ex.: gitParameters), que pode conter comandos shell maliciosos.

Este parâmetro é encapsulado em um GitParameterValue (estendendo StringParameterValue), cujo método buildEnvironment() o expõe como uma variável de ambiente no contexto do build, sem sanitização.

Durante o processo de checkout do SCM, o Jenkins carrega as variáveis de ambiente do build por meio de build.getEnvironment().

O nome do branch usado para o checkout (localBranchName) é obtido dessas variáveis de ambiente.

O nome do branch é então passado diretamente ao método CheckoutCommand.branch().

Por fim, CheckoutCommand.execute() invoca o comando Git CLI subjacente, que concatena o nome do branch sem validação ou escaping.

Isso permite a injeção de comandos, possibilitando que um atacante execute comandos shell arbitrários no host de build do Jenkins.

Análise

  1. O método createValue que trata a entrada do usuário (por exemplo, do payload JSON da requisição HTTP POST), é aqui que o Jenkins aceita valores de parâmetros fornecidos pelo usuário via requisição (por exemplo, "selected": "master; rm -rf /"). A entrada é encapsulada em um GitParameterValue, que estende StringParameterValue, sem sanitização ou validação da entrada. Isso significa que os dados brutos do usuário são aceitos como um parâmetro de build e armazenados como uma instância de ParameterValue. createValue.png

  2. A classe GitParameterValue estendendo StringParameterValue. GitParameterValue herda de StringParameterValue, mas não adiciona sanitização. A cadeia de construtores significa que a entrada do usuário agora é armazenada em um objeto que será usado posteriormente pelo Jenkins para montar as variáveis de ambiente. Isso propaga a entrada maliciosa para as variáveis de ambiente do build do Jenkins. gitParameterValue.png"

  3. A classe StringParameterValue e seu método buildEnvironment. Este método é crucial — ele expõe o parâmetro como variáveis de ambiente no contexto do build ao fazer stringParameter.png"

env.put(name, value);
env.put(name.toUpperCase(Locale.ENGLISH), value);

Como o valor é uma entrada de usuário não sanitizada, isso permite que a entrada maliciosa entre nas variáveis de ambiente do Jenkins, tornando-a acessível a processos posteriores, como comandos Git.

  1. O método _checkout no plugin GitSCM. Este método chama build.getEnvironment(listener), que coleta as variáveis de ambiente, incluindo a maliciosa definida anteriormente. Ele usa essas variáveis para obter o nome do branch (via localBranchName), que é então passado ao CheckoutCommand. A variável de ambiente do parâmetro malicioso flui diretamente para o processo de checkout. checkout.png

  2. A criação do CheckoutCommand e a definição do branch/ref com a entrada do usuário. O CheckoutCommand.branch(localBranchName) usa a variável de ambiente não sanitizada. Como localBranchName veio de variáveis de ambiente controladas pelo usuário, ele injeta comandos arbitrários no checkout. Isso prepara o terreno para a injeção de comandos quando execute() é chamado. checkoutCommand.png

  3. O CheckoutCommand.execute() método que executa o comando Git CLI. Este é o passo final, em que a string de branch injetada é passada diretamente ao Git CLI do sistema sem escaping ou sanitização. Como resultado, o payload malicioso é executado como comandos shell, permitindo a execução remota de código no host do Jenkins. execute.png

Conclusão

Esta análise revela como o plugin Git Parameter do Jenkins, combinado com o plugin Git SCM, pode levar a uma vulnerabilidade crítica de injeção de comandos. Ao expor de forma insegura valores de parâmetros controlados pelo usuário como variáveis de ambiente e, posteriormente, passá-los diretamente para comandos Git CLI sem a sanitização adequada, atacantes podem executar comandos arbitrários no servidor de build do Jenkins.

Essa quebra na cadeia de confiança—do payload JSON malicioso inicial à execução final no shell—destaca a importância da validação rigorosa de entrada e do tratamento seguro de parâmetros de build em sistemas de integração contínua.

Usuários e administradores devem garantir que estejam executando versões atualizadas do Jenkins e de todos os plugins, e auditar cuidadosamente quaisquer parâmetros que influenciem comandos shell. Mitigações como sanitização de entrada, lista de permissões (whitelist) de branches autorizados ou isolamento dos ambientes de build podem reduzir o risco.

Compreender esse fluxo fornece a profissionais de segurança e desenvolvedores a visão necessária para detectar, prevenir e corrigir vulnerabilidades de injeção semelhantes no Jenkins ou em plataformas CI/CD comparáveis.

Baixar ferramenta