highVulnerability

GHSA-ghvf-qf6h-g8x5

## Executive Summary Two vulnerabilities were identified and chained to achieve authenticated remote code execution The first vulnerability allows any authenticated admin to redirect the file upload storage root to an arbitrary path on disk including the application directory itself by supplying an unsanitized `documentRoot` value to the `storages:update` API. The second vulnerability allows the same admin to trigger Node.js `require()` on any absolute filesystem path via the `pm:enable` plugin manager endpoint, which accepts user-supplied paths with no validation (Local File Inclusion). Chained together, these two flaws allow an attacker with admin credentials to write a malicious file and have it trigger on the system achieving remote code execution. A working proof-of-concept exploit chain was developed and verified, requiring only a valid admin session token. ## VULN 1: Arbitrary File Write via `storages:update` documentRoot Manipulation ### Summary The file-manager plugin's storage update endpoint accepts an arbitrary `documentRoot` value without validation. An authenticated admin can overwrite a storage record's `documentRoot` to any absolute path on the filesystem, then upload files that land anywhere the Node.js process (root in default Docker deployments) can write including the web root, the application source directory, or system paths. ### Vulnerable Components `packages/plugins/@nocobase/plugin-file-manager/src/server/storages/local.ts` | `getDocumentRoot()` L24–27 | `packages/plugins/@nocobase/plugin-file-manager/src/server/actions/attachments.ts` | `createMiddleware()` Server route: `POST /api/storages:update` Server route: `POST /api/attachments:upload` ### Root Cause `getDocumentRoot()` resolves the `documentRoot` field from the storage record: ```javascript // packages/plugins/@nocobase/plugin-file-manager/src/server/storages/local.ts const { documentRoot = process.env.LOCAL_STORAGE_DEST || path.join(process.cwd(), 'storage', 'up

Properties

ghsa_id
GHSA-ghvf-qf6h-g8x5
summary
NocoBase: Arbitrary File Write chained with Local file Inclusion leads to Remote code execution
severity
high
cve_id
GHSA-ghvf-qf6h-g8x5
is_ghsa_only
true
ghsa_published
2026-08-20T18:42:21Z
source_url
https://github.com/advisories/GHSA-ghvf-qf6h-g8x5
ghsa_updated
2026-08-20T18:42:24Z

Related Entities (7)

HAS_WEAKNESS (4)

[Weakness]Inclusion of Functionality from Untrusted Control Sphere
[Weakness]External Control of File Name or Path
[Weakness]Generation of Error Message Containing Sensitive Information
[Weakness]Unrestricted Upload of File with Dangerous Type

REPORTED_BY (1)

[Source]GitHub Advisory Database

VULNERABLE_TO (1)

[Software]npm/@nocobase/server

AFFECTS (1)

[Software]npm/@nocobase/server

Explore deeper with Ninja Signal's threat intelligence graph

GHSA-ghvf-qf6h-g8x5 — Ninja Signal Threat Intelligence | Ninja Signal