Skip to content

/api/filesystem/pathexists exposes arbitrary‑path probing outside configured libraries

Moderate
advplyr published GHSA-xj8h-wrw2-g829 Jun 1, 2025

Package

FileSystemController.js 

Affected versions

<= 2.23.0

Patched versions

2.24.0

Description

Summary

Short summary of the problem. Make the impact and severity as clear as possible. For example: An unsafe deserialization vulnerability allows any unauthenticated user to execute arbitrary code on the server.

Details

server/controllers/FileSystemController.js → checkPathExists() accepts a raw filepath in the request body and passes it straight to fs.pathExists() without ensuring the path is inside any library root.
Any authenticated user with canUpload=true can therefore test the existence of any file on the operating system that the service has access to

PoC

Modify the web request to the /api/filesystem/pathexists with any path on the system outside of the libraries.
For example, I created a test folder in the users/default/desktop dir.
I should not be able to reach this via a web request
{
"filepath":"C:/users/Default/Desktop/Test FOlder"
}

Impact

Information leak of files on the host

Severity

Moderate

CVSS overall score

This score calculates overall vulnerability severity from 0 to 10 and is based on the Common Vulnerability Scoring System (CVSS).
/ 10

CVSS v3 base metrics

Attack vector
Network
Attack complexity
Low
Privileges required
Low
User interaction
None
Scope
Unchanged
Confidentiality
Low
Integrity
None
Availability
None

CVSS v3 base metrics

Attack vector: More severe the more the remote (logically and physically) an attacker can be in order to exploit the vulnerability.
Attack complexity: More severe for the least complex attacks.
Privileges required: More severe if no privileges are required.
User interaction: More severe when no user interaction is required.
Scope: More severe when a scope change occurs, e.g. one vulnerable component impacts resources in components beyond its security scope.
Confidentiality: More severe when loss of data confidentiality is highest, measuring the level of data access available to an unauthorized user.
Integrity: More severe when loss of data integrity is the highest, measuring the consequence of data modification possible by an unauthorized user.
Availability: More severe when the loss of impacted component availability is highest.
CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:L/I:N/A:N

CVE ID

No known CVE

Weaknesses

No CWEs

Credits