Vulnerabilidades do Kestra em 03/06/2026

O Kestra publicou dois avisos críticos sobre rotas que permitem criar e executar flows sem autenticação. Outros dois comunicados descrevem leitura indevida de arquivos, com diferenças no armazenamento afetado e nas permissões necessárias. Confira a versão que você executa e use a conferência de cada ficha para verificar o comportamento após a atualização.

AplicativoKestra
Data do compilado
Vulnerabilidades4

Os dois avisos críticos descrevem o mesmo mecanismo de desvio da autenticação, mas apresentam demonstrações e condições diferentes. Ambos estão preservados neste compilado. As versões corrigidas indicam a correção disponível no projeto, não a atualização da sua instância.

Gravidade críticaCVSS: 10,0/10Correção disponível

Rotas terminadas em /configs permitem executar comandos sem autenticação

O filtro de autenticação reconhece qualquer caminho terminado em /configs como uma rota pública de configuração. Um atacante com acesso à aplicação pode escolher esse nome para o namespace e para o flow, criar uma tarefa de shell e executá-la sem apresentar credenciais. Na configuração demonstrada pelo comunicado, a tarefa roda como root no container do Kestra. A montagem de /var/run/docker.sock também permite alcançar o serviço Docker do host, ampliando o comprometimento para o servidor.

Casos de uso afetados

  • Você executa o Kestra OSS em modo standalone ou webserver com Basic Auth configurado. As rotas de criação e execução continuam acessíveis sem credenciais quando o segmento final é configs.
  • Sua instalação usa a configuração Docker Compose demonstrada no aviso, com o processo como root e o socket Docker montado. Nesse cenário, comandos executados no container podem alcançar o Docker do host.

Confira na sua instância

Confira a versão efetivamente carregada pelo Kestra e examine o usuário do container e a montagem de /var/run/docker.sock. Em homologação, envie sem credenciais uma criação de flow inofensivo para /api/v1/main/flows/configs, usando uma tarefa que apenas escreva um texto de teste. Compare com a mesma tentativa em outro namespace. A rota terminada em /configs precisa exigir autenticação, assim como a outra. A aceitação do flow sem credenciais reproduz o desvio descrito no aviso.

Versões afetadas e correções

Faixas declaradas no comunicado oficial, por linha de manutenção
LinhaAfetadasCorrigidas
io.kestra:kestra<= 1.3.201.0.45, 1.3.21

O acesso ao host descrito nesta ficha depende do socket Docker montado e acessível ao processo. O comunicado também relata a possibilidade de encerrar o servidor pelo endpoint de gerenciamento POST :8081/stop sem autenticação.

Gravidade críticaCVSS: 10,0/10Correção disponível

Flows chamados configs permitem execução de scripts e acesso à rede interna

A comparação por sufixo no AuthenticationFilter dispensa o Basic Auth para recursos cujo caminho termina em /configs. Com isso, um atacante pode gravar um flow chamado configs em um namespace e disparar sua execução usando os plugins de scripts instalados. O comunicado demonstra comandos executados como root no container do worker. Também descreve o uso da função http() do Pebble para alcançar serviços internos e endpoints de metadados de nuvem, pois a função não filtra esses destinos.

Casos de uso afetados

  • Sua instância do Kestra OSS usa Basic Auth e pode ser alcançada pela rede. Um atacante não precisa de acesso pela internet nem de credenciais para criar e executar um flow chamado configs.
  • O worker consegue acessar serviços internos ou endpoints de metadados de nuvem. Um flow criado pelo atacante pode usar a função http() para consultar esses destinos a partir do ambiente do Kestra.

Confira na sua instância

Em uma instância de homologação com Basic Auth ativo, tente sem credenciais gravar um flow chamado configs pela rota PUT /api/v1/main/flows/tutorial/configs. Use uma tarefa inofensiva e confira se a aplicação exige autenticação. Com um flow de teste preparado por você, verifique também se POST /api/v1/main/executions/tutorial/configs recusa a execução anônima. Para avaliar o alcance de rede, use um destino interno de teste sob seu controle e examine quais conexões o worker consegue estabelecer.

Versões afetadas e correções

Faixas declaradas no comunicado oficial, por linha de manutenção
LinhaAfetadasCorrigidas
kestra (ecossistema io.kestra)<= 1.3.201.0.45, 1.3.21

Nesta demonstração, o container do worker não tinha /var/run/docker.sock montado, e o comunicado não confirmou acesso direto ao host por esse socket. Restringir as conexões de saída reduz o alcance de rede, mas não corrige o desvio da autenticação.

Gravidade altaCVSS: 7,7/10Correção disponível

Armazenamento local permite ler arquivos fora do diretório de execução

O LocalStorage verifica as tentativas de subir diretórios antes de converter barras invertidas em barras comuns. Um caminho manipulado pode atravessar essa verificação e, após a conversão, apontar para um arquivo fora do armazenamento da execução. Uma credencial com permissão para visualizar execuções consegue ler arquivos acessíveis ao processo do Kestra, incluindo configurações e arquivos de outros tenants. Em instalações sem autenticação, a leitura também pode ocorrer anonimamente.

Casos de uso afetados

  • Você usa o armazenamento interno local do Kestra e permite visualizar execuções. A consulta a um arquivo de saída pode ser manipulada para ler outro arquivo acessível ao processo, fora do diretório daquela execução.
  • Sua instalação Enterprise mantém vários tenants no armazenamento local. A falha permite alcançar arquivos de outro tenant, apesar da separação esperada entre os ambientes.
  • O processo tem acesso ao banco H2 ou a arquivos com segredos montados no container. A leitura indevida pode revelar definições de flows e credenciais armazenadas nesses arquivos.

Confira na sua instância

Identifique o backend de armazenamento e compare a versão em execução com a linha correspondente abaixo. Em homologação com LocalStorage, prepare um arquivo contendo apenas um marcador de teste fora do diretório de armazenamento. Usando uma execução com saída existente, compare no endpoint /api/v1/{tenant}/executions/{executionId}/file as tentativas de alcançar esse marcador por subida de diretórios com barras comuns e com barras invertidas duplamente codificadas como %255C. Ambas precisam ser recusadas. Confira também /file/metas e /file/preview, que usam o mesmo caminho de armazenamento.

Versões afetadas e correções

Faixas declaradas no comunicado oficial, por linha de manutenção
LinhaAfetadasCorrigidas
io.kestra:kestra (1.3)<= 1.3.221.3.23
io.kestra:kestra (1.0)<= 1.0.441.0.45

O comunicado confirma leitura indevida pelo armazenamento local. Os testes descritos não reproduziram escrita ou exclusão de arquivos por esse mecanismo. A exposição alcança os arquivos que o processo do Kestra tem permissão para ler.

Gravidade moderadaCVSS: 6,5/10Correção disponível

Prévia de arquivo expõe saídas de outra execução no mesmo tenant

O endpoint de prévia chama validateFile, mas ignora o redirecionamento retornado quando o arquivo pertence a outra execução. A leitura continua com o endereço fornecido na requisição. No armazenamento local, esse endereço determina o arquivo aberto sem respeitar o namespace informado. Assim, uma credencial autorizada a consultar uma execução pode visualizar a saída de outra, inclusive em um namespace diferente dentro do mesmo tenant.

Casos de uso afetados

  • Você separa flows por namespace na mesma instância. Um arquivo de saída com credenciais de banco ou informações financeiras pode ser visualizado a partir de uma execução de outro namespace.
  • Sua instalação Enterprise concede EXECUTION:READ apenas em um namespace. A prévia pode revelar arquivos de execuções de outro namespace do mesmo tenant, apesar das permissões configuradas.

Confira na sua instância

Em homologação, prepare duas execuções em namespaces diferentes do mesmo tenant. Faça a segunda produzir um arquivo com um marcador sem informação sensível. Usando uma credencial com acesso somente ao primeiro namespace, consulte /api/v1/{tenant}/executions/{executionId}/file/preview com o identificador da primeira execução e o endereço kestra:// do arquivo da segunda no parâmetro path. A resposta não pode revelar o marcador. Compare também com /file, sem seguir redirecionamentos automaticamente, para conferir a diferença entre download e prévia.

Versões afetadas e correções

Faixas declaradas no comunicado oficial, por linha de manutenção
LinhaAfetadasCorrigidas
io.kestra:kestra<= 1.3.191.0.45, 1.3.21

Esta falha permite leitura entre execuções e namespaces do mesmo tenant. O comunicado informa que o tenant é validado separadamente e não confirma acesso entre tenants por esse mecanismo.

Voltar aos compilados de vulnerabilidades
Luiz Eduardo Oliveira Fonseca

Luiz Eduardo Oliveira Fonseca

Fundador e Mentor

Programador há mais de 20 anos, fundador da Powertic e da Promovaweb. Embaixador do n8n no Brasil e da Baserow, Chatwoot, Miro e Kestra. Membro do Product Team do Mautic.

Área pública disponível

Participe da comunidade no Discord

Entre pelo convite oficial, apresente-se à comunidade e acompanhe os avisos e projetos compartilhados entre os encontros.