The endpoint /api/av/removeUnusedAttributeView is vulnerable to a path traversal (CWE-22) that allows an attacker to delete arbitrary .json files on the server.
The issue arises because user-controlled input (id) is directly used in filesystem path construction without validation or restriction.
> Access to this endpoint (e.g., via a Reader-role or publish context) is considered a precondition and not part of the vulnerability. The root cause is unsafe path handling.
POST /api/av/removeUnusedAttributeView HTTP/1.1
Host: <target>
Content-Type: application/json
{
"id": "../../../conf/conf"
}
An attacker can delete arbitrary .json files within the workspace directory.
This may lead to:
conf/conf.json)This represents a server-side arbitrary file deletion primitive, which can have severe impact depending on the targeted files.
The vulnerable code constructs file paths as follows:
filepath.Join(util.DataDir, "storage", "av", id+".json")
Because id is not validated, attackers can inject path traversal sequences such as ../ to escape the intended directory.
../local → data/storage/local.json../../storage/outline → data/storage/outline.json../../../conf/conf → conf/conf.jsonNo validation or restriction is applied to:
id) is directly used in filesystem path constructionbase := filepath.Join(util.DataDir, "storage", "av")
absPath := filepath.Join(base, id+".json")
if !util.IsSubPath(base, absPath) {
return error
}
| Score | Percentile |
|---|---|
| 0.07% | 20.38% |
| Base score | Version | Severity | Vector |
|---|---|---|---|
| 8.5 | 3.1 | — |
|
| Type | Value |
|---|---|
| GHSA | GHSA-vw86-c94w-v3x4 ↗ |
| CVE | CVE-2026-40318 ↗ |
| CWE id | Name |
|---|---|
| CWE-24 | Path Traversal: '../filedir' |
Vulnerable version ranges and first patched releases as published by GitHub.
| Ecosystem | Package | Vulnerable range | First patched | Vulnerable functions |
|---|---|---|---|---|
| go | github.com/siyuan-note/siyuan/kernel | < 0.0.0-20260407035653-2f416e5253f1 | 3.6.40.0.0-20260407035653-2f416e5253f1 | — |