Severity by source
CVSS:4.0/AV:N/AC:L/AT:N/PR:L/UI:N/VC:H/VI:N/VA:N/SC:N/SI:N/SA:N/E:X/CR:X/IR:X/AR:X/MAV:X/MAC:X/MAT:X/MPR:X/MUI:X/MVC:X/MVI:X/MVA:X/MSC:X/MSI:X/MSA:X/S:X/AU:X/R:X/V:X/RE:X/U:X
Network-reachable endpoint requiring a low-privileged authenticated session (PR:L), no user interaction, low complexity, and read-only arbitrary file disclosure so C:H with I:N/A:N.
Primary rating from Vendor (vulncheck).
CVSS VectorVendor: vulncheck
Lifecycle Timeline
4DescriptionCVE.org
SiYuan before v3.7.2 contains a path traversal vulnerability in the /export/temp/ short-circuit branch of the serveExport handler (kernel/server/serve.go). Unlike the main export branch, this branch joins the raw, percent-decoded request path with util.TempDir and serves the file without the IsSubPath or IsSensitivePath checks added in the earlier export-disclosure hardening (GHSA-6865-qjcf-286f). An authenticated attacker can send percent-encoded traversal sequences (e.g. /export/temp/%2e%2e/.../etc/passwd, where %2e%2e is decoded to '..') to read arbitrary files outside TempDir, including /etc/passwd, SSH keys (~/.ssh/*), and SiYuan workspace *.db and *.log files, bypassing the sensitive-file protection.
AnalysisAI
Arbitrary file read in SiYuan (an open-source personal knowledge-management / note-taking application) before v3.7.2 allows an authenticated attacker to retrieve files anywhere on the host by abusing the /export/temp/ short-circuit branch of the serveExport handler. Because this branch joins the raw, percent-decoded request path to the temp directory without the IsSubPath or IsSensitivePath guards used elsewhere, percent-encoded '..' sequences escape TempDir and expose /etc/passwd, SSH private keys, and SiYuan's own workspace *.db and *.log files. No public exploit identified at time of analysis, though the advisory documents a concrete payload; EPSS and CISA KEV data are not provided in the input.
Technical ContextAI
SiYuan is a Go-based, self-hosted knowledge-base/notebook application whose kernel HTTP server (kernel/server/serve.go) exposes an /export/ route for downloading generated export artifacts. This is a classic CWE-22 path traversal: the vulnerable /export/temp/ short-circuit branch calls util.TempDir joined with the raw, already-percent-decoded request path and serves it directly. Unlike the main export branch - which was hardened in the earlier export-disclosure fix (GHSA-6865-qjcf-286f) - this branch omitted both gulu.File.IsSubPath (which confines the resolved path under the export base directory) and IsSensitivePath (which blocks sensitive files). The patch (commit bb481e1290c4) adds the missing IsSubPath check returning 401 on escape, and simultaneously extends IsSensitivePath in kernel/util/path.go to treat any *.db or *.log path as sensitive, closing both the traversal and the workspace-file disclosure.
RemediationAI
Upgrade to SiYuan v3.7.2 or later, which is the vendor-released patch (commit bb481e1290c4) that adds the missing IsSubPath confinement to the /export/temp/ branch and extends IsSensitivePath to cover *.db and *.log files; consult GHSA-gw25-m53r-qh88 for details. If immediate upgrade is not possible, restrict network reachability of the SiYuan kernel by binding it to localhost only and placing it behind an authenticating reverse proxy or firewall so untrusted clients cannot reach /export/temp/ (trade-off: breaks legitimate remote/multi-device access). Ensure a strong kernel access-authorization code is set to raise the bar for the required authenticated session, and, where the deployment permits, block or filter requests to the /export/temp/ path at the proxy (trade-off: may interrupt normal export downloads). Running the kernel under a low-privilege OS account limits which files a successful traversal can read but does not close the vulnerability.
Same weakness CWE-22 – Path Traversal
View allSame technique Path Traversal
View allShare
External POC / Exploit Code
Leaving vuln.today
EUVD-2026-48243
GHSA-2vq9-c755-fq2h