Severity by source
AV:N/AC:H/PR:N/UI:R/S:U/C:H/I:H/A:L
Attacker (package author) needs no privileges on the target (PR:N), but exploitation requires an Administrator to grant marketplace trust and interact with the listing (UI:R, AC:H); script in the origin yields high C/I and limited A.
Primary rating from Vendor (GitHub_M).
CVSS VectorVendor: GitHub_M
Lifecycle Timeline
2DescriptionCVE.org
SiYuan is an open-source personal knowledge management system. Prior to 3.7.0, renderPackageREADME in kernel/bazaar/readme.go renders a Bazaar package README from Markdown to HTML with the lute engine and SetSanitize(true). The lute sanitizer is an event-handler blocklist: allowAttr rejects only attribute names present in a fixed eventAttrs map copied from the w3schools legacy handler list. That map omits modern event handlers. onpointerover, onpointerdown, onauxclick, onbeforetoggle, onfocusin, onanimationstart, and ontransitionend are not in the list, so the sanitizer passes them through verbatim on any tag. The frontend assigns the rendered HTML to mdElement.innerHTML in app/src/config/bazaar.ts with no client-side DOMPurify on this path, into a normal element in the main document (no iframe, no sandbox). The kernel sends no Content-Security-Policy, X-Frame-Options, or X-Content-Type-Options header on any response, so an inline handler runs when its event fires. The README is rendered when an Administrator opens a package in Settings → Marketplace, after the one-time marketplace trust consent. Install is not required. Result: a third-party Bazaar package author runs JavaScript in the Administrator's authenticated SiYuan origin when the Administrator views and interacts with the package listing, and gains full control of the workspace. This vulnerability is fixed in 3.7.0.
AnalysisAI
Stored cross-site scripting in SiYuan personal knowledge management system before 3.7.0 allows a third-party Bazaar package author to execute JavaScript in an Administrator's authenticated workspace origin. The lute sanitizer used by renderPackageREADME relies on a stale event-handler blocklist that omits modern DOM event attributes (onpointerover, onpointerdown, onauxclick, onbeforetoggle, onfocusin, onanimationstart, ontransitionend), and the rendered README HTML is injected via innerHTML with no client-side DOMPurify and no CSP/X-Frame-Options/X-Content-Type-Options headers. There is no public exploit identified at time of analysis and it is not listed in CISA KEV, but successful exploitation yields full control of the victim's workspace.
Technical ContextAI
The flaw lives in kernel/bazaar/readme.go, where Bazaar marketplace package README files are converted from Markdown to HTML using the lute engine with SetSanitize(true). lute's sanitizer is a blocklist (CWE-79, Improper Neutralization of Input During Web Page Generation) rather than an allowlist: its allowAttr routine rejects only attribute names found in a fixed eventAttrs map copied from a legacy w3schools handler list. Because that map predates pointer, toggle, focusin, animation, and transition event handlers, those on* attributes survive sanitization on any HTML tag. The cleaned HTML is then assigned to mdElement.innerHTML in app/src/config/bazaar.ts inside the main document (not an iframe or sandbox), and the kernel emits no Content-Security-Policy, X-Frame-Options, or X-Content-Type-Options headers, so any inline handler executes in the SiYuan origin when its event fires. The affected component per CPE is cpe:2.3:a:siyuan-note:siyuan, all versions prior to 3.7.0.
RemediationAI
Vendor-released patch: 3.7.0 - upgrade SiYuan to 3.7.0 or later, which fixes the renderPackageREADME sanitization gap, as documented in the advisory at https://github.com/siyuan-note/siyuan/security/advisories/GHSA-w7cg-whh7-xp28. Until upgrading, do not grant or revoke the one-time Marketplace trust consent and avoid opening or interacting with untrusted Bazaar package listings in Settings → Marketplace, since merely viewing a malicious package (no install required) triggers the issue; this trades away marketplace browsing convenience but eliminates the attack surface. As a deployment-level compensating control, front the SiYuan kernel with a reverse proxy that injects a restrictive Content-Security-Policy (and X-Content-Type-Options: nosniff / X-Frame-Options) to constrain inline script execution - note this may break legitimate SiYuan UI behaviors that rely on inline handlers and should be tested before rollout. Restrict network access to the kernel to trusted local users only.
SQL injection in SiYuan personal knowledge management (versions <= v3.7.2) lets attackers pass arbitrary SQL statements
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
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
SQL injection in SiYuan prior to version 3.6.0 allows any authenticated user, including those with read-only access, to
Cross-site scripting (XSS) in SiYuan personal knowledge management system versions 3.6.0-3.6.1 allows remote attackers t
Same weakness CWE-79 – Cross-site Scripting (XSS)
View allVendor StatusVendor
SUSE
Severity: Important| 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 |
Share
External POC / Exploit Code
Leaving vuln.today
EUVD-2026-39126
GHSA-w7cg-whh7-xp28