GitHub Advisoryadvisory · npm

GHSA-3p34-w4f6-5xh2 better-helperjs Vulnerable to Directory Traversal via String Prefix Bypass in Static Server

HIGH Published 2026-06-26 Modified 2026-06-26 Official page ↗
Ecosystem
npm
Packages
better-helperjs
Severity
High
CVSS vector
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:N/A:N
Weaknesses
CWE-22
Reviewed
2026-06-26

Affected packages

• npm better-helperjs: < 3.0.6 → fixed in 3.0.6

Description

Summary A directory traversal vulnerability exists in the production static file server of `better-helperjs` (`= 3.0.6` Proof of Concept To reproduce this locally on a vulnerable installation: 1. Assume the framework static configuration serves from a `.dist/client` directory. 2. Build the project and create an adjacent prefix secret simulating sensitive deployment structure: ```bash npm run build mkdir -p dist/client-secrets echo "EXPOSED_SECRET" > dist/client-secrets/secret.txt ``` 3. Start the application in Production mode (`NODE_ENV=production tsx server.ts`). 4. Using an HTTP client that doesn't pre-normalize `/../` paths (e.g., `netcat` or raw sockets), send a GET request spanning into the prefix-sharing adjacent folder: ```http GET /%2e%2e%2fclient-secrets/secret.txt HTTP/1.1 Host: localhost:4174 Connection: close ``` 5. The server incorrectly validates the path and responds with `HTTP/1.1 200 OK` exposing `EXPOSED_SECRET`. *(Note: Developer environment `npm run dev` servers are immune as static requests are handled defensively by Vite's Dev Middlewares. This vulnerability only triggers upon `production` starts).* Remediation / Patches The path validation block has been updated to mandate exact path separation bounds by enforcing `path.sep` onto the evaluated traversal string. ```typescript // Enforces separator OR exact root matches preventing prefix extension if (!resolved.startsWith(root + path.sep) && resolved !== root) { return null; } ``` Workarounds If upgrading is temporarily impossible, users can safeguard their environment by ensuring no sensitive directories are deployed adjacent to their static build `client` directories sharing the identical word-prefix string.

Related

Weakness · CWE (1)

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

References