CVE-2026-54158

SiYuan is an open-source personal knowledge management system. Prior to 3.7.0, the attribute-view (database) cell renderer genAVValueHTML interpolates cell content raw in four of its branches: text, url, phone, and mAsset. A cell value like </textarea><img src=x onerror="..."> or "><img src=x onerror="..."> breaks out of its surrounding tag and runs arbitrary JavaScript in the renderer when the victim opens the block-attribute panel. On Electron desktop the renderer runs with nodeIntegration:true, so the XSS chains to host RCE via require('child_process'). AV files live under the workspace and ride normal sync, so an attacker with write access to any synced workspace plants the payload once and it fires on every device that opens a panel containing that row.he kernel doesn't escape on the way in either, so the malicious cell persists byte-for-byte. There's no equivalent of the html.EscapeAttrVal call that protects block IAL attributes at kernel/model/blockial.go:261. This vulnerability is fixed in 3.7.0.
Configurations

No configuration.

History

25 Oct 2026, 23:10

Type Values Removed Values Added
Summary
  • (es) SiYuan es un sistema de gestión de conocimiento personal de código abierto. Antes de la versión 3.7.0, el renderizador de celdas genAVValueHTML de la vista de atributos (base de datos) interpola el contenido de la celda en bruto en cuatro de sus ramas: texto, url, teléfono y mAsset. Un valor de celda como </textarea [tag_HTML_PoC] o ’ [tag_HTML_PoC] ’ escapa de su etiqueta circundante y ejecuta JavaScript arbitrario en el renderizador cuando la víctima abre el panel de atributos de bloque. En el escritorio de Electron, el renderizador se ejecuta con nodeIntegration:true, por lo que el XSS se encadena a RCE en el host a través de require(’child_process’). Los archivos AV residen en el espacio de trabajo y se sincronizan normalmente, por lo que un atacante con acceso de escritura a cualquier espacio de trabajo sincronizado implanta la carga útil una vez y se activa en cada dispositivo que abre un panel que contiene esa fila. El kernel tampoco escapa al entrar, por lo que la celda maliciosa persiste byte a byte. No existe un equivalente de la llamada html.EscapeAttrVal que protege los atributos IAL de bloque en kernel/model/blockial.go:261. Esta vulnerabilidad está corregida en la versión 3.7.0.

Information

Published : 2026-06-24 22:16

Updated : 2026-10-25 23:10


NVD link : CVE-2026-54158

Mitre link : CVE-2026-54158

CVE.ORG link : CVE-2026-54158


JSON object : View

Products Affected

No product.

CWE
CWE-79

Improper Neutralization of Input During Web Page Generation ('Cross-site Scripting')

CWE-1188

Initialization of a Resource with an Insecure Default