Skip to content
Verified reproduction

CVE-2026-66012: SiYuan missing authorization in /mcp enables unauthenticated administrator takeover via Publish proxy

CVE-2026-66012 is verified against siyuan · github affected versions: before 3.7.2 (specifically 3.7.1 per advisory) This critical reproduction includes runnable sandbox proof, artifacts, and a plain-text agent view under REPRO-2026-00305.

REPRO-2026-00305 siyuan · github Jul 27, 2026 CVE entry .txt
Severity CRITICAL
Confidence HIGH
Reproduced in 171m 57s
Tool calls 853
Spend $57.52
Affected before 3.7.2 (specifically 3.7.1 per advisory)
$ pruva-verify REPRO-2026-00305
or curl -O https://pruva.dev/api/v1/reproductions/REPRO-2026-00305/artifacts/bundle/repro/reproduction_steps.sh && chmod +x reproduction_steps.sh && ./reproduction_steps.sh
Run in a VM or disposable container. This exploits a real vulnerability.
02 · The vulnerability

Repository: https://github.com/siyuan-note/siyuan Immutable vulnerable ref: c72ca4cd09019e5f64afdee8f8c6ec5ef34858db (fix commit) Immutable fixed ref: v3.7.2 Affected versions: before 3.7.2 Fixed versions: 3.7.2 and later Attacker control: remote unauthenticated attacker controls HTTP requests reaching the Publish proxy and then the /mcp endpoint; attacker can also control JSON/tool arguments sent to MCP tools. Public entrypoint: Publish server enabled in anonymous mode, then POST /mcp via the reverse proxy. Expected impact: unauthorized read/write of workspace files, secret exfiltration from conf/conf.json, plugin planting, and administrator takeover on next desktop launch. Primary references: https://github.com/siyuan-note/siyuan/security/advisories/GHSA-cvhv-7xhj-xjp8 ; https://github.com/siyuan-note/siyuan/commit/c72ca4cd09019e5f64afdee8f8c6ec5ef34858db ; https://www.vulncheck.com/advisories/siyuan-before-unauthenticated-administrator-takeover-via-mcp Negative control: without Publish anonymous exposure or when Publish auth is enabled, the unauthenticated attacker cannot reach the vulnerable /mcp path. Generic runtime reproduction objective: in a Linux Docker sandbox, run vulnerable SiYuan with Publish anonymous mode enabled, issue a request through the Publish proxy to /mcp, and verify unauthorized file read/write capability versus v3.7.2.

03 · Root cause
04 · Reproduction transcript

The agent's step-by-step process — every tool call, every handoff, the moment the exploit fired.

Loading session...

05 · Artifacts

Scripts, logs, diffs, and output captured during the reproduction.

bundle/repro/exploit_knowledge.json18.1 KB
bundle/logs/repro/mcp-fixed-control-response.log0.1 KB
bundle/logs/repro/desktop-rce-marker-1785119719-59078.log0.1 KB
bundle/logs/repro/desktop-rce-marker-1785119775-59728.log0.1 KB
bundle/logs/repro/desktop-rce-marker-1785131179-1.log0.1 KB
bundle/logs/repro/desktop-rce-marker.log0.1 KB
bundle/logs/repro/escalation_experiment.log1.5 KB
bundle/logs/repro/escalation_experiment2.log1.5 KB
bundle/logs/repro/escalation-boot2.log2.7 KB
bundle/logs/repro/escalation-plugin-tool-response.log0.2 KB
bundle/logs/repro/escalation2-fetch-response.log0.2 KB
bundle/logs/repro/mcp-auth-control-response.log0.2 KB
bundle/logs/repro/mcp-conf-response.log12.4 KB
bundle/logs/repro/command-exec-negative-control.json0.2 KB
bundle/logs/repro/mcp-init-response.log0.6 KB
bundle/logs/repro/mcp-petals-write-response.log0.1 KB
bundle/logs/repro/mcp-plugin-index-write-response.log0.1 KB
bundle/logs/repro/mcp-plugin-json-write-response.log0.1 KB
bundle/logs/repro/mcp-read-response.log0.1 KB
bundle/logs/repro/mcp-write-response.log0.1 KB
bundle/logs/repro/reproduction_steps.log2.0 KB
bundle/logs/repro/siyuan-desktop-rce-app.log1.4 KB
bundle/logs/repro/siyuan-desktop-rce.log4.8 KB
bundle/logs/repro/siyuan-fixed-anon.log2.4 KB
bundle/logs/repro/siyuan-vuln-anon.log3.5 KB
bundle/logs/repro/siyuan-vuln-auth.log3.2 KB
bundle/logs/repro/source-v3.7.1-mcp-server.go3.4 KB
bundle/logs/repro/source-v3.7.2-mcp-server.go3.7 KB
bundle/repro/rca_report.md8.7 KB
bundle/repro/reproduction_steps.sh21.6 KB
bundle/repro/runtime_manifest.json1.6 KB
bundle/repro/validation_verdict.json0.8 KB