Skip to main content

Vite EUVDEUVD-2026-38303

| CVE-2026-53571 HIGH
Path Traversal (CWE-22)
2026-06-15 https://github.com/vitejs/vite GHSA-fx2h-pf6j-xcff
8.2
CVSS 4.0 · Vendor: https://github.com/vitejs/vite
Share

Severity by source

Vendor (https://github.com/vitejs/vite) PRIMARY
8.2 HIGH
CVSS:4.0/AV:N/AC:L/AT:P/PR:N/UI:N/VC:H/VI:N/VA:N/SC:N/SI:N/SA:N/E:X/CR:X/IR:X/AR:X/MAV:X/MAC:X/MAT:X/MPR:X/MUI:X/MVC:X/MVI:X/MVA:X/MSC:X/MSI:X/MSA:X/S:X/AU:X/R:X/V:X/RE:X/U:X
vuln.today AI
5.9 MEDIUM

Network-reachable and unauthenticated, but AC:H reflects the required Windows/NTFS + non-default --host conditions; only confidentiality is impacted (file read).

3.1 AV:N/AC:H/PR:N/UI:N/S:U/C:H/I:N/A:N
4.0 AV:N/AC:L/AT:P/PR:N/UI:N/VC:H/VI:N/VA:N/SC:N/SI:N/SA:N

Primary rating from Vendor (https://github.com/vitejs/vite).

CVSS VectorVendor: https://github.com/vitejs/vite

Attack Vector
Network
Attack Complexity
Low
Privileges Required
None
User Interaction
None
Scope
X

Lifecycle Timeline

6
Analysis Updated
Jun 22, 2026 - 18:34 vuln.today
v3 (cvss_changed)
Analysis Updated
Jun 22, 2026 - 18:33 vuln.today
v2 (cvss_changed)
Re-analysis Queued
Jun 22, 2026 - 18:23 vuln.today
cvss_changed
CVSS changed
Jun 22, 2026 - 18:23 NVD
8.2 (HIGH)
Source Code Evidence Fetched
Jun 15, 2026 - 17:50 vuln.today
Analysis Generated
Jun 15, 2026 - 17:50 vuln.today

Blast Radius

ecosystem impact
† from your stack dependencies † transitive graph · vuln.today resolves 4-path depth
  • 34 npm packages depend on vite (30 direct, 4 indirect)
  • 11 npm packages depend on vite-plus (9 direct, 2 indirect)

Ecosystem-wide dependent count for version 8.0.0 and other introduced versions.

DescriptionCVE.org

Summary

The contents of files that are specified by server.fs.deny can be returned to the browser on Windows.

Impact

Only apps that match the following conditions are affected:

  • explicitly exposes the Vite dev server to the network (using --host or server.host config option)
  • the sensitive file exists in the allowed directories specified by server.fs.allow
  • either of:
  • the sensitive file exists in an NTFS volume
  • the dev server is running on Windows and the sensitive file exists in a volume that 8.3 short name generation is enabled (it is enabled by default on system volumes)

Details

Vite’s dev server denies direct access to sensitive files through server.fs.deny, including entries such as .env, .env.*, and *.{crt,pem}. However, on Windows, the deny logic does not correctly normalize NTFS ADS path forms before access checks are applied. Because of this, requests such as /.env::$DATA?raw are treated as allowed paths, while Windows resolves them to the original file's default data stream.

Similar to that, Windows allows accessing a file using a different name with the 8.3 short name compatibility feature. Vite did not reject accessing files via them.

PoC

bash
$ npm create vite@latest
$ cd vite-project/
$ npm install
$ npm run dev

Access via browser at http://localhost:5173/.env::$DATA?raw <img width="388" height="129" alt="deecc1315123883cfd0f9c26a002845a" src="https://github.com/user-attachments/assets/895c6012-4e2e-4a35-babb-69bbf3ee7170" />

Example expected result:

  • /.env::$DATA?raw returns the contents of .env
  • /tls.pem::$DATA?raw returns the contents of tls.pem

AnalysisAI

Arbitrary file disclosure in Vite's development server on Windows allows remote unauthenticated attackers to read sensitive files (such as .env, *.pem, *.crt) that are nominally protected by the server.fs.deny allowlist. The flaw stems from Windows-specific path-form quirks (NTFS Alternate Data Stream syntax ::$DATA and 8.3 short filename aliases) that bypass deny-list normalization, and publicly available exploit code exists in the GHSA advisory. Only dev servers explicitly exposed to the network via --host/server.host are reachable.

Technical ContextAI

Vite is a popular Node.js-based frontend build tool and development server (pkg:npm/vite, pkg:npm/vite-plus) that serves source files from the project directory during development. The server.fs.deny option implements a denylist intended to block direct HTTP access to sensitive files like .env, .env.*, and *.{crt,pem} within otherwise-allowed directories. This issue is a classic CWE-22 Path Traversal variant: the deny-list matcher operates on the URL-supplied filename string without first canonicalizing Windows-specific alternate path forms. NTFS supports Alternate Data Streams accessed via the filename::$DATA syntax, which the Win32 file APIs resolve back to the file's default data stream, and NTFS also generates legacy 8.3 short names (enabled by default on system volumes) that alias the same underlying file. Vite's deny check sees /.env::$DATA?raw as a non-matching filename and serves it, while the OS resolves it to .env.

RemediationAI

Vendor-released patches are available: upgrade vite to 8.0.16, 7.3.5, or 6.4.3 depending on your major version, and upgrade vite-plus to 0.1.24, per https://github.com/vitejs/vite/security/advisories/GHSA-fx2h-pf6j-xcff. If immediate patching is not possible, remove --host from npm run dev invocations and unset server.host so the dev server binds only to localhost, eliminating remote reachability at the cost of losing LAN/mobile preview access. Additionally, do not store production secrets in .env files inside developer working trees on Windows machines that ever expose the dev server, and on NTFS volumes you may disable 8.3 short-name generation with fsutil 8dot3name set 1 (note: this can break legacy applications that rely on short names). Restricting dev-server access via local firewall rules to trusted source IPs is a useful additional control while you roll out the upgrade.

CVE-2024-41713 CRITICAL POC
9.1 Oct 21

A vulnerability in the NuPoint Unified Messaging (NPM) component of Mitel MiCollab through 9.8 SP1 FP2 (9.8.1.201) could

CVE-2024-55591 CRITICAL POC
9.8 Jan 14

FortiOS and FortiProxy contain an authentication bypass via the Node.js websocket module allowing unauthenticated remote

CVE-2023-44487 HIGH POC
7.5 Oct 10

Denial of service against HTTP/2 server implementations allows remote unauthenticated attackers to exhaust server resour

CVE-2014-7205 CRITICAL POC
10.0 Oct 08

Eval injection vulnerability in the internals.batch function in lib/batch.js in the bassmaster plugin before 1.5.2 for t

CVE-2025-59528 CRITICAL POC
10.0 Sep 22

Flowise version 3.0.5 contains a remote code execution vulnerability in the CustomMCP node. The mcpServerConfig paramete

CVE-2017-14849 HIGH POC
7.5 Sep 28

Node.js 8.5.0 before 8.6.0 allows remote attackers to access unintended files, because a change to ".." handling was inc

CVE-2017-5941 CRITICAL POC
9.8 Feb 09

An issue was discovered in the node-serialize package 0.0.4 for Node.js. Rated critical severity (CVSS 9.8), this vulner

CVE-2014-0224 HIGH POC
7.4 Jun 05

OpenSSL before 0.9.8za, 1.0.0 before 1.0.0m, and 1.0.1 before 1.0.1h does not properly restrict processing of ChangeCiph

CVE-2014-3744 HIGH POC
7.5 Oct 23

Directory traversal vulnerability in the st module before 0.2.5 for Node.js allows remote attackers to read arbitrary fi

CVE-2014-9566 HIGH POC
7.5 Mar 10

Multiple SQL injection vulnerabilities in the Manage Accounts page in the AccountManagement.asmx service in the Solarwin

CVE-2013-4660 MEDIUM POC
6.8 Jun 28

The JS-YAML module before 2.0.5 for Node.js parses input without properly considering the unsafe !!js/function tag, whic

CVE-2016-2107 MEDIUM POC
5.9 May 05

The AES-NI implementation in OpenSSL before 1.0.1t and 1.0.2 before 1.0.2h does not consider memory allocation during a

Share

EUVD-2026-38303 vulnerability details – vuln.today

This site uses cookies essential for authentication and security. No tracking or analytics cookies are used. Privacy Policy