Attack ChainAIDerived
Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain
-
AccessAuthenticate as SiYuan admin or hijack MCP/Agent session
-
DeliveryIssue recursive file.grep/copy/unzip on permitted root
-
ExploitGuard skips descendant path re-check
-
ExecutionRead TLS keys/config or overwrite protected files
-
ImpactConfidentiality/integrity compromise of workspace
Vulnerability Assessment
| Weakness |
CWE
OWASP Top 10:2025
A01:2025 - Broken Access Control
ASVS 5.0
V8 - Authorization Authorization logic validation
MITRE ATT&CK
1 technique across 1 tactic: Privilege Escalation The technique list with ATT&CK links and the kill-chain view is part of the Basic plan and up. |
| Exploitation Conditions | Requires an authenticated SiYuan administrator (PR:H) operating versions 3.8.0 through 3.8.3 with the MCP file tool reachable either via the in-app Agent or an external MCP server. The core defect: util.IsForbiddenAbsPath() is checked only against the allowed root of a recursive operation, not against each resolved descendant, so file.grep, file.copy, and unzip reach protected non-hidden descendants (conf/conf.json, TLS keys, data/snippets/conf.json, data/templates/, data/.siyuan/publishAccess.json, notebook .siyuan internals, kernel log). Limiting factors: administrative authentication is mandatory; file.copy-then-read and unzip require the actor to choose lexically contained target/member names; only file.grep runs without a confirmation card. The practical risk amplifier is agentic/prompt-injection abuse, since file.grep is classified as a safe action and confirmation cards for copy/unzip hide the real descendant paths. Fixed in 3.8.4. |
| Impact | The vendor CVSS 4.0 vector (CVSS:4.0/AV:N/AC:L/AT:N/PR:H/UI:N/VC:H/VI:H/VA:N) scores 8.5, but the PR:H requirement materially constrains real-world risk: exploitation requires an already-authenticated administrator, and SiYuan is a single-user, self-hosted personal knowledge tool where the admin is typically the sole operator. The more credible threat is not privilege escalation by a low-privileged user but rather agentic abuse - prompt injection or a malicious MCP client steering the in-app Agent to invoke file.grep/file.copy/unzip against protected descendants, made stealthy by the fact that file.grep is globally classified as 'safe' (no per-call confirmation) and the confirmation cards for file.copy/unzip display only the allowed root, hiding the actual descendant targets. EPSS, CISA KEV, and public POC signals are all absent, indicating no evidence of active or automated exploitation; this is a genuine authorization-guard defect rather than a mass-exploited flaw. CWE-863 (Incorrect Authorization) is accurate - the sensitive-path denylist is simply not re-applied to each resolved descendant, an explicitly incomplete fix for prior GHSA-c8r8-95hg-mp34. Priority is moderate: real confidentiality/integrity exposure of TLS keys, config, and templates, but gated behind admin authority. |
| Exploit ScenarioDerived | An authenticated SiYuan administrator - or an LLM agent driven by injected instructions through the in-app Agent or an external MCP server - issues a recursive file.grep whose allowed root passes the guard but whose descendants include conf/conf.json or TLS private keys, returning matching lines with no confirmation prompt. Alternatively the actor uses file.copy to relocate a protected descendant (e.g. data/.siyuan/publishAccess.json) to an ordinary path and then file.read to retrieve it, or uses unzip to overwrite a protected descendant via a lexically contained ZIP member name. No public exploit code is identified at time of analysis. |
Get an e-mail when this CVE is exploited, patched or re-scored. Free account.
Alert meAnalysisAIv1 – Sep 26, 2026
Sensitive-path guard bypass in SiYuan 3.8.0 through 3.8.3 lets an authenticated administrator reach files that the protected-workspace denylist is designed to exclude by invoking recursive MCP file operations against a permitted root: file.grep can return matching lines from non-hidden protected descendants such as conf/conf.json, TLS keys, data/snippets/conf.json, data/templates/, data/.siyuan/publishAccess.json, notebook .siyuan internals, and the kernel log, while file.copy can stage those descendants to an ordinary path for a follow-on file.read and unzip can overwrite them using lexically contained ZIP member names. The defect is an incomplete fix for GHSA-c8r8-95hg-mp34 that was addressed in SiYuan 3.8.4, and no public exploit code was identified at the time of analysis. Because administrative authentication (PR:H) is mandatory and SiYuan is typically a single-user, self-hosted tool where the admin is the sole operator, real-world risk is materially constrained, though prompt injection into the in-app Agent is the practical amplifier since file.grep is globally classified as a safe action and therefore receives no per-call confirmation.
RemediationAI
Vendor-released patch: 3.8.4 - upgrading to SiYuan 3.8.4 completes the sensitive-path guard so that each resolved descendant, not just the allowed root, is validated by util.IsForbiddenAbsPath(). Where an immediate upgrade is not possible, reduce exposure by disabling the external MCP server or binding it only to a trusted interface/localhost and by suspending use of the in-app Agent against untrusted or externally sourced content, since file.grep is classified as a safe action and receives no per-call confirmation card; the trade-off is that this removes agentic file operations entirely for that deployment rather than selectively narrowing them. Because the confirmation cards for file.copy and unzip render only the allowed root arguments and conceal the protected descendant paths actually being touched, operators should not rely on those prompts for scope review and should refuse approvals for recursive roots spanning conf/, data/.siyuan/, TLS key material, data/snippets/conf.json, data/templates/, or kernel-log locations unless the source content is fully trusted. Given the mandatory administrative authentication prerequisite, rotate any credentials, TLS keys, or publish-access secrets that may have been read and audit MCP and Agent logs for anomalous grep, copy, and unzip invocations against sensitive roots; none of these compensating controls replace installing 3.8.4. Advisory references: https://github.com/siyuan-note/siyuan/security/advisories/GHSA-9g6v-r3xf-673q and https://www.vulncheck.com/advisories/siyuan-3.8.0-through-3.8.3-path-traversal-via-mcp-file-operations .
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's MCP file tool funnels path resolution through resolvePath(), which invokes util.IsForbiddenAbsPath() to enforce a denylist of protected workspace files. The bug is that the guard is evaluated only against the allowed root supplied to a recursive operation, not against each descendant path that the recursion actually resolves; this maps to CWE-863 (Incorrect Authorization) because the per-path authorization decision is simply omitted for descendants. Three primitives are affected: file.grep reads matched content from non-hidden protected descendants and is classified as a global safe action, so it executes with no confirmation card; file.copy writes protected descendants to a permitted location from which file.read can retrieve them; and unzip overwrites protected descendants using ordinary ZIP member names that remain lexically contained within the allowed root, defeating the guard's lexical-containment expectation. file.copy and unzip do raise confirmation cards, but those cards render only the allowed root arguments, hiding the protected descendant paths the operation actually touches, which makes operator review ineffective. Exploitation requires the MCP file tool to be reachable via the in-app Agent or an external MCP server and requires an authenticated administrator; the copy-then-read and unzip paths additionally require the actor to select lexically contained target or member names, while file.grep is the friction-free primitive and the natural target for agentic or prompt-injection abuse. The CPE entry cpe:2.3:a:siyuan-note:siyuan:*:*:*:*:*:*:*:* is version-agnostic and does not itself pin the vulnerable range; the vendor advisory scopes the flaw to 3.8.0 through 3.8.3 as an incomplete remediation of GHSA-c8r8-95hg-mp34.
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:H/UI:N/VC:H/VI:H/VA:N/SC:N/SI:N/SA:N
Remote MCP/API access with low complexity but mandatory admin authentication (PR:H); high confidentiality (key/config disclosure) and integrity (unzip overwrite), no availability impact, scope unchanged.
Primary rating from Vendor (VulnCheck).
CVSS VectorVendor: VulnCheck
Lifecycle Timeline
2DescriptionCVE.org
SiYuan is a self-hosted personal knowledge management system. In versions 3.8.0 through 3.8.3, the MCP file tool's sensitive-path guard (util.IsForbiddenAbsPath(), invoked from resolvePath()) is applied only to the allowed root of recursive operations and not to each resolved descendant path - an incomplete fix for GHSA-c8r8-95hg-mp34. An authenticated administrator using the in-app Agent or the external MCP server can therefore bypass the protected-workspace-file denylist: file.grep can return matching lines from non-hidden protected descendants (for example conf/conf.json, TLS keys, data/snippets/conf.json, data/templates/, data/.siyuan/publishAccess.json, notebook .siyuan internals, or the kernel log), file.copy can copy protected descendants to an ordinary path where file.read can then retrieve them, and unzip can overwrite protected descendants using ordinary, lexically contained ZIP member names. Because file.grep is globally classified as a safe action, it receives no per-call confirmation, and the confirmation cards for file.copy and unzip show only the allowed root arguments. This issue is fixed in version 3.8.4. Suggested title: SiYuan 3.8.0 through 3.8.3 Sensitive-Path Guard Bypass in Recursive MCP File Operations.
Technical POC Analysis
No runnable PoC is included in the supplied evidence.
Full technical POC analysis - root cause, step-by-step exploitation and patch breakdown - is part of the Pro and Business plans.
Executive ViewAI
SiYuan, a self-hosted personal knowledge management application, is affected by a high-severity vulnerability in versions 3.8.0 through 3.8.3 that permits an administrator to bypass file-access protections and read sensitive workspace files such as configuration data and TLS keys. Although the flaw requires administrator-level access and SiYuan is usually deployed as a single-user tool, organizations should care because a compromised or malicious admin account could expose secrets that undermine broader system security. No public exploit code has been identified, and no vendor patch is currently available, so risk must be managed through operational safeguards.
No vendor-released patch identified at time of analysis. Interim mitigations include disabling or restricting MCP file operations to trusted administrators, isolating SiYuan instances from untrusted networks, running the service with least privilege, monitoring for anomalous file.grep/file.copy/unzip activity, and applying OS-level access controls to protect sensitive configuration and TLS key files.
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
Authentication bypass attacks exploit flaws in the verification mechanisms that control access to systems and applications.
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-87727
GHSA-x2gq-fcjj-cxqr
NVD
CVE.org
EPSS
Vulnrichment
Exploit-DB