A vulnerabilidade CVE-2026-29059 no Windmill — plataforma open-source de automação para APIs, fluxos de trabalho e tarefas em segundo plano — está sob exploração ativa contra instâncias auto-hospedadas desatualizadas em todo o mundo. A falha de path traversal no endpoint get_log_file permite que atacantes remotos sem qualquer autenticação leiam arquivos arbitrários do servidor, expondo configurações, credenciais e segredos de aplicação. O National Vulnerability Database atribuiu CVSS 7,5 (alto) à falha.
Em implantações onde a variável de ambiente SUPERADMIN_SECRET está configurada — configuração sistemática no Nextcloud Flow —, a leitura indevida de arquivos escala para execução remota de código completo. A correção foi lançada em janeiro de 2026 na versão 1.603.3, mas a exploração em massa só foi confirmada seis meses depois pela VulnCheck, contra aproximadamente 170 instâncias expostas em 24 países. Outro caso recente de path traversal escalando para RCE foi documentado no Langflow CVE-2026-5027.
Como a falha de traversal funciona
O endpoint vulnerável é /api/w/{workspace}/jobs_u/get_log_file/{filename}, originalmente projetado para retornar arquivos de log de execução de tarefas e fluxos de trabalho no Windmill. O parâmetro filename é concatenado diretamente no caminho do arquivo no servidor sem qualquer sanitização, validação de allowlist ou canonicalização de caminho. O Windmill é amplamente utilizado por equipes de engenharia para orquestrar fluxos de trabalho internos, integrar sistemas e executar scripts em produção. Um atacante remoto pode inserir sequências ../ repetidas vezes para escapar do diretório de logs pretendido e navegar pela estrutura de diretórios até acessar qualquer arquivo legível pelo processo do Windmill, incluindo /etc/passwd, arquivos de configuração e credenciais armazenadas.
Nenhuma credencial, token de autenticação, chave de API ou sessão ativa é necessária para enviar a requisição maliciosa. O ataque é executado inteiramente remotamente pela rede, sem qualquer interação ou conhecimento prévio do usuário-alvo. A falha é classificada sob CWE-22, a categoria canônica para path traversal — Improper Limitation of a Pathname to a Restricted Directory. O pesquisador Chocapikk identificou e reportou a vulnerabilidade, catalogada no NVD em março de 2026.
De leitura de arquivo a RCE
Embora o vetor CVSS 3.1 do NVD descreva apenas impacto de confidencialidade, o cenário real de produção é consideravelmente mais grave do que o score sugere. O GitHub Security Advisory documenta que o valor sensível primário exposto pela vulnerabilidade é a variável de ambiente SUPERADMIN_SECRET, legível através do caminho /proc/1/environ no sistema de arquivos do container. Esse caminho expõe o ambiente completo do processo principal da aplicação. Essa discrepância entre score e risco real ocorre porque o CVSS base mede o impacto no cenário padrão, sem considerar configurações específicas de implantação.
Quando a SUPERADMIN_SECRET está presente no ambiente do processo, um atacante pode extraí-la com a mesma requisição não autenticada e usá-la como token Bearer para se autenticar como superadministrador da plataforma. Com esse nível de acesso, o atacante executa código arbitrário por meio da API de preview de jobs do Windmill — funcionalidade que permite testar e executar scripts em Python, TypeScript e outras linguagens suportadas pela plataforma. A variável não é definida por padrão em instâncias independentes, mas sua presença é sistemática em implantações embutidas — em particular no Nextcloud Flow, que a utiliza para gerenciar sua instância interna do Windmill e armazena credenciais de administrador em arquivo previsível (/nc_app_flow_data/windmill_users_config.json).
Exploração ativa confirmada
A VulnCheck reportou em julho de 2026 que a vulnerabilidade está sendo ativamente explorada na internet, seis meses após a disponibilização do patch. O pesquisador Valentin Lobstein observou tentativas direcionadas a aproximadamente 170 instâncias do Windmill expostas e acessíveis publicamente, distribuídas em 24 países. As requisições iniciais visaram /etc/passwd como prova de conceito de que o traversal funcionava, seguidas de leitura do ambiente do processo em /proc/1/environ e /proc/self/environ — caminhos que acesso legítimo a logs jamais necessitaria. O número absoluto de instâncias é relativamente pequeno, mas cada uma é um hub de automação com credenciais e código-fonte.
A exploração não se limitou a endpoints diretos do Windmill. Tentativas foram observadas através de caminhos de proxy reverso do Nextcloud que encapsulam instâncias do Windmill em segundo plano. Um proxy reverso que apenas repassa requisições sem inspecionar parâmetros de caminho não oferece proteção. Esse padrão lembra o caso do zero-day ativo no PeopleSoft, onde a janela entre correção e adoção do patch determinou o alcance do ataque.
Como detectar os ataques
Os indicadores de exploração são legíveis nos logs de acesso do servidor web e do proxy reverso. Equipes de segurança devem buscar requisições ao caminho get_log_file que contenham sequências de path traversal como ../ ou variantes codificadas em URL, incluindo %2e%2e%2f, %2e%2e/ e ..%5c. Um proxy que apenas encaminha requisições sem inspecionar o conteúdo dos parâmetros repassa o ataque intacto. Padrões de acesso anômalos provenientes de endereços IP externos ao endpoint de log, especialmente visando caminhos como /proc/, /etc/ ou arquivos de configuração, constituem sinais de exploração.
A análise de logs deve cobrir o período retroativo até pelo menos janeiro de 2026, quando o patch foi disponibilizado pela primeira vez, para identificar tentativas que possam ter ocorrido durante a janela de exposição. A revisão deve incluir logs de acesso da aplicação e do proxy reverso, especialmente em ambientes onde o Windmill opera embutido no Nextcloud. Sequências de traversal confirmadas em logs exigem resposta imediata com rotação de credenciais e investigação de impacto.
Correção e mitigação
A correção definitiva é a atualização para a versão 1.603.3 ou superior, lançada em 11 de janeiro de 2026, que implementa sanitização do parâmetro filename no endpoint get_log_file, impedindo sequências de directory traversal. As notas de versão oficiais descrevem a correção como "various input tightening".
Não existe workaround de configuração que feche completamente a falha — o patch é a correção obrigatória para instâncias auto-hospedadas. Após aplicar o patch, trate todas as credenciais potencialmente expostas como comprometidas.
| # | Ação | Prioridade |
|---|---|---|
| 1 | Atualizar para 1.603.3 ou superior | Imediata |
| 2 | Rotacionar SUPERADMIN_SECRET | Crítica |
| 3 | Rotacionar credenciais dos jobs | Alta |
| 4 | Restringir acesso de rede | Alta |
| 5 | Auditar logs desde janeiro | Alta |
| 6 | Configurar WAF contra traversal | Média |
O patch fecha a via de leitura indevida, mas não invalida retroativamente um token Bearer que um atacante possa ter copiado durante a janela de exposição. Rotacione a SUPERADMIN_SECRET, as credenciais dos jobs e quaisquer chaves de API mantidas pela plataforma. Instâncias que não podem ser atualizadas imediatamente devem ter acesso de rede restrito como mitigação temporária.