Attack ChainAIDerived
Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain
-
AccessLure developer to crafted dev-server URL
-
DeliveryDeliver protocol-relative path with leading double slash
-
ExploitPreserved slashes yield external proxy module URL
-
ExecutionBrowser fetches attacker-controlled module
-
PersistExecute script in Vite page context
-
ImpactExfiltrate page data or trigger app actions
Vulnerability Assessment
| Weakness |
CWE
OWASP Top 10:2025
A05:2025 - Injection
ASVS 5.0
V1 - Encoding and Sanitization HTML tag escaping
MITRE ATT&CK
1 technique across 1 tactic: Initial Access The technique list with ATT&CK links and the kill-chain view is part of the Basic plan and up. |
| Exploitation Conditions | Exploitation requires a specific non-default deployment: the application must use custom middleware that passes an unchanged browser request URL directly into server.transformIndexHtml, AND this affects only the Vite DEVELOPMENT server (not production builds). The transformed HTML must contain an inline module <script>, and the request URL must carry attacker-controlled leading double slashes (protocol-relative, e.g. //evil.example.com/...). Limiting factors: a victim developer/user must actively load the attacker-crafted dev-server page (UI:A), the vulnerable custom-middleware pattern must be present (AT:P - not Vite's default behavior), and exposure is confined to the local development environment rather than deployed production assets. |
| Impact | Real-world risk is LOW, and the signals are largely consistent on this. The vendor CVSS 4.0 vector (CVSS:4.0/AV:N/AC:L/AT:P/PR:N/UI:A/VC:L/VI:L/VA:N) yields a base score of only 2.1: although the attack vector is network-facing and requires no authentication (PR:N), it carries AT:P (a specific attack requirement must be met) and UI:A (the victim must actively load a crafted page), with only Low confidentiality and integrity impact and no availability impact. Critically, this is a flaw in Vite's DEVELOPMENT server, not production builds, and it only manifests when an application deploys custom middleware that forwards an unchanged browser request URL into server.transformIndexHtml - a non-default coding pattern. No EPSS score was supplied in the input and the CVE is not on CISA KEV; there is no public exploit identified at time of analysis (no POC flag set), only a security advisory and the fixing PR/commit. The signals do not conflict: a genuinely low CVSS aligns with the absence of KEV/POC and the narrow, developer-environment-only exposure. This is a legitimate XSS (CWE-80) worth patching during normal maintenance, but it is NOT a widespread-exploitation priority - treat it as a low-severity hygiene fix rather than an emergency. |
| Exploit ScenarioDerived | A developer runs a Vite dev server behind custom middleware that passes the raw request URL into transformIndexHtml. An attacker lures that developer into opening a crafted dev-server URL beginning with a double slash (e.g. //evil.example.com/payload.js?...); Vite preserves the leading slashes, producing a protocol-relative proxy module URL in an inline <script>. The victim's browser then fetches and executes the attacker-hosted module within the Vite-served page, exposing page data or performing actions available to the app. No public exploit is identified at time of analysis, though the fixing PR includes regression tests demonstrating the vector. |
Get an e-mail when this CVE is exploited, patched or re-scored. Free account.
Alert meAnalysisAIv1 – Oct 20, 2026
A crafted request URL containing leading double slashes can cause the Vite development server to emit a protocol-relative module URL in transformed HTML, so a victim's browser fetches and executes an attacker-hosted module inside the Vite-served page. Only applications built on custom middleware that forwards an unchanged browser request URL into server.transformIndexHtml are affected, and the exposure is limited to the dev server rather than production builds; the impacted code paths exist in Vite before 6.4.4, 7.3.7, 8.1.6, 8.2.4, and 8.3.3. There is no public exploit identified at time of analysis and the issue is not in CISA KEV; exploitation additionally requires a victim developer to actively load the malicious page, which keeps real-world risk LOW.
RemediationAI
Vendor-released patch: upgrade to Vite 6.4.4, 7.3.7, 8.1.6, 8.2.4, or 8.3.3 depending on your current major/minor line (see https://github.com/vitejs/vite/security/advisories/GHSA-9jrq-w75r-8gcw). Where an immediate upgrade is not possible, remove the vulnerable pattern in custom middleware: do not pass an unvalidated browser request URL into server.transformIndexHtml - strip the query string and collapse any leading multiple slashes first (the upstream fix uses cleanUrl plus a /^\/{2,}/g replacement), trading a small behavioral change to how dev HTML paths are matched for elimination of the protocol-relative URL injection. As additional compensating controls, avoid inline module <script> blocks in HTML served through the dev server (the attack chain requires one, so removing them breaks exploitation, though it may inconvenience development), and never expose the Vite dev server to untrusted networks or open untrusted links while it is running - binding to localhost and requiring developers to restart the server after testing limits the attack surface at the cost of reduced collaboration convenience. Verify the fix by confirming the html-proxy src attribute in transformed output never begins with // as the upstream regression tests do.
Affected VersionsENISA
Affected Packages
Source: OSV (Open Source Vulnerabilities)
Affects your stack
Affects 2 packages in npm
Checking this CVE against your own stacks and servers is part of the Basic plan and up.
Technical ContextAI · show details
Vite's dev-server HTML transform pipeline rewrites inline module scripts in index.html into proxied module URLs (the ?html-proxy&index=N.js form) so the browser can load them as separate modules. To do this, getHtmlFilename resolves the incoming request URL against the project root to find the on-disk HTML file, and the same query-bearing URL is then reused to construct the proxy module identifier. In the vulnerable versions the leading slashes of an attacker-supplied URL were preserved when building that identifier, producing a URL that begins with two slashes. In browser URL semantics a leading // is protocol-relative, meaning the resource is resolved against an external host rather than the dev server origin - so when the transformed page contains an inline module script, the browser fetches and executes the attacker's module with the origin and privileges of the Vite dev page. The weakness is classified CWE-80 (improper neutralization of script-related HTML tags, i.e. basic XSS) because attacker-influenced URL content escapes into executable script markup. The upstream fix adds a cleanUrl() call so path resolution ignores the query string and collapses runs of two or more leading slashes to a single slash before generating the proxy URL, with regression tests asserting the emitted src no longer starts with //.
Know when Vite gets its next vulnerability
- Watch products and get an email when something new is published
- Check this CVE against your own stack and servers
- Exploit and PoC references, threat intelligence from 22 sources
No credit card · 7-day full trial
Severity by source
CVSS:4.0/AV:N/AC:L/AT:P/PR:N/UI:A/VC:L/VI:L/VA:N/SC:N/SI:N/SA:N
AV:N for dev-server reachability and PR:N since no auth is needed, but AC:H because it depends on non-default custom middleware, and UI:R as the victim must load a crafted page; limited C:L/I:L.
Primary rating from Vendor (GitHub_M).
CVSS VectorVendor: GitHub_M
Lifecycle Timeline
2DescriptionCVE.org
Vite is a frontend tooling framework for JavaScript. Prior to 6.4.4, 7.3.7, 8.1.6, 8.2.4, and 8.3.3, applications using custom middleware are vulnerable when they pass an unchanged browser request URL to server.transformIndexHtml. getHtmlFilename uses the query-bearing request URL to resolve an existing local file while preserving attacker-supplied leading slashes in the generated proxy module URL. If the transformed HTML contains an inline module script and a victim browser loads the crafted development-server page, the leading double slash makes the browser fetch and execute an attacker-controlled module in the Vite-served page. This execution can expose sensitive page data or permit critical actions available to the affected application. This issue is fixed in versions 6.4.4, 7.3.7, 8.1.6, 8.2.4, and 8.3.3.
Blast Radius
ecosystem impact- 99 npm packages depend on vite (33 direct, 68 indirect)
- 2 npm packages depend on vite-plus (2 direct, 0 indirect)
Ecosystem-wide dependent count for version 8.3.0 and other introduced versions.
Threat Intelligence Overview
How this decision was reached
The engine reads each signal below and applies a fixed list of rules from top to bottom. The first rule that matches sets the recommended action – like a statement, every line is shown.
What every action level means
SSVC AssessmentENISA
Priority Score
Attack Technique
Cross-Site Scripting occurs when an application accepts untrusted data and sends it to a web browser without proper validation or encoding.
Vite is a frontend tooling framework for javascript. Rated medium severity (CVSS 5.3), this vulnerability is remotely ex
Vite, a provider of frontend development tooling, has a vulnerability in versions prior to 6.2.3, 6.1.2, 6.0.12, 5.4.15,
launch-editor allows users to open files with line numbers in editor from Node.js. Rated high severity (CVSS 7.5), this
Vite is a frontend tooling framework for javascript. Rated high severity (CVSS 7.5), this vulnerability is remotely expl
Vite provides frontend tooling. Rated high severity (CVSS 7.5), this vulnerability is remotely exploitable, no authentic
Vite is a frontend tooling framework for javascript. Rated medium severity (CVSS 6.0), this vulnerability is remotely ex
Vite is a website frontend framework. Rated medium severity (CVSS 6.1), this vulnerability is remotely exploitable, no a
Arbitrary remote code execution in @vitejs/plugin-rsc 0.5.5 and earlier lets unauthenticated network attackers run JavaS
Vitejs Vite before v2.9.13 was discovered to allow attackers to perform a directory traversal via a crafted URL to the v
Path-validation bypass in launch-editor before 2.14.2 on Windows allows unauthenticated remote attackers to pass a craft
Information disclosure in the Vite development server 6.4.4 lets a network attacker retrieve files that server.fs.deny i
Vite is a frontend tooling framework for JavaScript. Rated low severity (CVSS 2.3), this vulnerability is remotely explo
EUVD-2026-105125
GHSA-9jrq-w75r-8gcw
NVD
CVE.org
EPSS
VulDB
Exploit-DB