Description
SiYuan is an open-source personal knowledge management system. Prior to 3.7.0, SiYuan's Bazaar (community marketplace) renders the name and version fields of a package's plugin.json (and the equivalent theme.json / template.json / widget.json / icon.json) into the Settings → Marketplace UI without HTML escaping. The kernel-side helper sanitizePackageDisplayStrings in kernel/bazaar/package.go HTML-escapes only Author, DisplayName, and Description — Name and Version flow through to the renderer raw. The frontend at app/src/config/bazaar.ts substitutes them into HTML template strings via ${item.preferredName} / ${data.name} / v${data.version} and assigns the result to innerHTML. As a consequence, malicious HTML in either field is parsed and executed when a user opens the marketplace tab. This vulnerability is fixed in 3.7.0.
Published: 2026-05-14
Score: 9 Critical
EPSS: < 1% Very Low
KEV: No
Impact: n/a
Action: n/a
AI Analysis

Impact

SiYuan’s Bazaar community marketplace displays the name and version fields from a plugin’s package metadata directly in the Settings → Marketplace UI without escaping. The kernel helper sanitizes only author, display name, and description, letting malicious HTML in the name or version fields pass through to the renderer. When a user opens the marketplace tab, the unescaped content is injected into innerHTML, causing stored cross‑site scripting that can execute code within the Electron runtime. The flaw permits arbitrary code execution within the user’s local environment, compromising confidentiality, integrity, and availability of the application and the host system.

Affected Systems

The vulnerability affects version releases of SiYuan prior to 3.7.0, including all packages that parse plugin.json, theme.json, template.json, widget.json, or icon.json. Users running SiYuan 3.6.x and earlier are at risk if they access the marketplace or install plugins from that store.

Risk and Exploitability

The CVSS score of 9 denotes a critical severity, and while the EPSS score is not available, the vulnerability is listed in the official advisory and is not yet in CISA’s KEV catalogue. The likely attack vector is local: an attacker needs only to upload a malicious plugin or theme that contains forged name or version strings; when any user of that installation opens the marketplace, the stored XSS payload runs in the Electron context, enabling remote code execution. Even without a direct network attack, the threat is significant because every marketplace user presents a potential entry point.

Generated by OpenCVE AI on May 14, 2026 at 20:41 UTC.

Remediation

No vendor fix or workaround currently provided.

OpenCVE Recommended Actions

  • Upgrade SiYuan to version 3.7.0 or later to receive the patch that sanitizes name and version strings in marketplace templates
  • If upgrading is not immediately possible, refrain from installing or consuming any plugins, themes, templates, widgets, or icons that have not been vetted or that originate from unfamiliar sources until the fix is applied
  • Consider disabling or restricting access to the Settings → Marketplace UI until a patch is applied to prevent the execution of malicious content

Generated by OpenCVE AI on May 14, 2026 at 20:41 UTC.

Tracking

Sign in to view the affected projects.

Advisories
Source ID Title
Github GHSA Github GHSA GHSA-27qc-m5gf-jv5r SiYuan Bazaar marketplace renders unescaped package `name` and `version` metadata, allowing stored XSS and Electron code execution
History

Thu, 14 May 2026 19:00:00 +0000

Type Values Removed Values Added
Description SiYuan is an open-source personal knowledge management system. Prior to 3.7.0, SiYuan's Bazaar (community marketplace) renders the name and version fields of a package's plugin.json (and the equivalent theme.json / template.json / widget.json / icon.json) into the Settings → Marketplace UI without HTML escaping. The kernel-side helper sanitizePackageDisplayStrings in kernel/bazaar/package.go HTML-escapes only Author, DisplayName, and Description — Name and Version flow through to the renderer raw. The frontend at app/src/config/bazaar.ts substitutes them into HTML template strings via ${item.preferredName} / ${data.name} / v${data.version} and assigns the result to innerHTML. As a consequence, malicious HTML in either field is parsed and executed when a user opens the marketplace tab. This vulnerability is fixed in 3.7.0.
Title SiYuan: Bazaar marketplace renders unescaped package `name` and `version` metadata, allowing stored XSS and Electron code execution
Weaknesses CWE-116
CWE-79
References
Metrics cvssV3_1

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


Subscriptions

No data.

cve-icon MITRE

Status: PUBLISHED

Assigner: GitHub_M

Published:

Updated: 2026-05-14T18:13:12.889Z

Reserved: 2026-05-12T00:51:29.086Z

Link: CVE-2026-45375

cve-icon Vulnrichment

No data.

cve-icon NVD

Status : Deferred

Published: 2026-05-14T19:16:39.030

Modified: 2026-05-14T21:22:56.313

Link: CVE-2026-45375

cve-icon Redhat

No data.

cve-icon OpenCVE Enrichment

Updated: 2026-05-14T20:45:28Z

Weaknesses