Portainer · Portainer Community Edition · CVE-2026-44881
**Nome do Software Vulnerável e Versões Afetadas**
Portainer Community Edition versões 2.33.0 a 2.33.7
Portainer Community Edition versões 2.39.0 a 2.39.1
Portainer Community Edition versões anteriores a 2.41.0
**Description**
O Portainer suporta a implantação de stacks a partir de repositórios Git. Quando uma stack baseada em Git é criada ou atualizada, o software clona o repositório usando `go-git` v5, que traduz entradas de blob do Git com o modo `0o120000` (symlink) em links simbólicos reais do SO no sistema de arquivos do host via `os.Symlink`. Com exceção do `.gitmodules`, todos os outros caminhos são criados como symlinks sem validação. O endpoint `GET /api/stacks/{id}/file` lê o ponto de entrada da stack usando `os.ReadFile`, que segue symlinks do SO de forma transparente. Se um repositório contiver o `docker-compose.yml` como um symlink para um caminho arbitrário do sistema de arquivos, o conteúdo desse alvo é retornado na resposta HTTP. Qualquer usuário autenticado com permissões para criar ou atualizar uma stack baseada em Git pode ler arquivos arbitrários acessíveis ao processo do Portainer, que normalmente é executado como root. Isso pode levar à exposição do `/etc/shadow`, tokens de conta de serviço do Kubernetes, segredos do Docker e do banco de dados do Portainer. O problema pode ser explorado via auto-atualização de stack Git, onde um repositório legítimo é posteriormente atualizado com um symlink malicioso que é acionado durante o próximo ciclo de atualização agendado.
**Recommendations**
Atualize o Portainer Community Edition para a versão 2.33.8.
Atualize o Portainer Community Edition para a versão 2.39.2.
Atualize o Portainer Community Edition para a versão 2.41.0.
Desative a configuração Allow non-admin users to manage their stacks nas configurações de ambiente para restringir a criação de stacks baseadas em Git apenas a administradores.
Evite implantar stacks baseadas em Git de repositórios não confiáveis ou não revisados.
Desative a auto-atualização em stacks existentes para evitar a exploração diferida.
Audite os caminhos dos projetos em `/data/compose/` em busca de entradas de symlink inesperadas usando `find /data/compose -type l`.