XSS armazenado na prévia de arquivos Markdown
A prévia dos arquivos .md aceita HTML embutido porque o renderizador markdown-it usa html:true. O componente do Vue insere esse conteúdo na página por v-html, sem remover os elementos e atributos capazes de executar JavaScript. Um atacante com permissão para gravar um arquivo na execução pode incluir código malicioso que dispara quando você abre a prévia. Segundo o comunicado, esse código executa no domínio da interface do Kestra e pode acessar o cookie de autenticação JWT e o cabeçalho X-Kestra-CSRF, permitindo fazer chamadas à API com as permissões da sua sessão.
Casos de uso afetados
- Você consulta um relatório .md nas saídas de um flow que grava arquivos com a tarefa io.kestra.plugin.core.storage.Write. Quando um atacante controla o conteúdo gravado, abrir Preview em Outputs pode executar o código incluído no relatório. A sessão de um administrador também pode ser afetada ao visualizar esse arquivo.
Confira na sua instância
Confira a versão do Kestra em execução e identifique os flows que geram arquivos .md com conteúdo fornecido por terceiros. Baixe esses arquivos para examiná-los como texto, sem abrir a prévia renderizada, e procure HTML com atributos de evento, como onerror. No código correspondente à versão instalada, acompanhe FilePreview.vue até layout/Markdown.vue e confira se o HTML recebe sanitização antes da inserção por v-html. A combinação de html:true com inserção sem sanitização corresponde ao mecanismo descrito no aviso. A ausência de atributos suspeitos nos arquivos examinados não comprova que o renderizador foi corrigido.
Versões afetadas e correções
| Linha | Afetadas | Corrigidas |
|---|---|---|
| kestra | <= 1.1.10 | >=1.0.30 |
CVE-2026-29082. A API informa <= 1.1.10 como faixa afetada e >=1.0.30 como faixa corrigida. Esses intervalos se sobrepõem, e o aviso não separa as linhas de manutenção. Confirme com os mantenedores qual release corrige a sua instalação. A correção indicada pertence ao projeto e não confirma que a sua instância foi atualizada.
