Attack ChainAIDerived
Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain
-
ReconGain write access to synced workspace
-
DeliveryPlant CSS snippet with </style> breakout payload
-
ExploitVictim device pulls synced snippet
-
InstallinsertAdjacentHTML parses injected markup
-
C2JavaScript runs in nodeIntegration renderer
-
Executerequire('child_process') executes host commands
-
ImpactFull RCE on victim device
Vulnerability Assessment
| Weakness |
CWE
OWASP Top 10:2025
A05:2025 - Injection
ASVS 5.0
V1 - Encoding and Sanitization Output encoding, context-aware escaping
MITRE ATT&CK
2 techniques across 2 tactics: Initial Access, Execution The technique list with ATT&CK links and the kill-chain view is part of the Basic plan and up. |
| Exploitation Conditions | Exploitation requires the attacker to have write access to a workspace repository that the victim synchronizes, allowing them to plant or modify a CSS snippet; the malicious snippet body must contain a '</style>' break-out sequence followed by an event handler/script, which renderSnippet() then interpolates via insertAdjacentHTML. Full host RCE additionally requires the victim to be running an Electron desktop build where the renderer uses nodeIntegration:true (exposing require('child_process')); on non-Electron contexts impact is limited to in-renderer JavaScript execution. No victim user interaction is needed because the payload fires automatically when the device pulls the synced snippet, and the enabledJS=off protection does not limit it. Limiting factors: the attacker must hold write access to a synced workspace (PR:L, not anonymous internet access), and the maximum (RCE) impact depends on the Electron/nodeIntegration deployment mode. |
| Impact | Multiple signals point to genuine high priority rather than inflated CVSS. The vendor/NVD-style vector CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:C/C:H/I:H/A:H yields 9.9: network-reachable, low complexity, only low privileges (write access to a synced workspace), no user interaction (the payload auto-executes on sync pull), and a scope change reflecting the renderer-to-host RCE escape with full confidentiality/integrity/availability loss. The UI:N and scope-change choices are well justified by the auto-firing sync delivery and the nodeIntegration RCE. Tempering factors: exploitation is not 'unauthenticated against the public internet' - it requires PR:L write access to a workspace the victim syncs, so realistic targets are shared/collaborative or compromised-sync scenarios. No EPSS score, POC, or KEV entry was provided, so there is no evidence of active or widespread exploitation; absence of these signals is not proof of safety but suggests this is currently a high-severity, not-yet-weaponized issue. The full-host RCE impact on Electron builds (versus script-only impact in a hypothetical sandboxed renderer) is the dominant risk driver. |
| Exploit ScenarioDerived | An attacker who gains write access to a workspace the victim syncs (for example a shared/collaborative repo or a previously compromised sync endpoint) saves a CSS snippet whose body contains '</style>' followed by a JavaScript handler that calls require('child_process').exec(...). When any paired device pulls the synced workspace, renderSnippet() interpolates the snippet via insertAdjacentHTML, the handler executes in the nodeIntegration-enabled renderer, and the attacker obtains code execution on the victim's host with no user interaction. No public POC was provided, but the low attack complexity makes reliable exploitation straightforward. |
Get an e-mail when this CVE is exploited, patched or re-scored. Free account.
Alert meAnalysisAIv1 – Jun 24, 2026
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.
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.
Affected VersionsENISA
Affected Packages
Source: OSV (Open Source Vulnerabilities)
Affects your stack
Affects 2 packages in go, euvd
Checking this CVE against your own stacks and servers is part of the Basic plan and up.
Technical ContextAI · show details
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.
Know when Siyuan gets its next vulnerability
- Watch products and get an email when something new is published
- Check this CVE against your own stack and servers
- Exploit and PoC references, threat intelligence from 22 sources
No credit card · 7-day full trial
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
1DescriptionCVE.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.
Executive ViewAI
A critical vulnerability in SiYuan personal knowledge management (versions before 3.7.0) allows workspace participants with write access to execute code across all synced user devices, with escalation to operating system level on Electron desktop clients. Organizations with shared SiYuan workspaces risk widespread endpoint compromise.
Apply vendor patch: upgrade to SiYuan version 3.7.0 or later. Interim mitigations: restrict workspace write access to fully-trusted users; disable Electron desktop use; pause workspace synchronization until patched.
Threat Intelligence Overview
How this decision was reached
The engine reads each signal below and applies a fixed list of rules from top to bottom. The first rule that matches sets the recommended action – like a statement, every line is shown.
What every action level means
SSVC AssessmentENISA
Priority Score
Attack Technique
Cross-Site Scripting occurs when an application accepts untrusted data and sends it to a web browser without proper validation or encoding.
SQL injection in SiYuan's fullTextSearchAssetContent endpoint lets unauthenticated attackers and holders of publish Role
SQL injection in SiYuan personal knowledge management (versions <= v3.7.2) lets attackers pass arbitrary SQL statements
Stored cross-site scripting in SiYuan's attribute-view (database) cell renderer, affecting all versions prior to 3.7.0,
SQL injection in SiYuan personal knowledge-management software (all versions before v3.7.3) lets attackers inject arbitr
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
Remote code execution in SiYuan note-taking application (before v3.6.1) allows any malicious Bazaar marketplace package
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.
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 |
EUVD-2026-39123
GHSA-mvjr-vv3c-w4qv
NVD
CVE.org
EPSS
Vulnrichment
Exploit-DB