Severity by source
AV:N/AC:L/PR:L/UI:N/S:C/C:H/I:H/A:H
Network-deliverable via sync with only workspace write access (PR:L), auto-fires without interaction (UI:N), and the renderer XSS escapes to host RCE (S:C) with full C/I/A loss.
Primary rating from Vendor (GitHub_M).
CVSS VectorVendor: GitHub_M
Lifecycle Timeline
2DescriptionCVE.org
SiYuan is an open-source personal knowledge management system. Prior to 3.7.0, CSS snippet body containing </style> breaks out of its surrounding <style> tag when renderSnippet() interpolates it via insertAdjacentHTML. A payload like runs arbitrary JavaScript in the renderer. On Electron desktop builds the renderer runs with nodeIntegration:true, so require('child_process') is reachable from the injected handler and the XSS chains to host RCE. Snippets sync via the workspace repository, so an attacker with write access to any synced workspace plants the payload once and it fires on every device that pulls. The bug also bypasses the user's enabledCSS / enabledJS separation. A user who turned enabledJS off was making a deliberate call not to run untrusted JavaScript; the CSS path runs it anyway. This vulnerability is fixed in 3.7.0.
AnalysisAI
Stored cross-site scripting in SiYuan personal knowledge management before 3.7.0 lets an attacker with write access to a synced workspace plant a CSS snippet whose '</style>' sequence breaks out of the surrounding <style> tag when renderSnippet() interpolates it via insertAdjacentHTML, running arbitrary JavaScript in the renderer. On Electron desktop builds the renderer runs with nodeIntegration:true, so the injected handler can reach require('child_process') and escalate the XSS to full host remote code execution. The payload syncs through the workspace repository and fires automatically on every device that pulls, and it bypasses the user's enabledJS=off setting; no public exploit or CISA KEV listing is identified at time of analysis.
Technical ContextAI
The flaw is a classic CWE-79 (Improper Neutralization of Input During Web Page Generation) stored XSS rooted in unsafe HTML construction. SiYuan renders user-supplied CSS snippets by interpolating the snippet body directly into a <style> element using insertAdjacentHTML rather than assigning it as inert text content; because insertAdjacentHTML parses its input as live markup, a literal '</style>' inside the snippet body prematurely closes the style context and any following markup (e.g. a <script>/<img onerror=...> handler) is parsed and executed. The affected component is the SiYuan note application (cpe:2.3:a:siyuan-note:siyuan:*), an Electron/Chromium-based desktop app. The decisive aggravating factor is the Electron configuration: nodeIntegration:true exposes Node.js APIs such as child_process to renderer JavaScript, turning a browser-context XSS into native OS command execution. Snippets are persisted and distributed through the workspace sync repository, giving the payload a worm-like propagation path across all paired devices.
RemediationAI
Upgrade to SiYuan 3.7.0 or later, which fixes the snippet rendering path (Vendor-released patch: 3.7.0); see the advisory at https://github.com/siyuan-note/siyuan/security/advisories/GHSA-mvjr-vv3c-w4qv. Until you can patch, restrict who has write access to any workspace you sync from and audit existing CSS snippets for '</style>' sequences or embedded markup/handlers, deleting any unrecognized snippet, since the payload persists in the synced repository and re-fires on every pull. As compensating controls, avoid syncing with untrusted or shared workspaces, and on desktop prefer not opening untrusted workspace data; note that toggling enabledJS off does NOT mitigate this issue because the CSS rendering path executes script regardless, so do not rely on that setting as a workaround. Because the high-impact variant stems from Electron nodeIntegration:true, organizations packaging or self-building SiYuan should track the upstream fix rather than attempt to disable nodeIntegration ad hoc, which can break application functionality.
SQL injection in SiYuan personal knowledge management (versions <= v3.7.2) lets attackers pass arbitrary SQL statements
A SQL injection vulnerability was discovered in Siyuan 3.1.11 in /getHistoryItems. Rated critical severity (CVSS 9.8), t
A SQL injection vulnerability has been identified in Siyuan 3.1.11 via the ids array parameter in /batchGetBlockAttrs. R
A SQL injection vulnerability has been identified in Siyuan 3.1.11 via the id parameter at /getAssetContent. Rated criti
A SQL injection vulnerability has been identified in Siyuan 3.1.11 via the notebook parameter in /searchHistory. Rated c
SiYuan personal knowledge management system prior to 3.5.4 has a stored XSS vulnerability (CVSS 9.6) that allows code ex
Origin-validation bypass in SiYuan Note (open-source personal knowledge management) before 3.7.0 lets any installed Chro
Reflected XSS in SiYuan knowledge management before 3.5.9.
SiYuan knowledge management system prior to 3.5.5 has a path traversal in /api/file/copyFile allowing arbitrary file ope
SiYuan version 3.0.3 allows executing arbitrary commands on the server. Rated critical severity (CVSS 9.0), this vulnera
SQL injection in SiYuan prior to version 3.6.0 allows any authenticated user, including those with read-only access, to
Cross-site scripting (XSS) in SiYuan personal knowledge management system versions 3.6.0-3.6.1 allows remote attackers t
Same weakness CWE-79 – Cross-site Scripting (XSS)
View allVendor StatusVendor
SUSE
Severity: Critical| Product | Status |
|---|---|
| SUSE Linux Enterprise Server 16.1 | Affected |
| SUSE Linux Enterprise Server for SAP applications 16.1 | Affected |
| SUSE Linux Enterprise Module for Package Hub 15 SP5 | Affected |
| SUSE Linux Enterprise Module for Package Hub 15 SP6 | Affected |
| openSUSE Leap 15.5 | Affected |
| openSUSE Leap 15.6 | Affected |
Share
External POC / Exploit Code
Leaving vuln.today
EUVD-2026-39123
GHSA-mvjr-vv3c-w4qv