Attack ChainAIDerived
Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain
-
AccessPublish malicious SiYuan kernel plugin
-
DeliveryVictim installs and loads plugin
-
ExploitPlugin returns absolute ResponseFile.Path outside workspace
-
ExecutionKernel serves file via gin Context.File
-
ImpactExfiltrate API token and conf.json
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 | Exploitation requires the victim to install and load an attacker-supplied malicious SiYuan kernel plugin; there is no exploitation against a default install without such a plugin. Given a malicious plugin, its private HTTP server sets the plugin handler's ResponseFile.Path to an absolute path pointing outside the SiYuan workspace, which the unpatched kernel passes directly to gin's Context.File/FileAttachment without workspace-boundary validation, disclosing any file readable by the SiYuan process (notably the API token and conf.json). The key limiting factor is the required user action of trusting and installing an untrusted third-party plugin; the patched version rejects paths that resolve outside util.WorkspaceDir and returns 404 to prevent probing. |
| Impact | The CVSS 4.0 base score of 6.9 (Medium) and the PR:N (no privileges) metric superficially suggest an unauthenticated network-exploitable flaw, but this is misleading: the vector sets UI:A (active user interaction), reflecting the description's hard precondition that an attacker must get a victim to install and run a malicious kernel plugin. Technical impact is high and narrow - VC:H with VI:N/VA:N means confidentiality-only arbitrary file read (including the SiYuan API token and conf.json, which can enable subsequent full-API compromise), with no integrity or availability impact. No EPSS score, KEV listing, or public POC was provided in the intelligence set, so there is no evidence of active or automatable exploitation; the flaw is not mass-scannable because it requires the plugin-installation step rather than a direct unauthenticated request. Net assessment: a genuinely impactful bug for users who install untrusted third-party plugins, but a lower real-world priority than the network vector alone implies - realistic risk is gated by social engineering, not by raw CVSS. |
| Exploit ScenarioDerived | An attacker publishes a seemingly legitimate SiYuan kernel plugin and convinces a target to install it. Once loaded, the plugin's private HTTP server returns a ResponseFile.Path pointing to an absolute path outside the workspace (e.g. the API token file or conf.json), which the kernel serves verbatim via gin's Context.File, letting the attacker-controlled plugin read and exfiltrate any file readable by the SiYuan process. No public exploit identified at time of analysis. |
Get an e-mail when this CVE is exploited, patched or re-scored. Free account.
Alert meAnalysisAIv1 – Oct 12, 2026
Absolute path traversal in the SiYuan kernel's private plugin HTTP server (SiYuan 3.7.0 through 3.8.5) allows an attacker-supplied kernel plugin to read any file readable by the SiYuan process, including the API token and conf.json, by returning an absolute path in its handler's ResponseFile.Path that the kernel passes unvalidated to gin's Context.File. The plugin's private endpoint requires no authentication or privileges to reach (PR:N), but the CVSS 4.0 vector carries UI:A and our assessment confirms the decisive precondition is user action: a victim must install and load a malicious third-party kernel plugin, so a default installation is not exposed on its own. No public exploit identified at time of analysis and the issue is not in CISA KEV; vendor-released patch is SiYuan 3.8.6, which rejects any path resolving outside the workspace.
RemediationAI
Upgrade to SiYuan 3.8.6 or later, which is the vendor-released patch (upstream fix commit c6494375ea40ee973f430f0e85d50f1862a30d81); the patched code confines plugin file responses to util.WorkspaceDir, resolves symlinks and junctions before checking containment, and returns 404 for both out-of-workspace and missing files so plugins cannot probe for external paths. Until the upgrade can be applied, the effective compensating control is supply-chain discipline: do not install or enable third-party kernel plugins from untrusted sources, and review plugin source for kernel plugin handlers that set ResponseFile.Path or otherwise let the plugin choose a server-side file path, since the vulnerability cannot be triggered against a default install without such a plugin. Because the exploited server is local to the kernel, reducing exposure also helps but has trade-offs: bind the SiYuan kernel HTTP service to localhost or block remote access to the plugin private routes at the reverse proxy or firewall, accepting that this breaks legitimate remote/browser access to SiYuan and to plugins that rely on their private endpoints. If exploitation is suspected, treat the workspace's API token and conf.json as compromised, rotate the API token and any secrets stored in conf.json, and review logs for the patched build's warning message "Rejected file response path ... outside the workspace". Advisory references: https://github.com/siyuan-note/siyuan/security/advisories/GHSA-phmw-4rgv-r4xv, the fix commit at https://github.com/siyuan-note/siyuan/commit/c6494375ea40ee973f430f0e85d50f1862a30d81, and https://www.vulncheck.com/advisories/siyuan-3.7.0-before-3.8.6-arbitrary-file-read-via-plugin-responsefile-path.
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 personal knowledge-management application whose kernel exposes an HTTP API built on the gin framework. Alongside the administrator API, the kernel runs a private HTTP service for kernel plugins, routed roughly as /plugin/private/:name/*path, whose handler returns an HttpResponse containing a ResponseFile struct with a Path and Name field; the documented example value is "/data/plugins/<plugin-name>/app/index.html". In vulnerable builds the path from response.Body.File.Path was handed directly to gin's Context.File (and Context.FileAttachment for downloads), with no check that it stayed inside the application workspace, so a plugin could supply an absolute path such as /etc/passwd or the workspace's own conf.json and have the kernel stream the file back. This is a classic CWE-22 path traversal rooted in missing canonicalization and boundary enforcement on a caller-controlled filesystem path. The fix commit c6494375ea40ee973f430f0e85d50f1862a30d81 adds pluginServiceFileAbsPath, which trims and cleans the supplied path, defines an errPluginServiceFilePathOutsideWorkspace sentinel, accepts workspace-absolute or workspace-relative paths only when util.IsAbsPathInWorkspace passes after mounting candidates against util.WorkspaceDir, and additionally resolves symlinks and directory junctions via model.ResolveAssetPathWithMissingLeaf before confirming containment with gulu.File.IsSubPath over util.NormalizeAndResolve paths. Crucially, out-of-workspace and nonexistent files now both produce a 404 so plugins cannot use status-code differences to probe for files outside the workspace. The commit comments explicitly note the parity requirement with the administrator endpoint /api/file/getFile, which relies on the workspace boundary and grants no exemption to browser-originated plugin requests (referencing prior advisory GHSA-g7gf-v79m-jwrm). The CPE cpe:2.3:a:siyuan-note:siyuan:*:*:*:*:*:*:*:* reflects that all tracked SiYuan releases fall in the affected range reported by VulnCheck.
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:L/AT:N/PR:N/UI:A/VC:H/VI:N/VA:N/SC:N/SI:N/SA:N
Network-reachable plugin server with no auth (PR:N) but requires the user to install a malicious plugin (UI:R); confidentiality-only arbitrary file read (C:H, I/A:N), no scope change.
Primary rating from Vendor (VulnCheck).
CVSS VectorVendor: VulnCheck
DescriptionCVE.org
SiYuan v3.7.0 before v3.8.6 contains an absolute path traversal vulnerability in the kernel's private plugin HTTP server, which passes a kernel plugin handler's ResponseFile.Path to gin's Context.File without validation. Attackers supplying a malicious kernel plugin can return an absolute path to read any file readable by the SiYuan process, including the API token and conf.json.
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.
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-97611
GHSA-g3cr-c99q-2hfc
NVD
CVE.org
EPSS
Exploit-DB