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 constructionValidate input strictly
Enforce directory boundaries
base := filepath.Join(util.DataDir, "storage", "av")
absPath := filepath.Join(base, id+".json")
if !util.IsSubPath(base, absPath) {
return error
}
Normalize paths before use
Add additional logical checks
{
"cwe_ids": [
"CWE-24"
],
"github_reviewed": true,
"github_reviewed_at": "2026-04-10T19:32:12Z",
"nvd_published_at": "2026-04-16T23:16:33Z",
"severity": "HIGH"
}