Skip to main content

SiYuan CVE-2026-118680

| EUVDEUVD-2026-112386 MEDIUM
Path Traversal (CWE-22)
2026-10-28 disclosure@vulncheck.com GHSA-7372-6g6p-gr33
5.9
CVSS 4.0 · Vendor: vulncheck
View

Attack ChainAIDerived

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

  1. Access
    Obtain reach to SiYuan import API
  2. Delivery
    Send importStdMd with GLOBALROOT-aliased path
  3. Exploit
    Bypass IsSensitivePath denylist normalization
  4. Execution
    Copy workspace conf and TLS key to assets
  5. Impact
    Fetch 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).

This Month Plan within 30 days. Why: MEDIUM severity (CVSS 4.0-6.9).
No patch listed yet

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

Alert me

AnalysisAIv1 – 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

SiYuan 3.8.7 ≤3.8.8

Affected Packages

euvd siyuan no fix

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

Vendor (vulncheck) PRIMARY 5.9 MEDIUM
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
vuln.today AI 6.5 MEDIUM

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.

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

Primary rating from Vendor (vulncheck).

CVSS VectorVendor: vulncheck

Attack Vector
Network
Attack Complexity
Low
Attack Requirements
Present
Privileges Required
High
User Interaction
None
Vulnerable system: Confidentiality
High
Vulnerable system: Integrity
None
Vulnerable system: Availability
None
Subsequent system: Confidentiality
None
Subsequent system: Integrity
None
Subsequent system: Availability
None

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

Prevalence
Low
popular open-source note app, chiefly individual self-hosters; Windows-only here
Social Media
1
Sightings
Data Quality
3 sources
Confidence: Low

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 MEDIUM
CISA KEV No
Public POC No
EPSS N/A
Patch available No
Active threat No
Deciding rule
MEDIUM severity (CVSS 4.0-6.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· derived
Scheduled
Exploitation· derived
None
System Exposure· derived
Open
Automatable· derived
No
Human Impact· derived
Medium

Priority Score

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

Attack Technique

Path traversal exploits occur when applications use user-controlled input to construct file system paths without proper validation.

CVE-2025-52691 CRITICAL POC
10.0 Dec 29

Unauthenticated remote code execution in SmarterTools SmarterMail lets an attacker upload arbitrary files to any locatio

CVE-2019-0803 HIGH POC
7.8 Apr 09

Windows Win32k fails to properly handle objects in memory, allowing local privilege escalation exploited in the wild in

CVE-2020-1472 MEDIUM POC
5.5 Aug 17

A privilege escalation vulnerability (CVSS 5.5). Risk factors: actively exploited (KEV-listed), EPSS 94% exploitation pr

CVE-2025-33053 HIGH POC
8.8 Jun 10

Windows Internet Shortcut Files (.url) contain an external control vulnerability (CVE-2025-33053, CVSS 8.8) that enables

CVE-2025-33073 HIGH POC
8.8 Jun 10

Windows SMB contains an improper access control vulnerability (CVE-2025-33073, CVSS 8.8) enabling authenticated attacker

CVE-2013-10047 CRITICAL POC
9.3 Aug 01

An unrestricted file upload vulnerability exists in MiniWeb HTTP Server <= Build 300 that allows unauthenticated remote

CVE-2012-10030 CRITICAL POC
9.3 Aug 05

FreeFloat FTP Server contains multiple critical design flaws that allow unauthenticated remote attackers to upload arbit

CVE-2025-34101 CRITICAL POC
9.3 Jul 10

Serviio Media Server versions 1.4 through 1.8 on Windows contain an unauthenticated command injection in the /rest/actio

CVE-2025-34095 CRITICAL POC
9.3 Jul 10

Mako Server versions 2.5 and 2.6 contain an unauthenticated OS command injection via the tutorial interface at examples/

CVE-2025-11953 CRITICAL POC
9.8 Nov 03

React Native Metro Development Server binds to external interfaces by default and contains an OS command injection endpo

CVE-2026-96951 HIGH POC
8.8 Oct 13

Command injection in the Windows Shell lets remote, unauthenticated attackers bypass a Windows security feature and then

CVE-2025-24054 MEDIUM POC
6.5 Mar 11

External control of file name or path in Windows NTLM allows an unauthorized attacker to perform spoofing over a network

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