SiYuan v 3.6.5 e versões anteriores contêm uma vulnerabilidade de scripting entre sites armazenada no renderizador de células de atributos (base de dados) que escala para execução de código remoto (RCE) no cliente de área de trabalho do Electron. Este é um vizinho-bug de CVE- 2026 - 44588: a correção para - 44588 usado ` escapeAriaLabel()` (duplas escapes `<`), mas os renderizadores de ativos AV foram deixados usando o ` escapeAttr()` mais fraco (escapes apenas citações) ou sem fuga. ## Detalhes de vulnerabilidade. O renderizador eletrónico está configurado com `nodeIntegration: true` e `contextIsolation: false` (app/electron/ main.js: 307 ), permitindo que qualquer execução do JavaScript no renderizador acesse diretamente as APIs do Node.js incluindo `require('child_process')`. Existem dois aquecedores XSS.
### Lavar 1 (Direct Stored XSS - ativa na carga da página). ` app/ src/ protyle/ rende/ av/cell.ts: 1008 `: texto += ` ${item. name. name.. item. content} `. A porção `>${item.nome.Há. item.content} ` é entrada bruta do usuário com zero escapando. ` app/ src/ protyle/ rende/ av/ blockAttr.ts: 93 ` (peor ainda - completamente inesquecível):.
Rendered via ` action.ts: 860 `: `cellElement.innerHTML = renderCell(...)` resulta em XSS imediato na carga da página. ### Lavar 2 (XSS desencadeado por um hospedeiro via ida e volta com a rótula aria) - As mesmas linhas emitem `aria- label="${escapeAttr(item.content)}"` nos elementos `.ariaLabel`. - `escapeAttr()` (util/escape.ts: 14 ) escapa apenas `"` e `'` — NÃO ` `. - `popover.ts: 33 ` o manipulador global do mouse over lê ` aria- label` via `getAttribute` (que atributo- decodifica entidades). - Linha 144: `showTooltip(decodeURIComponent(tip),...)` em seguida, `tooltip.ts: 41 `: `messageElement.innerHTML = mensagem` resulta em XSS no paira.
- ` app/ src/ protyle/ rende/ av/ asset.ts: 405 `: `addAssetLink()` lê entrada de usuário de uma forma livre ` ` sem desinfectação. - Kernel armazena ` MAsset.Content` bruto (kernel/av/ value.go: 53 ), sem desinfectação do lado do servidor. 1. O atacante cria uma nota maliciosa contendo uma Visualização de Atributos (base de dados). 2. O atacante adiciona uma célula de ativos com conteúdo de link: ` ` 3. A vítima abre a nota para RCE imediato (Sink 1 ) ou passa sobre a célula para RCE (Sink 2 ). 4. Em um cenário de sincronização/colaboração, a nota maliciosa se propaga para todos os usuários. Carga útil (XSS Direto) — em um campo de link de célula AV, digite:.
Para RCE na área de trabalho do eletrónico. ### Passos para Reprodução 1. Abrir aplicativo de área de trabalho SiYuan (v 3.6.5 ). 2. Criar um novo documento. 3. Insira uma Visualização de Atributos (base de dados): `/`, em seguida, selecione "Tabela". 4. Adicione uma coluna do tipo "Asset". 5. Clique na célula de ativos, em seguida, "Adicionar link". 6. Na área de texto "Link", colar: ` ` 7. Deixe "Título" vazio ou preencha com texto benigno. 8. Clique fora da janela para salvar. 9. Observar: Alerta de incêndios imediatamente (Sink 1 ). Passar sobre a célula também ativa (Lançar 2 ). - Execução de código remoto no sistema da vítima através de sincronização/importação malicioso de notas. - Exfiltração de dados: o atacante pode ler todas as notas, acessar o sistema de arquivos, roubar credenciais. - Persistência: carga útil malicioso armazenada em arquivos `.sy`, executa em cada abertura.
1. Substituir ` escapeAttr()` por ` escapeAriaLabel()` para todos os atributos ` aria- label' nos renderizadores de células AV. 2. Escape `item.name` e `item.content` com `escapeHtml()` antes de concatenar em conteúdo de texto de elemento. Arquivos afetados: `app/src/ protyle/render/av/cell.ts`, `app/src/ protyle/render/av/ blockAtr.ts`, `app/src/ protyle/render/av/ asset.ts`. ## Contexto adicional. Esta vulnerabilidade é um vizinho- bug de CVE- 2026 - 44588. A correção para - 44588 corretamente usado ` escapeAriaLabel()` (que dupla- escape ` `getAttribute` -> ` innerHTML` ida e volta), mas os renderizadores de células de ativos AV foram deixados usando o ` escapeAttr()' mais fraco ou sem fuga. Isto é parte de um padrão de correções incompletas no SiYuan (ver também CVE- 2026 - 33066, CVE- 2026 - 29183 ). A correção a longo prazo deve definir Electron`contextIsolation: true` e `nodeIntegration: false'.
Reporter (GitHub: Yunkaiwjs). Registro de aconselhamento: GHSA- 56 MP- 4 f 3 v- fgj 2. Identificadores relacionados: CVE- 2026 - 50551. Tempo: GitHub Advisory Database publicou este registro em 2026 - 07 - 10 T 20: 37: 04.000 Z e lista a sua última modificação como 2026 - 07 - 10 T 20: 37: 04.000 Z.
Gravidade: Crítico. Dados de pontuação publicados: CVSS_V 3: CVSS: 3.1 /AV:N/AC:L/PR:L/UI:N/S:C/C:H/I:H/A:H. Informações sobre software e versão afetadas: Go package github.com/siyuan-note/siyuan/kernel — ECOSISTEM: introduzido 0, corrigido 0.0.0 - 20260628153353 - 2 d 5 d 72223 df 4. Classificação e evidência: identificadores de fraqueza CWE- 79. O registro contém 3 suporte de referências nestes tipos: WEB, AVISO, EMBALAGAMENTO.