Security Digest · Vulnerability record

CVE-2026-47429: When Vitest UI server is listening, arbitrary file can be read and executed

Vitest is a testing framework powered by Vite.

CVSS 9.8 Critical EPSS 0.9% · p59

Should you act?

Critical and remotely reachable

No known exploitation yet, but it is network-reachable without credentials. This signal is computed from CISA KEV, EPSS and CVSS data; it is not an editorial verdict.

  • Not in CISA KEV, but CISA’s SSVC assessment records a public proof-of-concept, so attack code exists.
  • EPSS 0.9%, percentile 59: FIRST’s model estimates a 0.9% chance of exploitation activity in the next 30 days, higher than 59% of all scored CVEs (moderate). EPSS is a probability, not a verdict.
  • Remotely reachable with no login and no user interaction. If the vulnerable service is exposed to the internet, prioritize it.
  • Only applies if your dependency tree includes vitest (npm) >= 4.0.0, < 4.1.0, fixed in 4.1.0; vitest (npm) < 3.2.6, fixed in 3.2.6. Check your lockfile, including transitive dependencies.

What it is

Vitest is a testing framework powered by Vite. Prior to 3.2.5 and 4.1.0, the Vitest UI/API server on Windows used isFileServingAllowed incorrectly for /vitestattachment, allowing \\?\\..\\ path traversal to read files outside the project; exposed API write and rerun features such as saveTestFile and rerun could also allow arbitrary script execution. This issue is fixed in versions 3.2.5 and 4.1.0.

From the GitHub advisory

Summary Arbitrary file can be read on Windows when Vitest UI server is listening, especially when exposed to the network.

Impact Only users that match either of the following conditions are affected:

- explicitly exposes the Vitest UI server to the network (using --api.host or api.host config option) - running the Vitest UI or Browser Mode on Windows

Details The API handler for /vitestattachment uses the deprecated isFileServingAllowed incorrectly. https://github.com/vitest-dev/vitest/blob/eb1abf08573032a532015b999ad3501c5e89e3bb/packages/ui/node/index.ts#L77 The function expects the passed value to use cleanUrl after the check before file system related operation. Because of this, it is possible to bypass the check by \\?\\..\\. This is not possible on Linux as Linux errors if a directory named ? does not exist.

A similar problem exists in other places as well. - https://github.com/vitest-dev/vitest/blob/eb1abf08573032a532015b999ad3501c5e89e3bb/packages/vitest/src/api/setup.ts#L103-L105 - https://github.com/vitest-dev/vitest/blob/eb1abf08573032a532015b999ad3501c5e89e3bb/packages/vitest/src/api/setup.ts#L119-L121 - https://github.com/vitest-dev/vitest/blob/eb1abf08573032a532015b999ad3501c5e89e3bb/packages/browser/src/node/commands/fs.ts#L10-L11 - https://github.com/vitest-dev/vitest/blob/eb1abf08573032a532015b999ad3501c5e89e3bb/packages/browser/src/node/plugin.ts#L194-L196 - https://github.com/vitest-dev/vitest/blob/eb1abf08573032a532015b999ad3501c5e89e3bb/packages/browser/src/node/rpc.ts#L115-L121

Weakness type: CWE-22, CWE-862.

Product: vitest (npm) · Assigned by: GitHub_M · Published: 2026-07-14

Affected and fixed versions

EcosystemPackageVulnerableFirst fixed
npmvitest>= 4.0.0, < 4.1.04.1.0
npmvitest< 3.2.63.2.6
VendorProductAffected versions (per CVE record)
vitest-devvitest< 3.2.5, >= 4.0.0, < 4.1.0

Severity scores

Scored byCVSSScoreVector
GitHub_M3.19.8 CriticalCVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H
GitHub3.19.8 CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H
  • Attack vector: network (remotely reachable)
  • Attack complexity: low
  • Privileges required: none (no login)
  • User interaction: none
  • Scope: unchanged

CVSS measures how bad a flaw is if exploited, not how likely exploitation is. Read it next to the exploitation data below.

Exploitation and urgency

  • CISA KEV: not listed (no confirmed in-the-wild exploitation known to CISA).
  • CISA SSVC assessment: exploitation poc, automatable yes, technical impact total.
  • FIRST EPSS (model of 2026-10-21): 0.88% probability of exploitation activity in the next 30 days; percentile 59.

Timeline

  • — GitHub-reviewed advisory GHSA-5xrq-8626-4rwp published (critical)
  • — CVE record published by GitHub_M
  • — CVE record last updated

Sources and references

Original sources first. Version and fix details should always be confirmed against the vendor or project advisory.

Vulnerability records

  1. GitHub Advisory GHSA-5xrq-8626-4rwp github.com
  2. CVE.org record CVE-2026-47429 cve.org
  3. NVD entry CVE-2026-47429 nvd.nist.gov

Other references from the CVE record and advisory

  1. github.com github.com
  2. github.com github.com
  3. github.com github.com
  4. github.com github.com
  5. github.com github.com
  6. github.com github.com
  7. github.com github.com
  8. github.com github.com
  9. github.com github.com
  10. github.com github.com
  11. github.com github.com
  12. github.com github.com
  13. github.com github.com

Critical npm advisories · Today’s Security Digest