CVE-2026-100641
Description
SiYuan before v3.8.4 does not HTML-escape stored flashcard block content before interpolating it into the card-manager list markup. Block content returned by /api/riff/getRiffCards is inserted into a card item template in app/src/card/viewCards.ts and assigned to listElement.innerHTML, so content such as <img src=invalid onerror=...> becomes an executable event-handler attribute. Because the SiYuan desktop (Electron) main window is created with nodeIntegration enabled and contextIsolation disabled, an administrator who opens the card manager on a workspace containing attacker-supplied flashcard content (for example introduced through contribution or import) executes the attacker's script in a privileged renderer, which can lead to arbitrary code execution on the host. The affected endpoint remains behind authentication and administrator-role checks; this is an untrusted-content-to-privileged-renderer issue, not an authorization bypass.
How to fix
- siyuan-note siyuan3.8.4 or later
- github.com/siyuan-note/siyuan/commit/1ecb1c07de497ff03b585536fe5579291754d96b
- github.com/siyuan-note/siyuan/commit/48c354e7de130aaada9d7120125bbc768344fd3b
- github.com/siyuan-note/siyuan/commit/41b14025b4ac4a8379d1200580344ca18ad152b7
- github.com/siyuan-note/siyuan/commit/8641553a1f07374001902d3ce773285db1292b2d
Affected products
| Product | Affected versions | Fixed in |
|---|---|---|
| siyuan-note siyuan | v < 3.8.4 | 3.8.4 |
Check your version
Choose the product and enter the version you run to see whether it falls in the affected range.
Attack Surface Management
See the assets tied to your domains, the technologies they run and known vulnerabilities in one list.