Attack ChainAIDerived
Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain
-
AccessSend crafted check-auth javascript: link to victim
-
DeliveryVictim opens page and completes valid login
-
ExploitUnvalidated 'to' assigned to window.location.href
-
Executionjavascript: URI executes in kernel origin
-
ImpactInvoke same-origin kernel APIs to read or modify workspace content and settings
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 targets the unauthenticated /check-auth page of the SiYuan kernel (default port 6806), which reads the 'to' query parameter (app/stage/auth.html) and assigns it to window.location.href on login success without scheme validation. Concrete prerequisites: the attacker must deliver a crafted link containing a javascript: URI in 'to' to the victim, AND the victim must (a) open that link and (b) complete a valid login by entering their access auth code and submitting on that page - the script only runs after loginAuth returns code 0. Limiting factors that reduce realistic risk: mandatory two-step user interaction (open plus authenticate), network reachability to the victim's kernel, and the instance having access auth enabled; full read/modify of workspace content and kernel settings requires the authenticating victim to be an administrator. This is reflected, not stored, so no persistence exists between sessions. |
| Impact | The input CVSS 4.0 base score is 7.6 (High) with vector AV:N/AC:H/AT:P/PR:N/UI:P/VC:H/VI:H/VA:N. PR:N reflects that the /check-auth page is served without authentication, so the attacker themselves needs no credentials; however AC:H, AT:P and UI:P together signal substantial constraints: the attack only succeeds if the victim opens the attacker-crafted link AND completes a valid login on that page. This is a reflected (non-stored) XSS, so there is no persistent trigger and each exploitation depends on social engineering. No EPSS score and no CISA KEV status were provided in the input, so widespread-exploitation probability cannot be quantified from the data; absence of KEV means there is no evidence of active exploitation. A public PoC reference exists in the GHSA advisory and was verified end to end by the reporter on v3.8.6, which raises practical feasibility above purely theoretical. The vuln.today decision label is 'this_week', consistent with a genuine but user-interaction-gated issue rather than an emergency. Net: this is a real, patch-this-week priority for exposed SiYuan instances, but the heavy user-interaction precondition (open link plus authenticate) keeps real-world mass-exploitation risk below what the High score alone might suggest. |
| Exploit ScenarioDerived | An attacker sends a victim a phishing link pointing at the victim's SiYuan kernel, e.g. http://<host>:6806/check-auth?to=javascript:<payload>, where the to parameter carries a javascript: URI. When the victim opens the unauthenticated /check-auth page and enters their valid access auth code, the successful-login handler assigns the unvalidated to value to window.location.href and the javascript: URI executes in the kernel origin under the victim's authenticated session, able to call same-origin kernel APIs. A PoC reference exists in the GHSA advisory and was verified end to end by the reporter on SiYuan v3.8.6; it is not packaged as standalone working exploit code. |
Get an e-mail when this CVE is exploited, patched or re-scored. Free account.
Alert meAnalysisAIv1 – Oct 25, 2026
Reflected cross-site scripting in the SiYuan knowledge-management kernel (versions 2.9.0 through 3.8.6) lets a crafted /check-auth?to= link inject a javascript: URI that executes in the authenticated kernel origin once the victim logs in, after which the injected script can call same-origin kernel APIs to read or modify workspace content and settings. Exploitation requires a two-step user interaction: the victim must open the attacker-supplied link and then enter a valid access auth code on that page, so the CVSS 4.0 score is 7.6 (High) with AC:H/UI:P; the assessed CVSS 3.1 vector is AV:N/AC:H/PR:N/UI:R/S:U/C:H/I:H/A:N. The issue is a reflected flaw with no persistence, was verified end to end by the reporter on v3.8.6, and proof-of-concept details are published in the vendor GHSA advisory; it is not listed in CISA KEV, and no EPSS score was supplied with the intelligence.
RemediationAI
Vendor-released patch: SiYuan v3.8.7 fixes the issue - upgrade any instance running 2.9.0 through 3.8.6 to v3.8.7 or later, following the vendor advisory at https://github.com/siyuan-note/siyuan/security/advisories/GHSA-fmj3-xc2f-6w4w. Until the upgrade is applied, the practical compensating controls are to refuse to open /check-auth links that carry a 'to' parameter from untrusted sources (the payload only fires when the victim authenticates on the crafted page) and to restrict network access to the kernel port (default 6806) to trusted hosts or a loopback/VPN boundary so an attacker cannot deliver a reachable crafted link - the trade-off is that this also blocks legitimate remote access to the SiYuan web UI and API. Disabling access authentication would remove the login-completion precondition but is not an acceptable mitigation because it exposes the kernel to unauthenticated use. The issue is reflected rather than stored, so no cleanup of workspace content is required after a suspected attempt; rotating the access auth code and reviewing kernel logs for /check-auth requests with javascript: in the 'to' parameter is advisable where compromise is suspected.
Affected VersionsENISA
Affected Packages
Source: OSV (Open Source Vulnerabilities)
Affects your stack
Affects 1 package in euvd
Checking this CVE against your own stacks and servers is part of the Basic plan and up.
Technical ContextAI · show details
SiYuan is a Go-based local/self-hosted knowledge kernel that serves a browser UI on port 6806 by default, with authentication handled by an access auth code. The static page app/stage/auth.html reads the post-login destination with toPath = url.searchParams.get("to") || "/" and later assigns that value directly to window.location.href in two sinks: the success branch of the fetch("/api/system/loginAuth") handler (response.code == 0) and the onmessage handler for the loginAuth WebSocket push. Because the /check-auth route in kernel/server/serve.go is registered without an authentication check, the unauthenticated page is reachable by anyone who can route to the kernel, and any URI scheme in 'to' - including javascript: - survives to the assignment. The weakness class is CWE-79 (improper neutralization of input during web page generation), here a DOM-based/reflected variant caused by missing scheme allow-listing at a navigation sink rather than by stored content injection; source-level dating shows the sink absent in v2.8.0, introduced in v2.9.0 (line 509) and carried through v3.8.6, where the refactor added the second WebSocket-driven sink. Unlike earlier SiYuan XSS advisories, which concern stored XSS in content renderers, this flaw lives entirely in the authentication page and requires no stored content or renderer injection. It is reflected only, so nothing persists between sessions.
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
CVSS:4.0/AV:N/AC:H/AT:P/PR:N/UI:P/VC:H/VI:H/VA:N/SC:N/SI:N/SA:N
Attacker needs no auth (PR:N) against the public /check-auth page, but success requires the victim to open the link and complete login, so AC:H and UI:R; high read/modify impact gives C:H/I:H, A:N.
Primary rating from Vendor (VulnCheck).
CVSS VectorVendor: VulnCheck
Lifecycle Timeline
2DescriptionCVE.org
SiYuan from 2.9.0 before 3.8.7 contains a cross-site scripting vulnerability in the unauthenticated /check-auth page that assigns the to parameter to window.location.href without scheme validation. Attackers can send a crafted link with a javascript: URI that executes after victim login, invoking kernel APIs to read or modify workspace content and settings.
Technical POC Analysis
CWE-79, reflected cross-site scripting, in the SiYuan kernel's login page.
Full technical POC analysis - root cause, step-by-step exploitation and patch breakdown - is part of the Pro and Business plans.
Latest POC
1 public PoC link from nuclei
Sign in to open the public PoC links collected for this CVE.
Executive ViewAI
A reflected cross-site scripting vulnerability in SiYuan knowledge-management kernel versions 2.9.0 through 3.8.6 enables attackers to execute malicious JavaScript within an authenticated user's workspace session. This threatens the confidentiality and integrity of sensitive organizational knowledge, affecting users and potentially exposing intellectual property or credentials. Leadership should care because exploitation, while requiring user interaction, could lead to unauthorized access and modification of critical business information.
No vendor-released patch identified at time of analysis; interim mitigations include blocking malicious link patterns via WAF, user awareness training, and network segmentation.
Threat Model
5 threats: Tampering, Information Disclosure, Elevation of Privilege and 2 more
5-step attack chain with trust boundaries and controls
Full threat model - attack chain, trust boundaries, controls per stage and evidence - is part of the Pro and Business plans.
Threat Intelligence Overview
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.
What every action level means
SSVC AssessmentENISA
Priority Score
Attack Technique
Cross-Site Scripting occurs when an application accepts untrusted data and sends it to a web browser without proper validation or encoding.
SQL injection in SiYuan's fullTextSearchAssetContent endpoint lets unauthenticated attackers and holders of publish Role
Stored cross-site scripting in SiYuan personal knowledge management before 3.7.0 lets an attacker with write access to a
SQL injection in SiYuan personal knowledge management (versions <= v3.7.2) lets attackers pass arbitrary SQL statements
Stored cross-site scripting in SiYuan's attribute-view (database) cell renderer, affecting all versions prior to 3.7.0,
SQL injection in SiYuan personal knowledge-management software (all versions before v3.7.3) lets attackers inject arbitr
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
Remote code execution in SiYuan note-taking application (before v3.6.1) allows any malicious Bazaar marketplace package
Origin-validation bypass in SiYuan Note (open-source personal knowledge management) before 3.7.0 lets any installed Chro
EUVD-2026-109428
GHSA-jvrf-pm5c-jgr4
NVD
CVE.org
EPSS
Vulnrichment
Exploit-DB