SiYuan's built-in MCP file tool blocks only one of the four sensitive paths its own HTTP API blocks. An authenticated administrator or MCP client can therefore read data/.siyuan/publishAccess.json, which stores publish-mode share passwords in plaintext. The CVSS is a moderate 4.9 because it needs high privileges, and the EPSS is low (0.00391, 67th percentile). There is no public exploit, no Nuclei template and no KEV listing. Exposure is still material because the package has 3,046 dependents and 77 other CVEs, and a compromised or prompt-injected AI agent holding the MCP tool could harvest those passwords. Upgrade to the patched kernel (v3.8.0 or commit 3542530c) and rotate every publish-mode share password.
What is the risk?
Medium overall. Exploitation needs network access and administrator-level privileges (PR:H) but is trivial once those are held, with no user interaction. The impact is high confidentiality loss with no integrity or availability effect. Exploitation likelihood is low (EPSS 0.39%, no public exploit, not in KEV). The risk grows where MCP access is delegated to autonomous AI agents or shared tokens, because an agent steered by prompt injection could read and relay the credentials. Package hygiene is mediocre (OpenSSF 5.8/10, 77 prior CVEs).
How does the attack unfold?
What systems are affected?
| Package | Ecosystem | Vulnerable Range | Patched |
|---|---|---|---|
| Jupyter Notebook | go | < 0.0.0-20260808051406-3542530c505f | 0.0.0-20260808051406-3542530c505f |
Do you use Jupyter Notebook? You're affected.
How severe is it?
What is the attack surface?
What should I do?
1 step1) Upgrade github.com/siyuan-note/siyuan/kernel to the patched version (0.0.0-20260808051406-3542530c505f or later, release v3.8.0). 2) Rotate all publish-mode access passwords and treat the old ones as compromised. 3) Disable or restrict the MCP endpoint if it is not needed, and limit it to trusted administrator clients on a private network. 4) Review MCP and file-tool access logs for reads of publishAccess.json, snippets/conf.json and templates. 5) Do not hand administrator-scoped MCP tokens to autonomous agents without human approval of file-read tool calls. 6) Follow the upstream guidance to scope the tool to temp/siyuan log files.
How is it classified?
Which compliance frameworks are affected?
This CVE is relevant to:
Frequently Asked Questions
What is CVE-2026-60083?
SiYuan's built-in MCP file tool blocks only one of the four sensitive paths its own HTTP API blocks. An authenticated administrator or MCP client can therefore read data/.siyuan/publishAccess.json, which stores publish-mode share passwords in plaintext. The CVSS is a moderate 4.9 because it needs high privileges, and the EPSS is low (0.00391, 67th percentile). There is no public exploit, no Nuclei template and no KEV listing. Exposure is still material because the package has 3,046 dependents and 77 other CVEs, and a compromised or prompt-injected AI agent holding the MCP tool could harvest those passwords. Upgrade to the patched kernel (v3.8.0 or commit 3542530c) and rotate every publish-mode share password.
Is CVE-2026-60083 actively exploited?
No confirmed active exploitation of CVE-2026-60083 has been reported, but organizations should still patch proactively.
How to fix CVE-2026-60083?
1) Upgrade github.com/siyuan-note/siyuan/kernel to the patched version (0.0.0-20260808051406-3542530c505f or later, release v3.8.0). 2) Rotate all publish-mode access passwords and treat the old ones as compromised. 3) Disable or restrict the MCP endpoint if it is not needed, and limit it to trusted administrator clients on a private network. 4) Review MCP and file-tool access logs for reads of publishAccess.json, snippets/conf.json and templates. 5) Do not hand administrator-scoped MCP tokens to autonomous agents without human approval of file-read tool calls. 6) Follow the upstream guidance to scope the tool to temp/siyuan log files.
What systems are affected by CVE-2026-60083?
This vulnerability affects the following AI/ML architecture patterns: agent frameworks, MCP servers, AI-assisted knowledge management, tool-calling agents.
What is the CVSS score for CVE-2026-60083?
CVE-2026-60083 has a CVSS v3.1 base score of 4.9 (MEDIUM). The EPSS exploitation probability is 0.39%.
What is the AI security impact?
Affected AI Architectures
MITRE ATLAS Techniques
AML.T0037Data from Local SystemAML.T0053AI Agent Tool InvocationAML.T0055Unsecured CredentialsAML.T0085.001AI Agent ToolsCompliance Controls Affected
What are the technical details?
Original Advisory
## Summary `kernel/mcp/tools/file.go`'s `resolvePath()` includes an explicit comment stating its sensitive-path blocklist is meant to align with the HTTP file API's established blacklist (`refuseToAccess()` in `kernel/api/file.go`), following the remediation for GHSA-cvhv-7xhj-xjp8 ("Unauthenticated Administrator takeover exfiltrated via the MCP"), which specifically recommended restricting this tool's scope. In practice, the MCP tool implements only 1 of the 4 static blocklist entries the HTTP API enforces. ## Comparison `kernel/api/file.go` `refuseToAccess()` blocks: 1. `conf/conf.json` (API token, cookie signing key, accessAuthCode) 2. `data/snippets/conf.json` 3. the entire `data/templates` directory 4. `data/.siyuan/publishAccess.json` 5. (dynamic, per-request) any path the current publish-mode session isn't authorized for `kernel/mcp/tools/file.go` `resolvePath()` blocks only: ```go confPath := filepath.Join(util.ConfDir, "conf.json") if abs == confPath { return "", fmt.Errorf("access to conf.json is forbidden") } ``` Items 2, 3, and 4 are absent. The tool's own `list`/`read`/`grep`/`find` actions remain fully functional against them. ## Impact An MCP client with access to the `file` tool (post-fix for GHSA-cvhv-7xhj-xjp8, i.e. a properly authenticated Administrator-level caller) can read `data/.siyuan/publishAccess.json` directly: ```go type PublishAccessItem struct { ID string `json:"id"` Visible bool `json:"visible"` Password string `json:"password"` // plaintext; empty string = no password Disable bool `json:"disable"` } ``` This exposes the plaintext access password for every publish-mode-shared notebook/document, letting the reader bypass password protection on any publish-mode share. This is a serious sibling issue given the volume of publish-mode access-control bugs already reported against this codebase — the passwords protecting exactly that feature are directly readable through a tool whose own description says "never use for workspace data." `data/templates` and `data/snippets/conf.json` are lower-severity but still inconsistent with the HTTP API's own precedent for what counts as sensitive. ## Why this is a distinct finding, not a duplicate GHSA-cvhv-7xhj-xjp8 was about *reachability* an unauthenticated Reader-tier JWT being forwarded to admin-scoped paths including `/mcp`. That has been fixed. This report is about the *tool's own scope* once reached by a legitimate, properly-authenticated caller, the remediation notes for that same advisory explicitly called for restricting `resolvePath` to `WorkspaceDir/temp/siyuan/*.log`, which was not implemented; instead the tool retains workspace-wide scope with only a single-file blocklist addition. ## Suggested fix Either replicate the full `refuseToAccess()` blocklist in `resolvePath()` (minimum fix, keeps parity with the HTTP API going forward by extracting `refuseToAccess`'s path list into a shared helper both call), or implement the originally-recommended allowlist restricting the tool to `WorkspaceDir/temp/siyuan/*.log` for read and disabling write/delete/rename/copy entirely unless the caller is Administrator, matching the tool's own advertised "debugging/log reading only" scope.
Exploitation Scenario
An attacker obtains an administrator-level token or MCP session, for example through a leaked token or an AI agent compromised by indirect prompt injection in a synced document. They call the MCP file tool's read action on data/.siyuan/publishAccess.json and receive the plaintext passwords for every protected publish share. They then open the password-protected published notebooks directly, or sell or reuse the passwords, bypassing the share-level access control without touching the main application login.
Weaknesses (CWE)
CWE-863 — Incorrect Authorization: The product performs an authorization check when an actor attempts to access a resource or perform an action, but it does not correctly perform the check.
- [Architecture and Design] Divide the product into anonymous, normal, privileged, and administrative areas. Reduce the attack surface by carefully mapping roles with data and functionality. Use role-based access control (RBAC) [REF-229] to enforce the roles at the appropriate boundaries. Note that this approach may not protect against horizontal authorization, i.e., it will not protect a user from attacking others with the same role.
- [Architecture and Design] Ensure that access control checks are performed related to the business logic. These checks may be different than the access control checks that are applied to more generic resources such as files, connections, processes, memory, and database records. For example, a database may restrict access for medical records to a specific database user, but each record might only be intended to be accessible to the patient and the patient's doctor [REF-7].
Source: MITRE CWE corpus.
CVSS Vector
CVSS:3.1/AV:N/AC:L/PR:H/UI:N/S:U/C:H/I:N/A:NReferences
- github.com/advisories/GHSA-c8r8-95hg-mp34
- github.com/siyuan-note/siyuan/commit/3542530c505f13aa3fbd0343627409ca6c000dd2
- github.com/siyuan-note/siyuan/releases/tag/v3.8.0
- github.com/siyuan-note/siyuan/security/advisories/GHSA-c8r8-95hg-mp34
- nvd.nist.gov/vuln/detail/CVE-2026-60083
- vulncheck.com/advisories/siyuan-before-incomplete-path-blocklist-via-mcp-file-tool
Timeline
Related Vulnerabilities
CVE-2026-7281110.0SiYuan: SQL injection enables cross-notebook DB access
Same package: notebookCVE-2026-6908510.0SiYuan: SQL injection in searchDocs allows DB tampering
Same package: notebookCVE-2026-6908410.0SiYuan: SQL injection in search endpoint exposes notebooks
Same package: notebookCVE-2026-6908310.0SiYuan: unauthenticated SQLi in full-text search endpoint
Same package: notebookCVE-2026-11105710.0Mercury: regex blocklist bypass allows unauthenticated RCE
Same package: notebook