LOWCVSS v3.1 3.3Vulnerability

CVE-2026-113651

## Summary The `uploadfs` library's local storage backend does not validate or sanitize user-supplied paths. The `prefixPath()` helper only strips double slashes (`//`) and the backend performs direct string concatenation (`uploadsPath + path`). An attacker can inject `../` sequences to escape the intended uploads directory, resulting in arbitrary file read, write, and delete on the host filesystem. --- ## Details ### Root Cause `packages/uploadfs/uploadfs.js:652-655` https://github.com/apostrophecms/apostrophe/blob/main/packages/uploadfs/uploadfs.js#L652-L655 ```javascript function prefixPath(path) { // Resolve any double // that results from the prefix return (self.prefix + path).replace(/\/\//g, '/'); } ``` `packages/uploadfs/lib/storage/local.js` https://github.com/apostrophecms/apostrophe/blob/main/packages/uploadfs/lib/storage/local.js#L92-L95 https://github.com/apostrophecms/apostrophe/blob/main/packages/uploadfs/lib/storage/local.js#L102-L104 https://github.com/apostrophecms/apostrophe/blob/main/packages/uploadfs/lib/storage/local.js#L106-L108 ```javascript copyIn: function(localPath, path, options, callback) { const uploadPath = uploadsPath + path; // [VULNERABLE] return copyFile(localPath, uploadPath, callback); }, streamOut: function(path, options) { return fs.createReadStream(uploadsPath + path); // [VULNERABLE] }, remove: function(path, callback) { const uploadPath = uploadsPath + path; // [VULNERABLE] fs.unlink(uploadPath, callback); ``` - `prefixPath()` does **not** normalize paths or reject `../`. - The local backend concatenates the path directly into the filesystem call. - Node.js resolves `/app/uploads/../../../tmp/pwned.txt` → `/tmp/pwned.txt`. --- ## Proof of Concept (PoC) Here is the poc files https://drive.proton.me/urls/AKY4V5S0JR#Vw6XJdVCZafk ### Build and run ```bash docker load < apostrophe-uploadfs-poc.tar docker run -d -p 3000:3000 --name uploadfs-poc apostrophe-uploadfs-poc python3 exploit.p

Properties

Severity
low
Summary
ApostropheCMS: Path traversal in uploadfs
Nvd fetched at
2026-10-20T21:14:08.448323+00:00
Cvss severity
LOW
Cvss score
3.3
Retrieved at
2026-10-21T01:23:59+00:00
Ghsa published
2026-10-20T18:21:59Z
Source url
https://github.com/advisories/GHSA-gmfx-5g6x-rr72
Ghsa updated
2026-10-20T18:22:01Z
Ghsa id
GHSA-gmfx-5g6x-rr72
Last source
GitHub Advisory Database
Score
3.3
Cvss version
3.1
Cve id
CVE-2026-113651
Cvss vector
CVSS:3.1/AV:N/AC:H/PR:H/UI:N/S:U/C:L/I:L/A:N
First seen by Signal
2026-10-20T21:15:35+00:00
Is ghsa only
false
Vector
CVSS:3.1/AV:N/AC:H/PR:H/UI:N/S:U/C:L/I:L/A:N
Published at
2026-10-20T17:17:35.940
Last modified
2026-10-20T19:53:10.247

Related Entities (3)

AFFECTS (1)

→[Software]npm/uploadfs

VULNERABLE_TO (1)

←[Software]npm/uploadfs

Explore deeper with Ninja Signal's threat intelligence graph

CVE-2026-113651 (CVSS v3.1 3.3) — Ninja Signal Threat Intelligence | Ninja Signal