Executive brief
SiYuan, a personal knowledge management system, is vulnerable to a security flaw where malicious data in a database cell can execute unauthorized commands on a user's computer. If an attacker can modify a shared or synced workspace, they can plant a 'booby-trap' that triggers when a victim simply views the affected data. On desktop versions, this can lead to a full takeover of the user's computer, potentially resulting in data theft or malware installation.
Technical details
A stored XSS vulnerability exists in the `genAVValueHTML` function within `app/src/protyle/render/av/blockAttr.ts`. The renderer fails to sanitize cell content for `text`, `url`, `phone`, and `mAsset` types before interpolating them into the DOM via `innerHTML`. An attacker with write access to a synced workspace can inject malicious JavaScript. On Electron-based desktop builds, because `nodeIntegration` is enabled and `contextIsolation` is disabled, this XSS can be leveraged to achieve Remote Code Execution (RCE) by calling Node.js primitives like `require('child_process')`. The vulnerability is triggered when a user opens the block-attribute panel containing the malicious cell.
Affected products
- siyuan-note SiYuan < 3.6.6
Timeline
- 2026-04-21: disclosed: Vulnerability identified in version 3.6.5
- 2026-06-03: advisory: GitHub Advisory published
- 2026-06-28: patched: Fixed in commit 2d5d72223df4