CVE-2026-32749
published 2026-03-19CVE-2026-32749: SiYuan is a personal knowledge management system. In versions 3.6.0 and below, POST /api/import/importSY and POST /api/import/importZipMd write uploaded…
PriorityP353critical9.1CVSS 3.1
AVNACLPRHUINSCCHIHAH
EPSS
0.43%
34.7th percentile
SiYuan is a personal knowledge management system. In versions 3.6.0 and below, POST /api/import/importSY and POST /api/import/importZipMd write uploaded archives to a path derived from the multipart filename field without sanitization, allowing an admin to write files to arbitrary locations outside the temp directory - including system paths that enable RCE. This can lead to aata destruction by overwriting workspace or application files, and for Docker containers running as root (common default), this grants full container compromise. This issue has been fixed in version 3.6.1.
Affected
3 ranges
| Vendor | Product | Version range | Fixed in |
|---|---|---|---|
| b3log | siyuan | < 3.6.1 | 3.6.1 |
| github.com | siyuan-note_siyuan_kernel | 0 – 0.0.0-20260313024916-fd6526133bb3 | — |
| siyuan-note | siyuan | < 3.6.1 | 3.6.1 |
Stop checking back — get the weekly exploitation signal.
Every Monday: what got weaponized or added to CISA KEV in the last seven days — each CVE cross-linked to its PoC, Nuclei template, and detection rule. Free, one email a week, unsubscribe in one click.
OSV
SiYuan importSY/importZipMd: path traversal via multipart filename enables arbitrary file write in github.com/siyuan-note/siyuan/kernel
osv·2026-03-26
CVE-2026-32749 SiYuan importSY/importZipMd: path traversal via multipart filename enables arbitrary file write in github.com/siyuan-note/siyuan/kernel
SiYuan importSY/importZipMd: path traversal via multipart filename enables arbitrary file write in github.com/siyuan-note/siyuan/kernel
SiYuan importSY/importZipMd: path traversal via multipart filename enables arbitrary file write in github.com/siyuan-note/siyuan/kernel
GHSA
SiYuan importSY/importZipMd: path traversal via multipart filename enables arbitrary file write
ghsa·2026-03-16
CVE-2026-32749 [HIGH] CWE-22 SiYuan importSY/importZipMd: path traversal via multipart filename enables arbitrary file write
SiYuan importSY/importZipMd: path traversal via multipart filename enables arbitrary file write
### Summary
POST /api/import/importSY and POST /api/import/importZipMd write uploaded archives to a path derived from the multipart filename field without sanitization, allowing an admin to write files to arbitrary locations outside the temp directory - including system paths that enable RCE.
### Details
File: kernel/api/import.go - functions importSY and importZipMd
```go
file := files[0]
writePath := filepath.Join(util.TempDir, "import", file.Filename)
writer, err := os.OpenFile(writePath, os.O_RDWR|os.O_CREATE, 0644)
```
importZipMd has a second traversal in unzipPath construction:
```go
filenameMain := strings.TrimSuffix(file.Filename, filepath.Ext(file.Filename))
unzipPath := filepath.J
OSV
SiYuan importSY/importZipMd: path traversal via multipart filename enables arbitrary file write
osv·2026-03-16
CVE-2026-32749 [HIGH] SiYuan importSY/importZipMd: path traversal via multipart filename enables arbitrary file write
SiYuan importSY/importZipMd: path traversal via multipart filename enables arbitrary file write
### Summary
POST /api/import/importSY and POST /api/import/importZipMd write uploaded archives to a path derived from the multipart filename field without sanitization, allowing an admin to write files to arbitrary locations outside the temp directory - including system paths that enable RCE.
### Details
File: kernel/api/import.go - functions importSY and importZipMd
```go
file := files[0]
writePath := filepath.Join(util.TempDir, "import", file.Filename)
writer, err := os.OpenFile(writePath, os.O_RDWR|os.O_CREATE, 0644)
```
importZipMd has a second traversal in unzipPath construction:
```go
filenameMain := strings.TrimSuffix(file.Filename, filepath.Ext(file.Filename))
unzipPath := filepath.J
No detection rules found.
No public exploits indexed.
2026-03-19
Published