CVE-2026-60083: SiYuan: MCP file tool leaks publish-share passwords

GHSA-c8r8-95hg-mp34MEDIUM
Published October 27, 2026
CISO Take

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.

Sources:NVDGitHub AdvisoryEPSSOpenSSFATLASVulnCheck

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?

Initial Access
Attacker or compromised agent gains administrator-level access to the SiYuan MCP endpoint.
AML.T0012
Tool Invocation
The file tool's read or list action is called against data/.siyuan/publishAccess.json, which the incomplete blocklist does not block.
AML.T0053
Credential Collection
Plaintext publish-mode share passwords are read from the file.
AML.T0055
Impact
The attacker bypasses password protection and reads the content of every protected published notebook or document.
AML.T0025

What systems are affected?

PackageEcosystemVulnerable RangePatched
Jupyter Notebookgo< 0.0.0-20260808051406-3542530c505f0.0.0-20260808051406-3542530c505f
13.5KOpenSSF 5.83.0K dependentsPushed 11d ago79% patched~75d to patchFull package profile →

Do you use Jupyter Notebook? You're affected.

How severe is it?

CVSS 3.1
4.9 / 10
EPSS
0.4%
chance of exploitation in 30 days
Higher than 33% of all CVEs
Exploitation Status
No known exploitation
Sophistication
Trivial

What is the attack surface?

AVACPRUISCIA
AVNetwork
ACLow
PRHigh
UINone
SUnchanged
CHigh
INone
ANone

What should I do?

1 step
  1. 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.

How is it classified?

Which compliance frameworks are affected?

This CVE is relevant to:

NIST AI RMF
MANAGE 2.3-Responses to unknown risks and security issues
OWASP LLM Top 10
LLM02-Sensitive Information DisclosureLLM06-Excessive Agency

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

agent frameworksMCP serversAI-assisted knowledge managementtool-calling agents

MITRE ATLAS Techniques

AML.T0037Data from Local System
AML.T0053AI Agent Tool Invocation
AML.T0055Unsecured Credentials
AML.T0085.001AI Agent Tools

Compliance Controls Affected

NIST AI RMF: MANAGE 2.3
OWASP LLM Top 10: LLM02, LLM06

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:N

Timeline

Published
October 27, 2026
Last Modified
October 27, 2026
First Seen
October 27, 2026

Related Vulnerabilities