{ "canonical_id": "vite--CVE-2023-34092", "system_id": "vite", "display_name": "Vite", "category": "frameworks", "advisory_mode": "core", "title": "Vite Server Options (server.fs.deny) can be bypassed using double forward-slash (//)", "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.\n\n### 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.\\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.\n\n### Impact\nOnly users explicitly exposing the Vite dev server to the network (using `--host` or the [`server.host` config option](https://vitejs.dev/config/server-options.html#server-host)) are affected and only files in the immediate Vite project root folder could be exposed.\\n\\n### Patches\\nFixed 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** and vite@**2.9.16**.\n\n ### Details \nVite serves the application with under the root-path of the project while running on the dev mode. By default, Vite uses the server option fs.deny to protect sensitive files. But using a simple double forward-slash, we can bypass this restriction. \\n\\n### PoC\\n1. Create a new latest project of Vite using any package manager. (here I'm using react and vue templates and pnpm for testing)\\n2. Serve the application on dev mode using `pnpm run dev`.\\n3. Directly access the file via url using double forward-slash (`//`) (e.g: `//.env`, `//.env.local`)\\n4. The server option `fs.deny` was successfully bypassed.\n\nProof Images: ![proof-1](https://user-images.githubusercontent.com/30733517/241105344-6ecbc7f6-57b7-45c7-856a-6421a577dda1.png)\\n![proof-2](https://user-images.githubusercontent.com/30733517/241105349-ab9561e7-8aff-4f29-97f9-b784e673c122.png)", "published_at": "2023-06-06T02:01:39Z", "updated_at": "2024-08-09T19:14:57Z", "severity": "low", "cvss_score": 3.1, "exploit_status": "unknown", "source_confidence": "official", "official_source_url": "https://github.com/vitejs/vite/security/advisories/GHSA-353f-5xf4-qw67", "secondary_source_urls": [ "https://nvd.nist.gov/vuln/detail/CVE-2023-34092", "https://github.com/vitejs/vite/pull/13348", "https://github.com/vitejs/vite/commit/813ddd6155c3d54801e264ba832d8347f6f66b32", "https://github.com/vitejs/vite", "https://security.snyk.io/package/npm/vite/3.2.0-beta.4" ], "aliases": [ "CVE-2023-34092", "GHSA-353f-5xf4-qw67" ], "cve_ids": [ "CVE-2023-34092" ], "ghsa_ids": [ "GHSA-353f-5xf4-qw67" ], "osv_ids": [ "GHSA-353f-5xf4-qw67" ], "affected_versions": [ "introduced=0, fixed<2.9.16", "introduced=3.0.2, fixed<3.2.7", "introduced=4.0.0, fixed<4.0.5", "introduced=4.1.0, fixed<4.1.5", "introduced=4.2.0, fixed<4.2.3", "introduced=4.3.0, fixed<4.3.9" ], "fixed_versions": [ "2.9.16", "3.2.7", "4.0.5", "4.1.5", "4.2.3", "4.3.9" ], "package_name": "vite", "render_markdown": true, "case_path": "07-framework-security/frameworks/vite/cases/vite-cve-2023-34092.md", "secure_code_topics": [ "dependency-upgrade-policy", "file-upload-validation", "proxy-trust-boundary" ], "status": "generated", "triage_reasons": [], "verification_status": "triage-manual", "verification_mode": "synthetic", "last_verified_at": null, "last_run_id": null, "evidence_bundle": null, "historical_status": null, "latest_status": null, "browser_evidence": { "required": false, "present": false, "refs": [] }, "repro_profile_id": "vite-proxy-boundary", "artifact_mode": "official-source", "blocked_reason": null, "metadata": { "source_names": [ "OSV Vite" ], "source_kinds": [ "osv-batch" ], "candidate_count": 1 } }