GitHub Advisoryadvisory · npm

GHSA-j2wh-wrv3-4x4g Unwanted access to the entire file system vulnerability due to a missing check in `staticFiles` HTTP handler

MEDIUM Published 2023-02-16 Modified 2025-02-20 Official page ↗
Aliases
CVE-2025-27098
Ecosystem
npm
Packages
@graphql-mesh/cli, @graphql-mesh/http
Severity
Moderate
CVSS vector
CVSS:3.1/AV:N/AC:H/PR:N/UI:R/S:C/C:L/I:L/A:L
Weaknesses
CWE-22
Reviewed
2023-02-16

Affected packages

• npm @graphql-mesh/cli: >= 0.78.0, < 0.82.22 → fixed in 0.82.22 • npm @graphql-mesh/http: < 0.3.19 → fixed in 0.3.19

Description

Summary Missing check vulnerability in the static file handler allows any client to access the files in the server's file system Details When `staticFiles` is set in the `serve` settings in the configuration file, the following handler doesn't check if `absolutePath` is still under the directory provided as `staticFiles`; ```ts if (staticFiles) { router.get('/:relativePath+', async request => { let { relativePath } = request.params; if (!relativePath) { relativePath = 'index.html'; } const absolutePath = path.join(baseDir, staticFiles, relativePath); if (absolutePath.includes(staticFiles) && (await pathExists(absolutePath))) { const readStream = fs.createReadStream(absolutePath); return new Response(readStream as any, { status: 200, }); } return undefined; }); ``` Example scenario To reproduce it, set `staticFiles` to the relative path of a directory in `.meshrc.yml`; ```yml serve: staticFiles: ./public ``` Then start the server with `mesh dev`, and browse to `/..%2fpackage.json` then you will see the content of `package.json`. You can even go deeper to see sensitive data; `/..%2f..%2f..%2f..%2f..%2f..%2f..%2f..%2f..%2f..%2f..%2f..%2fetc/passwd` Impact and solution If `staticFiles` is set under `serve` in the configuration file. you have two options to fix vulnerability; • Update `@graphql-mesh/cli` to a version higher than `0.82.21`, and if you use `@graphql-mesh/http`, update it to a version higher than `0.3.18` • Remove `staticFiles` option from the configuration, and use other solutions to serve static files. Credits Thanks [email protected] for reporting this vulnerability with details

Related

Alias · CVE (1)

  • CVE-2025-27098 GraphQL Mesh is a GraphQL Federation framework and gateway for both GraphQL Federation and non-GraphQL Federation subgraphs, non-GraphQL… vulnerability

Weakness · CWE (1)

  • CWE-22 Improper Limitation of a Pathname to a Restricted Directory weakness

References