Loading...
Skip to main content

CVE-2026-73653 — Vulnerability in @vitest/browser — CVE Details

CRITICAL

@vitest/browser: Browser Mode provider commands bypass the file-access permission gate

Published July 21, 2026Updated September 10, 2026Source: osv

Summary

## Summary Browser Mode exposes a set of built-in "commands" that run on the Node.js side of the test runner and can touch the local filesystem (taking screenshots, managing Playwright traces, uploading files for `<input type="file">`, comparing screenshots). Several of these commands accept a file path from the browser and act on it without checking the `allowWrite` permission gate and without confining the path to the project directory. A client that can reach the Browser Mode API can therefore read, create, overwrite, or delete files anywhere the Vitest process can access, even when `allowWrite` is `false`. This matters most when the Browser Mode API is exposed to the network (for example `test.api.host` is set, or the dev server is reachable from another machine or origin). In that configuration `allowWrite` defaults to `false` precisely to block file access, and these commands bypass that protection. On a default localhost-only setup with trusted test code, there is no untrusted party in a position to exploit it. The gap still matters wherever you rely on `allowWrite: false` to contain untrusted test code, because these commands ignore that flag. ## Affected commands and impact | Command | Operation | Impact | |---|---|---| | `upload` (Playwright + WebdriverIO) | Read | Arbitrary local file read; contents are loaded into the page and readable by test code. Highest-impact case. | | `takeScreenshot` (Playwright + WebdriverIO) | Write | Writes a PNG to an arbitrary path (absolute path used verbatim), creating parent directories. | | `screenshotMatcher` | Write | Writes reference/diff PNGs; directory derived from client path allows partial traversal. | | `stopChunkTrace` | Write | Writes a Playwright trace `.zip` to a path escapable via `../` in the trace name. | | `deleteTracing` | Delete | Deletes arbitrary files by path. | | `annotateTraces` | Read (disclosure) | Records a client-controlled attachment path that the reporter copies into the attachments directory, disclosing file contents. | The writes do not let an attacker choose the file contents (they produce PNG images or trace archives), so the integrity impact is creating, overwriting, or deleting a file at an arbitrary path rather than writing a chosen payload. The reads (`upload`, `annotateTraces`) are more serious because they expose the full contents of an arbitrary file. The fix adds, to every file-touching provider command, an `allowWrite` check for write/delete operations and path confinement to the project root (matching the existing `fs` command pattern), so client-supplied absolute paths and `../` traversal are rejected.

Advisory Timeline

  • First published July 21, 2026 (83 days ago).
  • Last revised September 10, 2026 — 50 days after initial publication.

Remediation

Upgrade to the fixed version using your package manager.

npm
Update @vitest/browser to 5.0.0-beta.6 or later
npm install @vitest/browser@5.0.0-beta.6
npm
Update @vitest/browser to 4.1.10 or later
npm install @vitest/browser@4.1.10
npm
Update @vitest/browser to 3.2.7 or later
npm install @vitest/browser@3.2.7

After upgrading, run your dependency scanner again to confirm the vulnerability is resolved.

Affected Packages (3)

Affects 1 ecosystem: npm (1).

PackageEcosystemAffectedFixed In
@vitest/browser
npm
All versions5.0.0-beta.6
@vitest/browser
npm
All versions4.1.10
@vitest/browser
npm
All versions3.2.7

Vulnerability Classification

Common Weakness Enumeration (CWE) identifiers for this vulnerability type.

CVSS Score Breakdown

What the CVSS (Common Vulnerability Scoring System) 9.4 score means for each attack dimension.

Attack Vector
Network
Attack Complexity
Low
Privileges Required
None
User Interaction
None
Scope
Unchanged
Confidentiality
High
Integrity
High
Availability
Low

CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:L

Frequently Asked Questions

What is CVE-2026-73653?
@vitest/browser: Browser Mode provider commands bypass the file-access permission gate This vulnerability has been assigned a severity rating of CRITICAL (CVSS score: 9.4/10).
How do I check if my project is affected by CVE-2026-73653?
CVE-2026-73653 affects @vitest/browser. Use GeekWala's free vulnerability scanner to check your dependencies against CVE-2026-73653 and 200,000+ other known vulnerabilities.

Severity & Exploitability

CVSS Score
9.4

Exploitation is straightforward and causes maximum impact. Patch immediately.

Also Known As

GHSA-p63j-vcc4-9vmv

Related CVEs

  • CVE-2026-47428
    CRITICAL

    Vitest browser mode serves unsanitized otelCarrier query parameter as inline script

  • CVE-2026-53633
    CRITICAL

    Vitest Browser: Exposed Browser Mode API Can Proxy CDP and Overwrite Config Files, Leading to RCE

  • CVE-2026-107722
    CRITICAL

    fast-jwt: Incomplete patch of CVE-2026-34950: Non-whitespace key-prefix re-enables RSA→HS256 algorithm confusion

  • CVE-2026-108261
    CRITICAL

    TinaCMS admin preview iframe loads an attacker-controlled origin from the URL fragment

Check if you're affected

Scan your dependencies to see if this vulnerability affects your projects.

Scan Your Dependencies