SiYuan Desktop: XSS armazenado em conteúdo .sy.zip importado leva à execução arbitrária de comandos
Plataforma
go
Componente
github.com/siyuan-note/siyuan/kernel
Corrigido em
0.0.0-20260329142331-918d1bd9f967
### Resumo Uma vulnerabilidade permite que valores de atributos de bloco criados ignorem o escape de atributos do lado do servidor quando uma entidade HTML é misturada com caracteres especiais brutos. Um invasor pode incorporar um valor IAL malicioso dentro de um documento `.sy`, empacotá-lo como um `.sy.zip` e fazer com que a vítima o importe através do fluxo de trabalho normal `Importar -> SiYuan .sy.zip`. Uma vez que a nota é aberta, o atributo malicioso sai de seu contexto HTML original e injeta um manipulador de eventos, resultando em XSS armazenado (Stored XSS). No cliente desktop Electron, este XSS atinge a execução remota de código porque o JavaScript injetado é executado com acesso às APIs Node/Electron. ### Detalhes O problema é causado por uma regressão lógica em `escapeNodeAttributeValues` em `kernel/filesys/tree.go`. Anteriormente, a lógica de escape convertia `node.KramdownIAL` com `parse.IAL2Map(...)` antes de decidir se um valor precisava de escape. Essa conversão desfazia o escape de entidades existentes primeiro, então valores mistos como: ``` &" onmouseenter="alert('IAL-XSS') ``` eram reconhecidos como inseguros e escapados corretamente. A lógica foi alterada para inspecionar os valores brutos de `KramdownIAL` diretamente. A nova implementação `needsEscapeForValue` retorna `false` assim que vê
Como corrigir
Nenhum patch oficial disponível. Procure alternativas ou monitore atualizações.
Monitore suas dependências automaticamente
Receba alertas quando novas vulnerabilidades afetarem seus projetos.
Começar grátis