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.
Published: 2026-09-26
Score: 8.6 High
EPSS: n/a
KEV: No
Impact: Remote Code Execution
Action: Immediate Patch
AI Analysis

Impact

SiYuan before version 3.8.4 fails to HTML‑escape user‑supplied flashcard content before inserting it into the card‑manager list markup. The vulnerable endpoint returns the content, which is then assigned to a DOM element’s innerHTML. An attacker can embed executable JavaScript, such as an image tag with an onerror handler, that will run in the context of the application. Because the SiYuan desktop uses Electron with nodeIntegration enabled and contextIsolation disabled, this script executes with renderer process privileges, allowing an attacker to run arbitrary code on the host system. The impact is thus the ability to execute attacker‑supplied code with full desktop privileges, leading to potential data theft or system compromise.

Affected Systems

The vulnerability affects the SiYuan note‑taking application, specifically all releases prior to 3.8.4. Users running older SiYuan versions on any operating system that uses the desktop Electron build are susceptible. No other outlined vendors or products are impacted.

Risk and Exploitability

The CVSS score of 8.6 classifies this as a high‑severity flaw. The EPSS score is not available, but the risk remains high because the flaw requires the attacker to supply flashcard content, which typically involves contributing or importing user content. The vulnerability is not listed in the CISA KEV catalog, yet the attack vector relies on privileged renderer access; an administrator who opens the card manager in a workspace containing malicious content will trigger code execution. The exploit does not bypass authentication or authorization but exploits the untrusted‑content‑to‑privileged‑renderer problem.

Generated by OpenCVE AI on September 26, 2026 at 15:10 UTC.

Remediation

No vendor fix or workaround currently provided.

OpenCVE Recommended Actions

  • Upgrade SiYuan to version 3.8.4 or later, which applies the necessary escaping to flashcard content.
  • If an upgrade is temporarily infeasible, restrict access to the card‑manager feature for non‑administrator users and remove any flashcard blocks that contain unknown or untrusted content.
  • Consider running the desktop application in a sandboxed environment or disabling nodeIntegration/enable contextIsolation if possible, to reduce the privilege level of rendered content.

Generated by OpenCVE AI on September 26, 2026 at 15:10 UTC.

Tracking

Sign in to view the affected projects.

Advisories

No advisories yet.

History

Sat, 26 Sep 2026 13:30:00 +0000

Type Values Removed Values Added
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.
Title SiYuan before v3.8.4 Stored XSS via Unescaped Flashcard Content
First Time appeared B3log
B3log siyuan
Weaknesses CWE-79
CPEs cpe:2.3:a:b3log:siyuan:*:*:*:*:*:*:*:*
Vendors & Products B3log
B3log siyuan
References
Metrics cvssV3_1

{'score': 8, 'vector': 'CVSS:3.1/AV:N/AC:L/PR:L/UI:R/S:U/C:H/I:H/A:H'}

cvssV4_0

{'score': 8.6, 'vector': 'CVSS:4.0/AV:N/AC:L/AT:N/PR:L/UI:P/VC:H/VI:H/VA:H/SC:N/SI:N/SA:N'}


cve-icon MITRE

Status: PUBLISHED

Assigner: VulnCheck

Published:

Updated: 2026-09-26T13:23:13.957Z

Reserved: 2026-09-26T02:32:35.659Z

Link: CVE-2026-100641

cve-icon Vulnrichment

No data.

cve-icon NVD

Status : Deferred

Published: 2026-09-26T14:16:46.080

Modified: 2026-09-26T14:16:46.193

Link: CVE-2026-100641

cve-icon Redhat

No data.

cve-icon OpenCVE Enrichment

Updated: 2026-09-26T16:15:14Z

Weaknesses
  • CWE-79

    Improper Neutralization of Input During Web Page Generation ('Cross-site Scripting')