CVE-2026-47428 Vitest browser mode serves unsanitized otelCarrier query parameter as inline script
Attackers can execute arbitrary JavaScript in Vitest Browser Mode via unsanitized query parameters, potentially stealing API tokens.
- Exploited in the wild
- Not known
- Login needed
- Not needed
- Attackable
- Over the internet
- Victim action needed
- A user has to click or open something
- Fix
- Available
What is CVE-2026-47428?
CVE-2026-47428 is a critical cross-site scripting vulnerability in vitest-dev vitest, published on 14 Jul 2026. An attacker can exploit it over the internet without logging in, and only if a user opens a file or follows a link.
Official description
Vitest is a testing framework powered by Vite. From 4.0.17 until 4.1.6 and 5.0.0-beta.3, Vitest Browser Mode served /__vitest_test__/ with the otelCarrier query parameter inserted directly into an inline module script, allowing a crafted browser-runner URL to execute arbitrary JavaScript in the Vitest server origin and recover VITEST_API_TOKEN for authenticated API calls. This issue is fixed in versions 4.1.6 and 5.0.0-beta.3.
Weakness: CWE-79
Which versions are affected by CVE-2026-47428?
4 open source packages ship an affected version, including @vitest/browser.
| Package | Affected | Fixed in |
|---|---|---|
@vitest/browser npm | From 4.0.17 | 4.1.6 |
@vitest/browser npm | From 4.0.17 | 4.1.6 |
@vitest/browser npm | From 5.0.0-beta.0 | 5.0.0-beta.3 |
@vitest/browser npm | From 5.0.0-beta.0 | 5.0.0-beta.3 |
How do I fix CVE-2026-47428?
Upgrade @vitest/browser to a fixed version for your release line: 4.1.6 or 5.0.0-beta.3.
Escape output for the context it lands in and set a strict Content Security Policy. Upgrading the affected component is the real fix. More about Cross-site scripting.
Is CVE-2026-47428 being exploited?
It is not confirmed as exploited in the wild, but public exploit code for CVE-2026-47428 exists.
Sources
Also known as GHSA-2h32-95rg-cppp, MINI-2jrf-q37h-x2x3, MINI-4rr3-8c8r-v8h2.