CVE-2026-82653: SiYuan: stored XSS via malicious bazaar package names
HIGHSiYuan before v3.8.1 fails to escape package and notebook names before injecting them into innerHTML inside confirmDialog(), letting an attacker who publishes a malicious bazaar plugin or crafts a booby-trapped encrypted notebook execute arbitrary JavaScript in a victim's browser session. The scope-changed CVSS 8.9 (AV:N/AC:L/PR:L/UI:R/S:C/C:H/I:H/A:L) reflects that a single click during uninstall or notebook-unlock can compromise confidentiality and integrity beyond the vulnerable component itself, and there is no EPSS data, no CISA KEV listing, and no public exploit or Nuclei template yet, so this looks like a fresh, low-noise disclosure rather than an actively weaponized bug. SiYuan is used as a personal/team knowledge base and increasingly as a local-first note store that AI workflows (RAG ingestion, note-to-LLM pipelines) read from, so a compromised session can leak notebook contents or pivot into connected tooling. Patch to v3.8.1 or later immediately; until then, treat the bazaar plugin marketplace as untrusted input, restrict who can publish or install plugins, and avoid opening notebooks or uninstalling packages from unverified sources. Security teams should watch for anomalous outbound requests or DOM manipulation originating from the SiYuan desktop/web client shortly after a plugin install or notebook unlock action.
What is the risk?
High severity primarily due to the scope change (S:C) — the XSS payload executes in the security context of the SiYuan client/browser and can affect resources beyond the vulnerable dialog component, with high confidentiality and integrity impact. Exploitability is moderate: it requires user interaction (uninstalling a package or unlocking an encrypted notebook) and low privileges, but attack complexity is low once a malicious package or notebook name is crafted and placed where a victim will encounter it (e.g., published to the public bazaar). No evidence of active exploitation, no KEV listing, no public PoC/exploit code, and no EPSS score — this is a disclosed-but-not-yet-weaponized vulnerability, which lowers near-term urgency but does not remove it given the low bar to exploit once a malicious bazaar entry is published.
How does the attack unfold?
How severe is it?
What is the attack surface?
What should I do?
1 step-
Upgrade SiYuan to v3.8.1 or later immediately, where confirmDialog() properly escapes interpolated names. Until patched: disable or restrict installation of bazaar plugins to a vetted allowlist, avoid uninstalling packages or unlocking notebooks of unknown provenance, and educate users not to import notebooks or install plugins from untrusted sources. For detection, monitor for unusual DOM/script execution or outbound network activity immediately following plugin uninstall or notebook unlock actions in SiYuan logs, and review bazaar package submissions for HTML/script payloads in name fields. Apply standard XSS defenses where feasible (CSP hardening in the Electron/web shell) as defense-in-depth.
How is it classified?
Which compliance frameworks are affected?
This CVE is relevant to:
Frequently Asked Questions
What is CVE-2026-82653?
SiYuan before v3.8.1 fails to escape package and notebook names before injecting them into innerHTML inside confirmDialog(), letting an attacker who publishes a malicious bazaar plugin or crafts a booby-trapped encrypted notebook execute arbitrary JavaScript in a victim's browser session. The scope-changed CVSS 8.9 (AV:N/AC:L/PR:L/UI:R/S:C/C:H/I:H/A:L) reflects that a single click during uninstall or notebook-unlock can compromise confidentiality and integrity beyond the vulnerable component itself, and there is no EPSS data, no CISA KEV listing, and no public exploit or Nuclei template yet, so this looks like a fresh, low-noise disclosure rather than an actively weaponized bug. SiYuan is used as a personal/team knowledge base and increasingly as a local-first note store that AI workflows (RAG ingestion, note-to-LLM pipelines) read from, so a compromised session can leak notebook contents or pivot into connected tooling. Patch to v3.8.1 or later immediately; until then, treat the bazaar plugin marketplace as untrusted input, restrict who can publish or install plugins, and avoid opening notebooks or uninstalling packages from unverified sources. Security teams should watch for anomalous outbound requests or DOM manipulation originating from the SiYuan desktop/web client shortly after a plugin install or notebook unlock action.
Is CVE-2026-82653 actively exploited?
No confirmed active exploitation of CVE-2026-82653 has been reported, but organizations should still patch proactively.
How to fix CVE-2026-82653?
Upgrade SiYuan to v3.8.1 or later immediately, where confirmDialog() properly escapes interpolated names. Until patched: disable or restrict installation of bazaar plugins to a vetted allowlist, avoid uninstalling packages or unlocking notebooks of unknown provenance, and educate users not to import notebooks or install plugins from untrusted sources. For detection, monitor for unusual DOM/script execution or outbound network activity immediately following plugin uninstall or notebook unlock actions in SiYuan logs, and review bazaar package submissions for HTML/script payloads in name fields. Apply standard XSS defenses where feasible (CSP hardening in the Electron/web shell) as defense-in-depth.
What systems are affected by CVE-2026-82653?
This vulnerability affects the following AI/ML architecture patterns: agent frameworks, plugin marketplaces, local knowledge/RAG ingestion pipelines.
What is the CVSS score for CVE-2026-82653?
CVE-2026-82653 has a CVSS v3.1 base score of 8.9 (HIGH).
What is the AI security impact?
Affected AI Architectures
MITRE ATLAS Techniques
AML.T0011 User Execution AML.T0011.001 Malicious Package Compliance Controls Affected
What are the technical details?
Original Advisory
SiYuan before v3.8.1 contains a stored cross-site scripting vulnerability in confirmDialog() where unescaped package names and notebook names are interpolated directly into innerHTML assignments. Attackers can submit malicious bazaar packages with HTML/script payloads in the name field that execute in users' browsers when uninstalling packages or unlocking encrypted notebooks.
Exploitation Scenario
An attacker publishes a plugin to the SiYuan bazaar with a name field containing a crafted HTML/script payload (e.g., an img tag with an onerror handler). A victim browsing the bazaar installs the plugin out of curiosity, and later decides to uninstall it — triggering confirmDialog(), which interpolates the malicious package name directly into innerHTML and executes the embedded script in the victim's SiYuan session. The script can then read locally stored notebook content, exfiltrate it to an attacker-controlled endpoint, or attempt to pivot to any API keys or tokens accessible within the app's context. A parallel path exists via encrypted notebook names shared with a victim, triggering on the unlock dialog instead of uninstall.
Weaknesses (CWE)
CWE-79 — Improper Neutralization of Input During Web Page Generation ('Cross-site Scripting'): The product does not neutralize or incorrectly neutralizes user-controllable input before it is placed in output that is used as a web page that is served to other users.
- [Architecture and Design] Use a vetted library or framework that does not allow this weakness to occur or provides constructs that make this weakness easier to avoid [REF-1482]. Examples of libraries and frameworks that make it easier to generate properly encoded output include Microsoft's Anti-XSS library, the OWASP ESAPI Encoding module, and Apache Wicket.
- [Implementation, Architecture and Design] Understand the context in which your data will be used and the encoding that will be expected. This is especially important when transmitting data between different components, or when generating outputs that can contain multiple encodings at the same time, such as web pages or multi-part mail messages. Study all expected communication protocols and data representations to determine the required encoding strategies. For any data that will be output to another web page, especially any data that was received from external inputs, use the appropriate encoding on all non-alphanumeric characters. Parts of the same output document may require different encodings, which will vary depending on whether the output is in the: etc. Note that HTML Entity Encoding is only appropriate for the HTML body. Consult the XSS Prevention Cheat Sheet [REF-724] for more details on the types of encoding and escaping that are needed. HTML body Element attributes (such as src="XYZ") URIs JavaScript sections Casca
Source: MITRE CWE corpus.
CVSS Vector
CVSS:3.1/AV:N/AC:L/PR:L/UI:R/S:C/C:H/I:H/A:L References
Timeline
Related Vulnerabilities
CVE-2025-59528 10.0 Flowise: Unauthenticated RCE via MCP config injection
Same attack type: Supply Chain CVE-2024-2912 10.0 BentoML: RCE via insecure deserialization (CVSS 10)
Same attack type: Supply Chain CVE-2023-3765 10.0 MLflow: path traversal allows arbitrary file read
Same attack type: Supply Chain CVE-2025-5120 10.0 smolagents: sandbox escape enables unauthenticated RCE
Same attack type: Supply Chain CVE-2026-21858 10.0 n8n: Input Validation flaw enables exploitation
Same attack type: Code Execution