JavaScript em links Markdown compromete a sessão após o clique
O componente KsMarkdown aceita links com o esquema javascript: porque o filtro xssProtection examina apenas o HTML inserido diretamente no texto. Os links gerados pelo parser de Markdown seguem outro caminho e chegam à página sem essa validação. Isso permite uma injeção persistente de script, conhecida como XSS (cross-site scripting). Um atacante autenticado com permissão para editar flows pode gravar um link malicioso na descrição e apresentá-lo como acesso à documentação. Ao clicar, você executa o código na sua sessão do navegador. O ataque também pode atingir administradores e permitir o roubo de credenciais ou o sequestro de sessão, conforme o comunicado.
Casos de uso afetados
- Você consulta descrições de flows ou de triggers com links inseridos por outros participantes. Na demonstração do aviso, a permissão de edição de flows permite gravar o link que será exibido posteriormente.
- Os gráficos Markdown do seu dashboard exibem conteúdo controlado por outros participantes. Um destino javascript: nesses links pode executar código quando você clica.
- Você abre links nas mensagens do Copilot renderizadas pelo KsMarkdown. O comunicado inclui essas mensagens entre os recursos afetados pela falta de validação do esquema da URL.
- As descrições de blueprints exibidas na interface também usam o KsMarkdown. Um link malicioso nessa descrição pode atingir sua sessão durante a consulta ao blueprint.
Confira na sua instância
Confira a versão do pacote @kestra-io/ui usado pela interface da sua instância e compare-a com a faixa afetada <= v2.0.0-rc11 e a correção v2.0.0-rc12. Revise o Markdown das descrições de flows e triggers procurando destinos que comecem com javascript:. Faça a mesma conferência no conteúdo dos gráficos Markdown dos dashboards, nas mensagens do Copilot e nas descrições de blueprints. Para conferir um link já renderizado, examine o atributo href pelas ferramentas de desenvolvimento do navegador, sem clicar nele. Após atualizar a interface, confirme que o KsMarkdown recusa esse esquema nos links gerados pelo parser, inclusive nas telas que você utiliza.
Versões afetadas e correções
| Linha | Afetadas | Corrigidas |
|---|---|---|
| @kestra-io/ui (npm) | <= v2.0.0-rc11 | v2.0.0-rc12 |
A versão corrigida informada pelo projeto é uma release candidate. A disponibilidade dessa correção não confirma que a interface da sua instância recebeu a atualização.
