Description
SiYuan before v3.8.1 does not apply the IsForbiddenAbsPath guard (introduced in GHSA-c8r8-95hg-mp34) to the /history/*path and /repo/diff/*path endpoints in kernel/server/serve.go. These routes require admin authentication but construct file paths independently, so an authenticated administrator can retrieve historical snapshots of sensitive files that the guard is meant to block, including data/.siyuan/publishAccess.json (plaintext publish-mode passwords) and files under data/templates/.
Affected products
| Vendor | Product | Affected | Fixed |
|---|---|---|---|
| siyuan-note | siyuan | < 3.8.1 | 3.8.1 |
Affected packages
| Ecosystem | Package | Affected | Fixed | Record |
|---|---|---|---|---|
| Go | github.com/siyuan-note/siyuan/kernel | < 0.0.0-20260816034002-035bf9a8c311 | 0.0.0-20260816034002-035bf9a8c311 | GHSA-3cm4-ccvw-6xr6 |
References
- GitHub Security Advisory (GHSA-3cm4-ccvw-6xr6) vendor-advisory
- VulnCheck Advisory: SiYuan before v3.8.1 Missing Authorization via /history and /repo/diff third-party-advisory