Attack ChainAIDerived
Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain
-
AccessObtain reach to SiYuan import API
-
DeliverySend importStdMd with GLOBALROOT-aliased path
-
ExploitBypass IsSensitivePath denylist normalization
-
ExecutionCopy workspace conf and TLS key to assets
-
ImpactFetch secrets via served /assets
Vulnerability Assessment
| Weakness |
CWE
OWASP Top 10:2025
A01:2025 - Broken Access Control
ASVS 5.0
V5 - File Handling Path canonicalization, traversal prevention
MITRE ATT&CK
2 techniques across 2 tactics: Discovery, Collection The technique list with ATT&CK links and the kill-chain view is part of the Basic plan and up. |
| Exploitation Conditions | Requires a Windows deployment of SiYuan (the \\?\GLOBALROOT\Device\HarddiskVolumeN device-namespace alias is a Windows-only construct) running the kernel in server mode so that data/assets/ is served over HTTP. The attacker must be able to invoke POST /api/import/importStdMd - which in the published reproduction required the instance's API token for access - and must supply a GLOBALROOT-prefixed path (\\?\GLOBALROOT\..., \\.\GLOBALROOT\..., or the //?/ forward-slash form) targeting the workspace conf. Limiting factors: Windows-only applicability; affected versions 3.8.7 through 3.8.8 (the v3.8.7 resolveNamespaceAlias fix is incomplete); and the per-machine HarddiskVolumeN index must be discovered, though this is trivially enumerable (single-byte, ~1..6) and needs no prior knowledge. No non-default configuration beyond running the served kernel is required. |
| Impact | Signals are moderate and partly conflicting. The input scores this CVSS:4.0 AV:N/AC:L/AT:P/PR:H → 5.9 (Medium), while the vendor GHSA advisory scores the identical end-to-end chain CVSS:3.1 AV:N/AC:L/PR:N/UI:N/C:H/I:N/A:N → 7.5 (High); the disagreement is entirely in the privilege metric (PR:H vs PR:N), which must be resolved with the vendor before treating the raw number as authoritative. No EPSS probability and no KEV status are present in the input, and this CVE is NOT listed in CISA KEV, so there is no evidence of active or widespread exploitation. However, a detailed, dynamically-verified reproduction (real Windows 10, v3.8.7-beta.3) is published in the GHSA advisory, so the technical barrier to exploitation is low for anyone who can reach the import API. The vuln.today decision label is 'this_month' (schedule a fix within the month - not act_now/emergency), which fits the profile: real and verified, but gated by Windows-only applicability and the need to invoke an authenticated import endpoint rather than being mass-exploitable against default internet-facing deployments. Net: a genuine confidentiality issue worth patching on a normal cycle, not a drop-everything emergency, with the caveat that the CVSS numbers themselves conflict and should be verified with the vendor. |
| Exploit ScenarioDerived | On a Windows SiYuan instance running in server/kernel mode, a caller able to reach the import API submits POST /api/import/importStdMd with a localPath of the form \\?\GLOBALROOT\Device\HarddiskVolumeN\...\<workspace>\conf, which survives the resolveNamespaceAlias normalization and bypasses the IsSensitivePath denylist. The API copies the workspace conf.json (containing the API token) and the TLS private key (ca-*.key) into data/assets/, which the kernel serves unauthenticated, so the attacker reads them back via GET /assets/. A working end-to-end reproduction is published in the GHSA advisory (verified on v3.8.7-beta.3, Windows 10 22H2). |
Get an e-mail when this CVE is exploited, patched or re-scored. Free account.
Alert meAnalysisAIv1 – Oct 28, 2026
SiYuan 3.8.7 through 3.8.8 on Windows can be induced to copy its workspace secret files - the API token in conf.json and the TLS private key - into the publicly served data/assets/ directory by submitting a GLOBALROOT device-namespace path (\\?\GLOBALROOT\Device\HarddiskVolumeN\...) to POST /api/import/importStdMd. The v3.8.7 fix for the earlier GHSA-6gmc traversal only strips the literal \\?\ and \\.\ prefixes, so the device-namespace spelling survives normalization and matches no IsSensitivePath denylist entry, letting the copy proceed. The vendor advisory documents a verified end-to-end reproduction on Windows 10 22H2, so a public proof-of-concept reference exists (it is not verified as packaged exploit code), while no CISA KEV entry or active-exploitation confirmation is present in the supplied corpus; exploitation is confined to Windows deployments running the kernel in server mode where the attacker can reach the import API, which in the published reproduction required the instance's API token.
RemediationAI
No complete vendor-released patch is identified at time of analysis: the v3.8.7 change (commits 98487d43db and 9ffcc73423, shipped in v3.8.7 for GHSA-6gmc) is incomplete, and running 3.8.7 or 3.8.8 on Windows leaves the GLOBALROOT spelling usable, so upgrading alone does not close this issue - track GHSA-gg3p-r4g8-vxg2 for the fixed build. The advisory's suggested code fix is to extend resolveNamespaceAlias() so GLOBALROOT forms are resolved to the underlying volume path (map Device\HarddiskVolumeN and HarddiskVolumeShadowCopyN to mounted drive letters via QueryDosDevice / GetVolumeNameForVolumeMountPoint and re-run the denylist), or to reject GLOBALROOT/device-namespace prefixes outright at the API and MCP boundaries, with regression cases for \\?\GLOBALROOT\..., \\.\GLOBALROOT\..., //?/GLOBALROOT/..., lowercase harddiskvolumen and HarddiskVolumeShadowCopyN. Until a fixed build is available, the actionable compensating controls are: do not expose the SiYuan kernel's serve mode on Windows to untrusted networks, block or restrict POST /api/import/importStdMd at a reverse proxy (trade-off: legitimate Markdown/local-path import stops working for all clients, and other endpoints guarded only by util.IsSensitivePath remain reachable unless the whole API is restricted), and treat the instance token as compromised-adjacent by inspecting data/assets/ for stray conf-*.json, cert-*.pem or ca-*.key files and, if any are present, rotating the workspace API token and reissuing the TLS certificate and key (trade-off: existing API clients and any certificate pinning must be updated).
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
The flaw is a path-equivalence resolution error (CWE-41) that degrades into path traversal (CWE-22) in SiYuan's kernel, specifically kernel/util/path.go. The v3.8.7 mitigation added resolveNamespaceAlias(), which uses literal strings.HasPrefix checks to strip only \\?\ and \\.\ (plus UNC\ and localhost/<drive>$ admin-share handling) before filepath.Clean, after which isSensitivePath() applies lowercased HasPrefix checks against the workspace conf/temp directories, home dotfiles, credential-style filenames and system paths. Windows device-namespace aliases form a different prefix family: \\?\GLOBALROOT\Device\HarddiskVolumeN\<workspace>\conf, \\.\GLOBALROOT\..., and the forward-slash form //?/GLOBALROOT/... (which filepath.Clean canonicalizes back into the backslash spelling). After the literal strip the remainder looks relative (GLOBALROOT\Device\HarddiskVolume3\...) and matches no denylisted prefix, so the first check misses, the IsSubPath early-exit does not fire, and the ResolveLongestExistingParent() re-check in the IsSensitivePath() wrapper strips the same prefix and misses again - the function returns false and the path is treated as benign. Windows accepts these strings at the CreateFileW layer that the Go kernel itself uses (verified with a 92-byte win.ini read), even though the cmd/.NET layers reject them; the HarddiskVolumeN index varies per machine but is enumerable by trial over roughly 1..6. Because the same check is the sole guard on other endpoints relying on util.IsSensitivePath, the bypass is not limited to the import route. The CPE strings are not present in the supplied data; the Go module is identified as go/siyuan-note/siyuan.
Know when Windows 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:L/AT:P/PR:H/UI:N/VC:H/VI:N/VA:N/SC:N/SI:N/SA:N
Remote API call (AV:N/AC:L) but invoking importStdMd needs the instance's API token, so PR:L not PR:N; impact is secret disclosure only, hence C:H/I:N/A:N.
Primary rating from Vendor (vulncheck).
CVSS VectorVendor: vulncheck
DescriptionCVE.org
SiYuan 3.8.7 through 3.8.8 fails to normalize Windows GLOBALROOT device-namespace aliases, bypassing the IsSensitivePath denylist. Attackers can invoke importStdMd with a GLOBALROOT-prefixed path to copy the API token and TLS private key into the publicly served assets directory.
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
Path traversal exploits occur when applications use user-controlled input to construct file system paths without proper validation.
Unauthenticated remote code execution in SmarterTools SmarterMail lets an attacker upload arbitrary files to any locatio
Windows Win32k fails to properly handle objects in memory, allowing local privilege escalation exploited in the wild in
A privilege escalation vulnerability (CVSS 5.5). Risk factors: actively exploited (KEV-listed), EPSS 94% exploitation pr
Windows Internet Shortcut Files (.url) contain an external control vulnerability (CVE-2025-33053, CVSS 8.8) that enables
Windows SMB contains an improper access control vulnerability (CVE-2025-33073, CVSS 8.8) enabling authenticated attacker
An unrestricted file upload vulnerability exists in MiniWeb HTTP Server <= Build 300 that allows unauthenticated remote
FreeFloat FTP Server contains multiple critical design flaws that allow unauthenticated remote attackers to upload arbit
Serviio Media Server versions 1.4 through 1.8 on Windows contain an unauthenticated command injection in the /rest/actio
Mako Server versions 2.5 and 2.6 contain an unauthenticated OS command injection via the tutorial interface at examples/
React Native Metro Development Server binds to external interfaces by default and contains an OS command injection endpo
Command injection in the Windows Shell lets remote, unauthenticated attackers bypass a Windows security feature and then
External control of file name or path in Windows NTLM allows an unauthorized attacker to perform spoofing over a network
EUVD-2026-112386
GHSA-7372-6g6p-gr33
NVD
CVE.org
Exploit-DB