Skip to main content

SiYuan CVE-2026-54070

| EUVDEUVD-2026-39126 HIGH
Cross-site Scripting (XSS) (CWE-79)
2026-06-24 GitHub_M GHSA-w7cg-whh7-xp28
7.1
CVSS 3.1 · Vendor: GitHub_M
View

Attack ChainAIDerived

Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain

  1. Recon
    Publish malicious Bazaar package with event-handler payload
  2. Delivery
    Administrator opens listing in Settings
  3. Exploit
    Marketplace
  4. Install
    README rendered to innerHTML, handler passes sanitizer
  5. C2
    Admin interaction fires onpointerover/onbeforetoggle
  6. Execute
    Script executes in authenticated SiYuan origin
  7. Impact
    Full workspace takeover

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 the SiYuan instance to be older than 3.7.0 and the victim to be an Administrator who has already accepted the one-time Marketplace trust consent, then opens an attacker-published Bazaar package in Settings → Marketplace and interacts with the listing (e.g., hovers, clicks, or otherwise triggers a pointer/toggle/focusin/animation/transition event) so the injected inline handler fires. Installing the package is NOT required - merely viewing and interacting with the listing is sufficient. Limiting factors: the attacker must get a malicious package published to the Bazaar marketplace, the target must be an authenticated Administrator, and the payload only executes upon the specific user interaction that fires one of the unsanitized event handlers, which is why the CVSS vector marks UI:R and AC:H.

Impact

The provided CVSS 3.1 vector (AV:N/AC:H/PR:N/UI:R/S:U/C:H/I:H/A:L, base 7.1) is internally consistent with the description: network-reachable, but high complexity and required user interaction reflect that an Administrator must first grant one-time marketplace trust consent, then open a malicious package and interact with the listing to trigger an event handler. No EPSS score, SSVC decision, KEV entry, or public POC was supplied, so the real-world exploitation signals are thin: this is a high-severity-by-impact issue (full workspace compromise) gated by meaningful preconditions, not a mass-exploitable remote bug. The high attack complexity and dependence on Administrator interaction with attacker-controlled marketplace content make this a targeted, social-engineering-flavored threat rather than a wormable one. No conflicting signals were found, but the absence of EPSS/KEV/POC data means likelihood cannot be quantified beyond the CVSS qualitative read.

Exploit ScenarioDerived

A malicious author publishes a Bazaar package whose README contains a benign-looking element carrying an inline modern event handler such as onpointerover or onbeforetoggle with a JavaScript payload. An Administrator browsing Settings → Marketplace opens the package listing and moves the pointer over or interacts with the rendered content, firing the handler; the script runs in the authenticated SiYuan origin and can take full control of the workspace. No POC is publicly identified at time of analysis, and the high attack complexity reflects the need for Administrator interaction after marketplace trust consent.

This Week Schedule remediation this week. Why: HIGH severity (CVSS 7.0-8.9).
Patch available 0.2% exploitation probability (EPSS)

Get an e-mail when this CVE is exploited, patched or re-scored. Free account.

Alert me

AnalysisAIv1 – Jun 24, 2026

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.

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.

Affected VersionsENISA

SiYuan < 3.7.0

Affected Packages

go github.com/siyuan-note/siyuan/kernel fix: 0.0.0-20260628153353-2d5d72223df4
euvd siyuan fix: 3.7.0

Source: OSV (Open Source Vulnerabilities)

Affects your stack

Affects 2 packages in go, euvd

Checking this CVE against your own stacks and servers is part of the Basic plan and up.

Technical ContextAI · show details

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.

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

Vendor (GitHub_M) PRIMARY 7.1 HIGH
AV:N/AC:H/PR:N/UI:R/S:U/C:H/I:H/A:L
vuln.today AI 7.1 HIGH

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.

3.1 AV:N/AC:H/PR:N/UI:R/S:U/C:H/I:H/A:L
4.0 AV:N/AC:H/AT:N/PR:N/UI:A/VC:H/VI:H/VA:L/SC:N/SI:N/SA:N
SUSE HIGH

Primary rating from Vendor (GitHub_M).

CVSS VectorVendor: GitHub_M

Attack Vector
Network
Attack Complexity
High
Privileges Required
None
User Interaction
Required
Scope
Unchanged
Confidentiality
High
Integrity
High
Availability
Low

Lifecycle Timeline

1
Patch available
Jun 24, 2026 - 23:03 EUVD

DescriptionCVE.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.

Executive ViewAI

Why It Matters

SiYuan personal knowledge management system before version 3.7.0 contains a stored cross-site scripting vulnerability that allows malicious third-party Bazaar package authors to execute arbitrary code in administrators' workspaces. Although no public exploit has been identified at time of analysis, successful exploitation would grant complete control of the affected workspace, potentially compromising sensitive data and organizational security.

Business Impact: High
Compensating Controls

No vendor-released patch identified at time of analysis. Interim mitigations: (1) Disable or restrict Bazaar package installation to pre-approved packages only; (2) Require security review of package source code before installation; (3) Implement Content Security Policy headers at the application or reverse proxy layer to restrict inline script execution; (4) Limit SiYuan administrator accounts to essential personnel only (principle of least privilege); (5) Enable comprehensive audit logging of package installations and workspace modifications; (6) Establish change management process for immediate deployment of SiYuan 3.7.0 when released.

Threat Intelligence Overview

EPSS Score
0.2%
Top 92% exploitable
Prevalence
Low
niche self-hosted open-source personal knowledge management app
Threat Intel
1
1 source
Exploit
POC
Public exploit code exists
Data Quality
7 sources
Confidence: High
EUVD NVD CVE.org EPSS Vulnrichment GHSA Vendor GitHub

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.

SignalValue
Severity HIGH
CISA KEV No
Public POC Yes
EPSS 0.2%
Patch available Yes
Active threat No
Deciding rule
HIGH severity (CVSS 7.0-8.9)
What every action level means
Emergency Immediate action required. Criteria: CRITICAL + in CISA KEV (actively exploited) without patch, OR CRITICAL + EPSS > 30% without patch, OR CRITICAL + active threat signals without patch.
Act Now Prioritize within 24-48h. Criteria: in KEV with patch available, OR CRITICAL + public POC, OR HIGH + EPSS > 10%, OR CRITICAL + active threat, OR any CRITICAL severity.
This Week Schedule remediation this week. Criteria: HIGH severity (CVSS 7.0-8.9). Patch within normal change window.
This Month Plan within 30 days. Criteria: MEDIUM severity (CVSS 4.0-6.9), lower exploitation probability. Include in regular patch cycle.
Monitor Track and reassess. Criteria: LOW severity (CVSS 0.1-3.9), minimal exploitation risk. No immediate action needed.

SSVC AssessmentENISA

SSVC Decision
Scheduled
Exploitation
None
System Exposure· derived
Open
Automatable
No
Human Impact
High
Technical Impact
Total

Priority Score

56
Low Medium High Critical
KEV: 0
EPSS: 0
CVSS: +36
PoC: +20
Weaponized: 0
Threat intel: 0
Gov advisory: 0

Attack Technique

Cross-Site Scripting occurs when an application accepts untrusted data and sends it to a web browser without proper validation or encoding.

More in Siyuan

View all
CVE-2026-69083 CRITICAL POC
9.9 Aug 03

SQL injection in SiYuan's fullTextSearchAssetContent endpoint lets unauthenticated attackers and holders of publish Role

CVE-2026-54067 CRITICAL POC
9.9 Jun 24

Stored cross-site scripting in SiYuan personal knowledge management before 3.7.0 lets an attacker with write access to a

CVE-2026-69084 CRITICAL POC
9.9 Aug 03

SQL injection in SiYuan personal knowledge management (versions <= v3.7.2) lets attackers pass arbitrary SQL statements

CVE-2026-54158 CRITICAL POC
9.9 Jun 24

Stored cross-site scripting in SiYuan's attribute-view (database) cell renderer, affecting all versions prior to 3.7.0,

CVE-2026-69085 CRITICAL POC
9.9 Aug 03

SQL injection in SiYuan personal knowledge-management software (all versions before v3.7.3) lets attackers inject arbitr

CVE-2024-53507 CRITICAL POC
9.8 Nov 29

A SQL injection vulnerability was discovered in Siyuan 3.1.11 in /getHistoryItems. Rated critical severity (CVSS 9.8), t

CVE-2024-53506 CRITICAL POC
9.8 Nov 29

A SQL injection vulnerability has been identified in Siyuan 3.1.11 via the ids array parameter in /batchGetBlockAttrs. R

CVE-2024-53505 CRITICAL POC
9.8 Nov 29

A SQL injection vulnerability has been identified in Siyuan 3.1.11 via the id parameter at /getAssetContent. Rated criti

CVE-2024-53504 CRITICAL POC
9.8 Nov 29

A SQL injection vulnerability has been identified in Siyuan 3.1.11 via the notebook parameter in /searchHistory. Rated c

CVE-2026-23852 CRITICAL POC
9.6 Jan 19

SiYuan personal knowledge management system prior to 3.5.4 has a stored XSS vulnerability (CVSS 9.6) that allows code ex

CVE-2026-56397 CRITICAL POC
9.4 Jun 21

Remote code execution in SiYuan note-taking application (before v3.6.1) allows any malicious Bazaar marketplace package

CVE-2026-54069 CRITICAL POC
9.2 Jun 24

Origin-validation bypass in SiYuan Note (open-source personal knowledge management) before 3.7.0 lets any installed Chro

Vendor 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

This site uses cookies essential for authentication and security. No tracking or analytics cookies are used. Privacy Policy