SiYuan importStdMd: unvalidated localPath imports arbitrary host directories as persistent notes
Description
SiYuan is a personal knowledge management system. In versions 3.6.0 and below, POST /api/import/importStdMd passes the localPath parameter directly to model.ImportFromLocalPath with zero path validation. The function recursively reads every file under the given path and permanently stores their content as SiYuan note documents in the workspace database, making them searchable and accessible to all workspace users. Data persists in the workspace database across restarts and is accessible to Publish Service Reader accounts. Combined with the renderSprig SQL injection ( separate advisory ), a non-admin user can then read all imported secrets without any additional privileges. This issue has been fixed in version 3.6.1.
Affected packages
Versions sourced from the GitHub Security Advisory.
| Package | Affected versions | Patched versions |
|---|---|---|
github.com/siyuan-note/siyuanGo | <= 0.0.0-20260313024916-fd6526133bb3 | — |
Affected products
1- Range: < 3.6.1
Patches
113b6d3d45e83:lock: https://github.com/siyuan-note/siyuan/security/advisories/GHSA-rjhh-m223-9qqv
1 file changed · +18 −0
kernel/api/import.go+18 −0 modified@@ -17,6 +17,7 @@ package api import ( + "fmt" "io" "net/http" "os" @@ -188,6 +189,23 @@ func importStdMd(c *gin.Context) { notebook := arg["notebook"].(string) localPath := arg["localPath"].(string) toPath := arg["toPath"].(string) + + if util.IsSubPath(util.WorkingDir, localPath) { + msg := fmt.Sprintf("import from local path [%s] failed: local path is sub path of working dir", localPath) + logging.LogErrorf(msg) + ret.Code = -1 + ret.Msg = msg + return + } + + if util.IsSensitivePath(localPath) { + msg := fmt.Sprintf("import from local path [%s] failed: local path is sensitive path", localPath) + logging.LogErrorf(msg) + ret.Code = -1 + ret.Msg = msg + return + } + err := model.ImportFromLocalPath(notebook, localPath, toPath) if err != nil { ret.Code = -1
Vulnerability mechanics
Generated by null/stub on May 9, 2026. Inputs: CWE entries + fix-commit diffs from this CVE's patches. Citations validated against bundle.
References
5- github.com/advisories/GHSA-rjhh-m223-9qqvghsaADVISORY
- nvd.nist.gov/vuln/detail/CVE-2026-32750ghsaADVISORY
- github.com/siyuan-note/siyuan/commit/13b6d3d45e83525654d120f32a3fdc5d9e95df0bghsax_refsource_MISCWEB
- github.com/siyuan-note/siyuan/releases/tag/v3.6.1ghsax_refsource_MISCWEB
- github.com/siyuan-note/siyuan/security/advisories/GHSA-rjhh-m223-9qqvghsax_refsource_CONFIRMWEB
News mentions
0No linked articles in our index yet.