O renderizador de Markdown Kestraęs suporta uma sintaxe personalizada `[[link...]]` que é convertida em um elemento HTML personalizado. O analisador personalizado do Markdown permite que atributos controlados pelo atacante sejam renderizados no elemento gerado sem a autorização ou a desintoxicação adequada. Como resultado, um usuário que pode criar ou editar conteúdo entregue ao Markdown, como uma descrição do Flow, pode injetar atributos de manipulador de eventos JavaScript. Quando outro usuário visualiza ou interage com o elemento de interface intercalar afetado, o JavaScript executa nesse navegador do usuário. Esta não é uma carga útil normal em bruto do HTML, como ` `. A carga útil usa a sintaxe personalizada `[[[link]]` do Markdown do KestraÏs, e os perigosos atributos HTML são introduzidos pelo próprio plug- in do Markdown do Kestra. Testado no Kestra ` 1.3.22 `.
Componentes afetados. A revisão de fonte identificou o problema no renderizador de links personalizado de Markdown: * `ui/src/utils/markdown_plugins/link.ts` * `ui/src/utils/markdown.ts` * `ui/src/components/layout/Markdown.vue`. O caminho de código vulnerável renderiza atributos analisados diretamente em uma string HTML: ```ts const attrs = token.attrs? token.attrs.map(([[nome, valor])) => `${name}="${value}"`). join(""): "". A implementação não restringe com segurança os nomes ou valores dos atributos antes de inserir o HTML gerado no DOM.
Crie ou edite um fluxo com o seguinte YAML. ```yaml id: markdown_xss_flow_desc namespace: company.equipe descrição:. [[link x="y" style="posição:fixado;inset: 0; z- index: 9999; fundo: rgba( 255,0,0,0.05 )" onmouseover="alert(document.domain)"]] tarefas: - id: hello type: io.kestra.plugin.core.log.Log mensagem: hello ```. Então navegue para a lista de fluxo: ``` Texto 8080 /ui/ main/ flows ```. Clique no ícone de descrição/informação ao lado do fluxo malicioso.
O navegador executa o JavaScript da descrição do fluxo. No PoC, é acionado um alerta mostrando o domínio atual. As descrições de fluxos entregues com o marcador não devem ser capazes de injetar gestores arbitrários de eventos JavaScript ou atributos HTML controlados pelo atacante na página. A sintaxe personalizada `[[link]]' só deve gerar atributos seguros necessários para o comportamento de link de router pretendido.
Um atacante com permissão para criar ou atualizar um Flow em um espaço de nomes pode armazenar uma carga útil maliciosa do Markdown na descrição do Flow. Quando outro usuário do Kestra visualiza a lista de fluxo e abre o painel de descrição/informação do fluxo, o JavaScript controlado pelo atacante é executado no navegador vítima. Dependendo dos privilégios da vítima, isto pode permitir ao atacante executar ações como a vítima dentro da interface interface Kestra, acessar dados visíveis à vítima, ou pivotar em espaço de nomes mais privilegiado ou funcionalidade administrativa. Isto cruza um limite de segurança nas implementações do Kestra multi- usuário onde os autores do Flow são menos privilegiados do que administradores ou outros operadores que revisam fluxos de trabalho.
Remediação sugerida. O plug- in personalizado do link Markdown não deve renderizar atributos arbitrários em HTML bruto. 1. Permitir listar apenas os atributos exatos necessários pelo componente de ligação do router personalizado. 2. Rejeite todos os atributos começando com `on`, tais como `onclick`, `onmouseover' e `onfocus'. 3. Rejeite ou desinfecte atributos perigosos, como o `estilo`. 4. Escape HTML de todos os valores dos atributos antes da renderização. 5. Garantir que os atributos sejam unidos com segurança com espaços. 6. Sanifica a saída final do Markdown renderizada antes de passar para `v- html`. 7. Adicione testes de regressão para cargas úteis personalizadas `[[link]]` contendo atributos do gestor de eventos. ````md [[link x="y" style="posição:fixado;inset: 0; z- index: 9999; fundo: rgba( 255,0,0,0.05 )" onmouseover="alert(document.domain)"]] ```.
Evidências coletadas. * A carga útil foi armazenada em uma descrição de fluxo. * A lista de fluxos mostrou o fluxo malicioso. * Abrindo o painel de descrição/informação do fluxo desencadeou a execução do JavaScript no navegador. * A carga útil não exigiu a execução do fluxo. * A carga útil usou a sintaxe personalizada do Kestraęs `[[[link]]' em vez de HTML em bruto. Registro de aconselhamento: GHSA- 34 pm- 923 J- 7 wf 8. Identificadores relacionados: CVE- 2026 - 55839. Tempo: GitHub Advisory Database publicou este registro em 2026 - 08 - 18 T 16: 31: 38.000 Z e lista a sua última modificação como 2026 - 08 - 18 T 16: 31: 38.000 Z.
Severidade: ALTAMENTE. Dados de pontuação publicados: CVSS_V 3: CVSS: 3.1 /AV:N/AC:L/PR:L/UI:R/S:C/C:H/I:H/A:N. Software afetado e informações de versão: Pacote Maven io.kestra:kestra — ECOSISTEM: introduzido 0, corrigido 1.3.24. Classificação e evidência: identificadores de fraqueza CWE- 79. O registro contém 4 suporte de referências nestes tipos: WEB, PACKAGE.