Описание
Vitest is a testing framework powered by Vite. From 3.0.0 until 3.2.5, 4.1.8, and 5.0.0-beta.4, Vitest Browser Mode exposed a cdp() API that forwarded raw Chrome DevTools Protocol methods without being gated by allowWrite or allowExec, allowing a remote client with exposed browser API metadata to use CDP Page.setDownloadBehavior and Runtime.evaluate to overwrite vite.config.ts and execute attacker-controlled Node.js code. This issue is fixed in versions 3.2.5, 4.1.8, and 5.0.0-beta.
A flaw was found in Vitest Browser Mode, a component of the Vitest testing framework. The cdp() API exposed raw Chrome DevTools Protocol (CDP) methods without proper security restrictions. This vulnerability allows a remote attacker, with access to browser API metadata, to leverage CDP functions like Page.setDownloadBehavior and Runtime.evaluate. This can lead to overwriting configuration files and executing arbitrary Node.js code, resulting in remote code execution.
Отчет
Red Hat has assessed this flaw against its shipping products. The vulnerability requires Vitest Browser Mode (the @vitest/browser package) to be installed AND explicitly enabled (browser.enabled: true), paired with a CDP-capable browser provider such as Playwright Chromium, an actively running test session, and the Browser Mode API server exposed on a network-reachable interface (--browser.api.host=0.0.0.0). It does not affect the core vitest test runner used without Browser Mode. Only one Red Hat shipping product, Red Hat Trusted Artifact Signer (RHTAS) console UI, lists @vitest/browser as a development dependency, used solely to run its own component test suite. Red Hat has confirmed that this product's test configuration does not enable Browser Mode (browser.enabled is not set to true), no CI invocation passes the required --browser flag, no CDP-capable provider package is installed, and the @vitest/browser package is excluded from the final shipped container image (present only in a discarded multi-stage build layer). No Red Hat product installs, enables, or exposes Vitest Browser Mode's CDP proxy in production.
Меры по смягчению последствий
No mitigation is required for Red Hat shipping products, as Vitest Browser Mode and its CDP proxy feature are not enabled or reachable in any Red Hat product's build, test, or runtime configuration. Development teams that do enable Vitest Browser Mode with a CDP-capable provider (Playwright or WebdriverIO) should avoid exposing the Browser Mode API server to untrusted networks (do not set --browser.api.host=0.0.0.0 or equivalent) and should upgrade to @vitest/browser 3.2.5, 4.1.8, 5.0.0-beta.4, or later, and vite-plus 0.1.24 or later.
Затронутые пакеты
| Платформа | Пакет | Состояние | Рекомендация | Релиз |
|---|---|---|---|---|
| Red Hat Trusted Artifact Signer | rhtas/rhtas-console-ui-rhel9 | Not affected |
Показывать по
Ссылки на источники
Дополнительная информация
Статус:
EPSS
8.1 High
CVSS3
Связанные уязвимости
Vitest is a testing framework powered by Vite. From 3.0.0 until 3.2.5, 4.1.8, and 5.0.0-beta.4, Vitest Browser Mode exposed a cdp() API that forwarded raw Chrome DevTools Protocol methods without being gated by allowWrite or allowExec, allowing a remote client with exposed browser API metadata to use CDP Page.setDownloadBehavior and Runtime.evaluate to overwrite vite.config.ts and execute attacker-controlled Node.js code. This issue is fixed in versions 3.2.5, 4.1.8, and 5.0.0-beta.
Vitest Browser: Exposed Browser Mode API Can Proxy CDP and Overwrite Config Files, Leading to RCE
EPSS
8.1 High
CVSS3