Attack ChainAIDerived
Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain
-
AccessCraft block with payload in alias/memo
-
DeliveryDeliver via shared or synced notebook
-
ExploitVictim types '((' and searches
-
ExecutionUnescaped metadata renders in hint popup
-
Persistonerror fires in Electron renderer
-
Impactrequire('child_process') executes OS commands
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 (1) the attacker to be able to set a target block's name, alias, or memo metadata fields - i.e. some path to deliver attacker-controlled block content into the victim's SiYuan workspace, such as a shared, imported, or synced notebook; and (2) the victim to type the '((' block-reference trigger followed by a search term that causes the crafted block to appear in the autocomplete hint popup, at which point the payload self-fires (UI:P passive interaction). It applies to default configurations of SiYuan through 3.7.3 because the vulnerable renderer settings (nodeIntegration enabled, contextIsolation disabled, no CSP) are the shipped defaults, so no special hardening bypass is needed. Limiting factors: the attack is local to the app (AV:L) and needs the malicious metadata to already be present, so purely single-user local-only workspaces with no external note ingestion are largely out of reach; the victim must perform the '((' autocomplete action for the payload to trigger. |
| Impact | The signals mostly agree that this is a high-impact but interaction- and delivery-gated issue. The CVSS 4.0 vector (AV:L/AC:L/AT:N/PR:N/UI:P) scores 9.3 driven by full compromise of both the vulnerable app (VC/VI/VA:H) and the subsequent host system (SC/SI/SA:H) once the payload reaches child_process, but the AV:L and UI:P metrics correctly reflect that the payload must first be delivered into the victim's workspace and then passively surfaced when the user types '(('. There is no EPSS value, no CISA KEV listing, and no public exploit identified at time of analysis, so there is no evidence of active or widespread exploitation; the realistic risk is targeted - a malicious shared/imported note or a compromised sync/collaboration source rather than mass internet exploitation. That said, the outcome (arbitrary OS command execution with no user awareness beyond normal typing) is severe enough that even a mid-sized municipal IT team in boleslawiec should treat a shared-workspace or imported-document deployment as urgent, prioritizing it above a typical reflected XSS. The main uncertainty is the delivery path: the description confirms an attacker must be able to set block metadata, so environments where notes are only authored locally by a single trusted user are materially lower risk than shared or synced deployments. |
| Exploit ScenarioDerived | An attacker crafts a SiYuan block whose alias or memo field contains a self-firing payload such as <img src=x onerror="require('child_process').exec('...')"> and gets it into the victim's workspace via a shared, imported, or synced notebook. When the victim later types '((' and a search term that surfaces the crafted block in the hint popup, the unescaped metadata renders and the onerror handler fires automatically, executing OS commands on the victim's machine without any click. No public proof-of-concept is identified at time of analysis, but the advisories describe the full chain. |
Get an e-mail when this CVE is exploited, patched or re-scored. Free account.
Alert meAnalysisAIv1 – Aug 19, 2026
Stored cross-site scripting escalating to arbitrary OS command execution affects the SiYuan personal knowledge-management application through version 3.7.3. Because the '((' block-reference autocomplete popup renders a candidate block's name, alias, and memo fields into HTML without escaping, an attacker who controls those metadata fields can plant a self-firing payload that runs the moment a victim types '((' and surfaces the crafted block; SiYuan's Electron shell runs with nodeIntegration enabled, contextIsolation disabled, and no CSP, so the injected script reaches require('child_process') and executes host commands. There is no public exploit identified at time of analysis and it is not listed in CISA KEV, but the XSS-to-RCE chain is fully described by the VulnCheck advisory and vendor GHSA.
RemediationAI
Patch available per vendor advisory GHSA-5prr-vgxq-69g9; upgrade to the fixed SiYuan release published after 3.7.3 as indicated in that advisory (the exact patched version is not stated in the available data, so confirm it against the GitHub advisory and release notes at https://github.com/siyuan-note/siyuan/security/advisories/GHSA-5prr-vgxq-69g9 and the VulnCheck writeup). Until patched, reduce exposure by not importing, opening, or syncing notebooks/blocks from untrusted sources and by treating any shared or collaborative workspace as an injection vector, since the payload rides in block name/alias/memo metadata - the trade-off is loss of collaboration/import convenience. Where feasible, review existing block metadata for HTML-like content (e.g. strings containing '<img', 'onerror', or other tag/handler patterns) before typing '((' searches, and avoid triggering block-reference autocomplete against untrusted content; note these are only partial controls because the flaw is in how the app renders metadata, not in the data itself, and the underlying Electron hardening gaps (nodeIntegration/contextIsolation/CSP) remain until the vendor fix is applied.
Affects your stack
Find out whether the stacks and servers you run are on an affected version.
Checking this CVE against your own stacks and servers is part of the Basic plan and up.
Technical ContextAI · show details
SiYuan is a local-first, block-based note-taking/PKM application built on an Electron desktop shell with a TypeScript frontend. The defect is in genHintItemHTML() within app/src/protyle/hint/extend.ts, where the block-reference hint UI (triggered by the '((' syntax) builds each suggestion row by string-concatenating attacker-influenceable block metadata (name, alias, memo) directly into innerHTML with no HTML-entity encoding. This is a classic CWE-79 improper neutralization of input during web page generation, but its severity is amplified by the Electron threat model: with nodeIntegration on and contextIsolation off and no Content-Security-Policy, the renderer's JavaScript context has full Node.js API access, so DOM-injected script is not sandboxed to the page and can spawn child processes. The affected component per CPE is cpe:2.3:a:siyuan-note:siyuan:*:*:*:*:*:*:*:* across all versions up to and including 3.7.3.
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
CVSS:4.0/AV:L/AC:L/AT:N/PR:N/UI:P/VC:H/VI:H/VA:H/SC:H/SI:H/SA:H
Payload must be delivered into the workspace and triggered by the victim typing '((' (AV:L, UI:R); attacker needs no victim-side privileges (PR:N); XSS escapes the renderer to the host OS via Node integration, so S:C with full C/I/A:H.
Primary rating from Vendor (VulnCheck).
CVSS VectorVendor: VulnCheck
DescriptionCVE.org
SiYuan through 3.7.3 contains a cross-site scripting vulnerability in the '((' block-reference autocomplete hint popup. In genHintItemHTML() (app/src/protyle/hint/extend.ts), a candidate block's name, alias, and memo fields are concatenated into the popup's HTML without escaping. An attacker who can set these metadata fields on a block can inject a self-firing payload (e.g. <img src=x onerror=...>) that executes automatically when a victim types '((' followed by a search term that surfaces the crafted block. Because SiYuan's Electron windows run with nodeIntegration enabled, contextIsolation disabled, and no CSP, the injected script gains require('child_process') access, allowing the XSS to escalate to arbitrary OS command execution.
Executive ViewAI
SiYuan personal knowledge-management application through version 3.7.3 contains a critical vulnerability that allows attackers who control block metadata to execute arbitrary operating system commands on victim systems. This escalation from stored cross-site scripting to remote code execution threatens complete system compromise, data theft, and business continuity for any organization using SiYuan.
No vendor-released patch identified at time of analysis. Interim mitigations: restrict modification of block names, aliases, and memo fields to trusted administrators; monitor SiYuan processes for suspicious child process creation or command execution activity; consider network isolation or containerized/virtualized deployment of SiYuan instances; disable unnecessary Electron features and integrations in application settings.
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.
OS command injection occurs when an application passes unsanitized user input directly into system shell commands.
Affected Products (CPE)CVE.org
SQL injection in SiYuan personal knowledge management (versions <= v3.7.2) lets attackers pass arbitrary SQL statements
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.
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
EUVD-2026-62441
GHSA-962c-hgx6-ffmx
NVD
CVE.org
EPSS
Vulnrichment
Exploit-DB