Skip to content

Vite Server Options (server.fs.deny) can be bypassed using double forward-slash (//)

High severity GitHub Reviewed Published Jun 1, 2023 in vitejs/vite • Updated Nov 9, 2023

Package

npm vite (npm)

Affected versions

< 2.9.16
>= 3.0.2, < 3.2.7
>= 4.0.0, < 4.0.5
>= 4.1.0, < 4.1.5
>= 4.2.0, < 4.2.3
>= 4.3.0, < 4.3.9

Patched versions

2.9.16
3.2.7
4.0.5
4.1.5
4.2.3
4.3.9

Description

Summary

The issue involves a security vulnerability in Vite, where the server options can be bypassed using a double forward slash (//). This vulnerability poses a potential security risk as it can allow unauthorized access to sensitive directories and files. This document outlines the steps to address and mitigate this issue. Adding Extra References : ## Steps to Fix. Update Vite:Ensure that you are using the latest version of Vite. Security issues like this are often fixed in newer releases.\n\n2. Secure the Server Configuration:In your vite.config.js file, review and update the server configuration options to restrict access to unauthorized requests or directories. For example:```javascript\n // vite.config.js\n export default { server: {\n fs: {\n deny: ['private-directory'] // Restrict access to specific directories

Impact

Only users explicitly exposing the Vite dev server to the network (using --host or server.host config option) are affected, and only files in the immediate Vite project root folder could be exposed.

Patches

Fixed in vite@4.3.9, vite@4.2.3, vite@4.1.5, vite@4.0.5
And in the latest minors of the previous two majors: vite@3.2.7, vite@2.9.16

Details

Vite serve the application with under the root-path of the project while running on the dev mode. By default, vite using server options fs.deny to protected the sensitive information of the file. But, with simply double forward-slash, we can bypass this fs restriction.

PoC

  1. Create a new latest project of vite using any package manager. (here I'm using react and vue templates for tested and pnpm)
  2. Serve the application on dev mode using pnpm run dev.
  3. Directly access the file from url using double forward-slash (//) (e.g: //.env, //.env.local)
  4. Server Options fs.deny restrict successfully bypassed.

Proof Images:
proof-1
proof-2

References

@patak-dev patak-dev published to vitejs/vite Jun 1, 2023
Published by the National Vulnerability Database Jun 1, 2023
Published to the GitHub Advisory Database Jun 6, 2023
Reviewed Jun 6, 2023
Last updated Nov 9, 2023

Severity

High
7.5
/ 10

CVSS base metrics

Attack vector
Network
Attack complexity
Low
Privileges required
None
User interaction
None
Scope
Unchanged
Confidentiality
High
Integrity
None
Availability
None
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:N/A:N

CVE ID

CVE-2023-34092

GHSA ID

GHSA-353f-5xf4-qw67

Source code

Credits

Checking history
See something to contribute? Suggest improvements for this vulnerability.