Get a Demo

Let's Patch It!

Book a short call with one our specialists, we'll walk you through how Endor Patches work, and ask you a few questions about your environment (like your primary programming languages and repository management). We'll also send you an email right after you fill out the form, feel free to reply with any questions you have in advance!

CVE

CVE-2026-39363

Vite Vulnerable to Arbitrary File Read via Vite Dev Server WebSocket
Back to all
CVE

CVE-2026-39363

Vite Vulnerable to Arbitrary File Read via Vite Dev Server WebSocket

Summary

server.fs check was not enforced to the fetchModule method that is exposed in Vite dev server's WebSocket. 

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)
  • WebSocket is not disabled by server.ws: false

Arbitrary files on the server (development machine, CI environment, container, etc.) can be exposed.

Details

If it is possible to connect to the Vite dev server’s WebSocket without an Origin header, an attacker can invoke fetchModule via the custom WebSocket event vite:invoke and combine file://... with ?raw (or ?inline) to retrieve the contents of arbitrary files on the server as a JavaScript string (e.g., export default "...").

The access control enforced in the HTTP request path (such as server.fs.allow) is not applied to this WebSocket-based execution path.

PoC

  1. Start the dev server on the target 

   Example (used during validation with this repository):

   ```bash

   pnpm -C playground/alias exec vite --host 0.0.0.0 --port 5173

   ```

  1. Confirm that access is blocked via the HTTP path (example: arbitrary file)

   ```bash

   curl -i 'http://localhost:5173/@fs/etc/passwd?raw'

   ```

   Result: 403 Restricted (outside the allow list)

   <img width="3898" height="1014" alt="image" src="https://github.com/user-attachments/assets/f6593377-549c-45d7-b562-5c19833438af" />

  1. Confirm that the same file can be retrieved via the WebSocket path

   By connecting to the HMR WebSocket without an Origin header and sending a vite:invoke request that calls fetchModule with a file://... URL and ?raw, the file contents are returned as a JavaScript module.

  <img width="1049" height="296" alt="image" src="https://github.com/user-attachments/assets/af969f7b-d34e-4af4-8adb-5e2b83b31972" />

  <img width="1382" height="955" alt="image" src="https://github.com/user-attachments/assets/6a230d2e-197a-4c9c-b373-d0129756d5d7" />

Package Versions Affected

Package Version
patch Availability
No items found.

Automatically patch vulnerabilities without upgrading

Fix Without Upgrading
Detect compatible fix
Apply safe remediation
Fix with a single pull request

CVSS Version

Severity
Base Score
CVSS Version
Score Vector
C
H
U
8.2
-
4.0
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
C
H
U
0
-
C
H
U
7.5
-
3.1
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:N/A:N

Related Resources

No items found.

References

https://github.com/vitejs/vite/security/advisories/GHSA-p9ff-h696-f583, https://nvd.nist.gov/vuln/detail/CVE-2026-39363, https://github.com/vitejs/vite/pull/22159, https://github.com/vitejs/vite/commit/f02d9fde0b195afe3ea2944414186962fbbe41e0, https://github.com/vitejs/vite, https://github.com/vitejs/vite/releases/tag/v6.4.2, https://github.com/vitejs/vite/releases/tag/v7.3.2, https://github.com/vitejs/vite/releases/tag/v8.0.5

Severity

7.5

CVSS Score
0
10

Basic Information

Ecosystem
Base CVSS
7.5
EPSS Probability
0.06638%
EPSS Percentile
0.91399%
Introduced Version
8.0.0,8.0.0-beta.0,8.0.0-beta.13,7.1.11,7.0.0-beta.0,6.0.0-alpha.0,0
Fix Available
8.0.5,7.3.2,6.4.2,3.179.1-r3,3.179.1-r2,8.0.11-r0,22.0.4-r9,23.0.3-r11

Fix Critical Vulnerabilities Instantly

Secure your app without upgrading.
Fix Without Upgrading