Skip to main content

SiYuan CVE-2026-116168

| EUVDEUVD-2026-109429 MEDIUM
Path Traversal (CWE-22)
2026-10-25 VulnCheck GHSA-659w-8mpv-qcqc
6.9
CVSS 4.0 · Vendor: VulnCheck
View

Attack ChainAIDerived

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

  1. Access
    Drive authenticated agent to MCP server
  2. Exploit
    Invoke asset upload with ~/.env path
  3. Execution
    Server copies file into workspace assets
  4. Impact
    Read secrets back via /assets/ over HTTP

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 (1) SiYuan's agent-facing MCP server to be enabled and reachable, (2) the attacker to drive an agent/MCP client authenticated with a valid SiYuan API token (Conf.Api.Token, an agent/admin principal - the advisory PoC used a Bearer token), and (3) invocation of the asset tool's 'upload' action with a 'files' path. The read is bounded to local files on the server host whose names are NOT on the 17-entry dotfile blacklist - concretely ~/.env, .env.local, .env.production and similar, plus the other documented omissions ~/Library/** (macOS Keychain), other users' home directories (/home/<otheruser>/), and Windows %APPDATA%/%LOCALAPPDATA%. Limiting factors: authentication to the MCP surface is required, the MCP asset tool must be exposed, only confidentiality is affected (no write/integrity or availability impact), and files already covered by the blacklist (.ssh, .aws, .kube, .docker, .gnupg, .git-credentials, credentials*, id_*) remain blocked.

Impact

This is a moderate, not emergency, priority. The input CVSS 4.0 base score is 6.9 (Medium) with a local attack vector (AV:L), low complexity (AC:L), no attack requirements (AT:N), and confidentiality-only impact (VC:H, VI:N, VA:N, no subsequent-system impact). The vuln.today decision label is 'this_month', consistent with a Medium, confidentiality-only, authentication-gated flaw rather than an act_now/emergency item. No EPSS score and no CISA KEV listing were provided, so there is no signal of active or widespread exploitation - treat exploitation status as 'no public exploit identified' in the KEV/active sense, but note that the GHSA advisory itself documents a fully executed lab PoC (a public PoC reference exists; it is not verified as packaged, working exploit code). A key conflict: the supplied CVSS 4.0 vector contains PR:N (unauthenticated), yet the advisory's own PoC drives the MCP endpoint with a valid Bearer API token (Conf.Api.Token, an agent/admin principal) and the description explicitly says 'Authenticated attackers' - so the PR:N metric appears inconsistent with the documented trigger; verify authentication requirements with the vendor. Net: a real but bounded issue - it requires the MCP asset surface and a valid token, impacts confidentiality only, and affects a niche product, so it ranks below internet-facing unauthenticated RCE despite a Medium CVSS.

Exploit ScenarioDerived

An adversary able to drive an agent that is connected to a SiYuan instance's MCP server (the same threat model as the parent advisory GHSA-p23f-cm6q-2qp8) and holding a valid API token invokes the asset tool's 'upload' action with a path such as /home/siyuan/.env. The incomplete sensitive-path blacklist in validateAssetUploadPaths accepts the path, the server copies the file into data/assets/ under a generated name, and the attacker then retrieves the secret contents via an authenticated GET /assets/<name> request. A working PoC against SiYuan v3.8.6 (Docker b3log/siyuan) is documented step-by-step in the GHSA advisory, so the attack is proven rather than theoretical.

This Month Plan within 30 days. Why: MEDIUM severity (CVSS 4.0-6.9).
Patch available 0.2% exploitation probability (EPSS)

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

Alert me

AnalysisAIv1 – Oct 25, 2026

SiYuan's MCP asset tool fails to block dotenv-style secret files, so an attacker who can drive an authenticated MCP client can copy a file such as ~/.env from the server host into the workspace and then read it back over HTTP from /assets/. The flaw is an incomplete fix of GHSA-p23f-cm6q-2qp8: the sensitive-path check is a 17-entry home-dotfile blacklist (.ssh, .aws, .kube, .docker, .gnupg, .git-credentials, credentials*, id_*) that omits .env, .env.local, .env.production, ~/Library, other users' home directories and Windows AppData. Public proof-of-concept reproduction steps exist and were executed against a self-hosted SiYuan 3.8.6 lab; because the MCP server must be exposed and the attacker needs a valid SiYuan API token, the issue is a moderate, not emergency, priority (this_month).

RemediationAI

Vendor-released patch: upgrade SiYuan to 3.8.7 or later (go/siyuan-note fixed in v3.8.7), per https://github.com/siyuan-note/siyuan/security/advisories/GHSA-q768-4j87-gf3w. If upgrading cannot be done immediately, disable or unbind SiYuan's MCP server so the agent-facing endpoint is not reachable by untrusted clients - this removes the AI-agent integration, which is the trade-off - and restrict reachability of the MCP endpoint to localhost or a trusted agent host at the network layer, which lowers exposure but does not correct the blacklist gap. Rotate any SiYuan API tokens (Conf.Api.Token) used by agent principals, and treat home-directory secrets as potentially disclosed: rotate credentials stored in ~/.env, .env.local, .env.production, ~/Library, other users' home directories, or Windows %APPDATA%/%LOCALAPPDATA% on hosts running an exposed 3.8.7-previous instance. A fragile interim workaround is to keep secret files at paths the existing guard already rejects (for example under .ssh, .aws, .kube or a credentials*-prefixed name), but this depends entirely on blacklist internals and should not be relied on once the server version is fixed; the vendor's suggested durable fix is to invert the model so the MCP asset tool only accepts operator-granted path roots.

Affected VersionsENISA

SiYuan 0 <3.8.7

Affected Packages

euvd siyuan fix: 3.8.7

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

CWE-22 path traversal in the Go codebase behind SiYuan's agent-facing MCP server. The fix for the parent advisory GHSA-p23f-cm6q-2qp8 (commit b26a4a3) added validateAssetUploadPaths in kernel/mcp/tools/asset.go, which resolves each 'files' argument with filepath.Abs and then consults util.IsSensitivePath (kernel/util/path.go:485). That routine is a blacklist: it walks system directories, Windows system prefixes, workspace-internal conf/temp, a home dotfile whitelist of 17 entries, and names beginning with credentials or id_. It does not enumerate .env-family filenames, macOS ~/Library, other users' home directories, or Windows %APPDATA%/%LOCALAPPDATA%. Once validateAssetUploadPaths accepts a path, AssetTool.upload flows into InsertLocalAssets (kernel/model/upload.go:178), which copies the local file into the workspace data/assets/ directory under a generated asset name; the workspace then serves that file back via GET /assets/<name> to an authenticated session. The copy-in step is what turns a local file selection into a read oracle reachable purely over HTTP - no filesystem access is needed on the attacker side. Affected package coordinates are cpe:2.3:a:siyuan-note:siyuan (Go module go/siyuan-note, vulnerable <= 3.8.6). Because the guard enumerates forbidden names rather than granting allowed path roots (as kernel/mcp/tools/file.go does for workspace-relative access), any secret-bearing filename absent from the list remains reachable.

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

Vendor (VulnCheck) PRIMARY 6.9 MEDIUM
CVSS:4.0/AV:L/AC:L/AT:N/PR:N/UI:N/VC:H/VI:N/VA:N/SC:N/SI:N/SA:N
vuln.today AI 5.5 MEDIUM

The documented PoC requires a valid API token so PR:L (not PR:N); the flaw reads files local to the server host (AV:L), is trivially triggered (AC:L), and leaks file contents only, so C:H with I:N/A:N.

3.1 AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:N/A:N
4.0 AV:L/AC:L/AT:N/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
Local
Attack Complexity
Low
Attack Requirements
None
Privileges Required
None
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

Lifecycle Timeline

1
Patch available
Oct 25, 2026 - 14:01 EUVD

DescriptionCVE.org

SiYuan before 3.8.7 contains a path traversal vulnerability in the MCP asset tool because validateAssetUploadPaths relies on an incomplete sensitive-path blacklist that omits .env and other secret files. Authenticated attackers driving the MCP asset upload action can copy such local files into the workspace and read them back via /assets/ over HTTP.

Threat Intelligence Overview

EPSS Score
0.2%
Top 92% exploitable
Prevalence
Low
niche open-source self-hosted note-taking app, small production footprint
Social Media
1
Sightings
Data Quality
4 sources
Confidence: Medium

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 0.2%
Patch available Yes
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
Defer
Exploitation· derived
None
System Exposure· derived
Small
Automatable· derived
No
Human Impact· derived
Medium

Priority Score

34
Low Medium High Critical
KEV: 0
EPSS: 0
CVSS: +34
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.

More in Siyuan

View all
CVE-2026-69083 CRITICAL POC
9.9 Aug 03

SQL injection in SiYuan's fullTextSearchAssetContent endpoint lets unauthenticated attackers and holders of publish Role

CVE-2026-54067 CRITICAL POC
9.9 Jun 24

Stored cross-site scripting in SiYuan personal knowledge management before 3.7.0 lets an attacker with write access to a

CVE-2026-69084 CRITICAL POC
9.9 Aug 03

SQL injection in SiYuan personal knowledge management (versions <= v3.7.2) lets attackers pass arbitrary SQL statements

CVE-2026-54158 CRITICAL POC
9.9 Jun 24

Stored cross-site scripting in SiYuan's attribute-view (database) cell renderer, affecting all versions prior to 3.7.0,

CVE-2026-69085 CRITICAL POC
9.9 Aug 03

SQL injection in SiYuan personal knowledge-management software (all versions before v3.7.3) lets attackers inject arbitr

CVE-2024-53507 CRITICAL POC
9.8 Nov 29

A SQL injection vulnerability was discovered in Siyuan 3.1.11 in /getHistoryItems. Rated critical severity (CVSS 9.8), t

CVE-2024-53506 CRITICAL POC
9.8 Nov 29

A SQL injection vulnerability has been identified in Siyuan 3.1.11 via the ids array parameter in /batchGetBlockAttrs. R

CVE-2024-53505 CRITICAL POC
9.8 Nov 29

A SQL injection vulnerability has been identified in Siyuan 3.1.11 via the id parameter at /getAssetContent. Rated criti

CVE-2024-53504 CRITICAL POC
9.8 Nov 29

A SQL injection vulnerability has been identified in Siyuan 3.1.11 via the notebook parameter in /searchHistory. Rated c

CVE-2026-23852 CRITICAL POC
9.6 Jan 19

SiYuan personal knowledge management system prior to 3.5.4 has a stored XSS vulnerability (CVSS 9.6) that allows code ex

CVE-2026-56397 CRITICAL POC
9.4 Jun 21

Remote code execution in SiYuan note-taking application (before v3.6.1) allows any malicious Bazaar marketplace package

CVE-2026-54069 CRITICAL POC
9.2 Jun 24

Origin-validation bypass in SiYuan Note (open-source personal knowledge management) before 3.7.0 lets any installed Chro

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