{"id":"EUVD-2026-105148","enisaUuid":"4671a013-1357-36c8-b989-ddd74eca2e39","description":"Vitest is a Vite-native testing framework for JavaScript and TypeScript projects. From 2.1.0-beta.7 until 4.1.12 and 5.0.3, an unauthenticated non-browser WebSocket client that can reach a development server using interceptorPlugin can register a manual mock whose attacker-controlled url createManualModuleSource inserts unescaped into generated module source. When the developer browser loads the affected module, attacker-controlled JavaScript executes on the development-server origin. This issue is fixed in versions 4.1.12 and 5.0.3.","datePublished":"Oct 20, 2026, 3:19:03 PM","dateUpdated":"Oct 23, 2026, 1:42:51 AM","baseScore":4.7,"baseScoreVersion":"3.1","baseScoreVector":"CVSS:3.1/AV:N/AC:H/PR:N/UI:R/S:C/C:L/I:L/A:N","references":"https://github.com/vitest-dev/vitest/security/advisories/GHSA-qxg6-89mg-rqv8\nhttps://github.com/vitest-dev/vitest/commit/15cc006aa9f8683dc5f7e895d011fa7dc751ce35\nhttps://github.com/vitest-dev/vitest/commit/b825313243dc55757e8d7c0f9e7a792135e13473\nhttps://github.com/vitest-dev/vitest/releases/tag/v4.1.12\nhttps://github.com/vitest-dev/vitest/releases/tag/v5.0.3\n","aliases":"CVE-2026-112949\nGHSA-qxg6-89mg-rqv8\n","assigner":"GitHub_M","epss":0.34,"enisaIdProduct":[{"id":"5b59a7d7-cf03-3e98-8297-5273b99e4aeb","product":{"name":"vitest","vendor":{"name":"vitest-dev"}},"product_version":"2.1.0-beta.7, \u003c 4.1.12"},{"id":"7c8d3a34-1632-37ad-a667-036116121877","product":{"name":"mocker","vendor":{"name":"@vitest"}},"product_version":"2.1.0-beta.7, \u003c 4.1.12"},{"id":"ac9b5c83-b1e6-3963-98ac-c9d641782e71","product":{"name":"mocker","vendor":{"name":"@vitest"}},"product_version":"5.0.0, \u003c 5.0.3"},{"id":"ebab20e7-c636-3645-8d9a-29b2e3845cba","product":{"name":"vitest","vendor":{"name":"vitest-dev"}},"product_version":"5.0.0, \u003c 5.0.3"}],"enisaIdVendor":[{"id":"3c4f3b62-4cdc-3b6e-85ef-3249d89cb5b6","vendor":{"name":"@vitest"}},{"id":"c822ed1b-84bc-393b-8e42-75db9942c5c5","vendor":{"name":"vitest-dev"}}],"enisaIdVulnerability":[{"id":"53e5487e-c411-30ed-869d-f470ae81197b","vulnerability":{"id":"CVE-2026-112949","description":"Vitest is a Vite-native testing framework for JavaScript and TypeScript projects. From 2.1.0-beta.7 until 4.1.12 and 5.0.3, an unauthenticated non-browser WebSocket client that can reach a development server using interceptorPlugin can register a manual mock whose attacker-controlled url createManualModuleSource inserts unescaped into generated module source. When the developer browser loads the affected module, attacker-controlled JavaScript executes on the development-server origin. This issue is fixed in versions 4.1.12 and 5.0.3.","datePublished":"Oct 20, 2026, 3:19:03 PM","dateUpdated":"Oct 23, 2026, 1:42:51 AM","status":"PUBLISHED","baseScore":4.7,"baseScoreVersion":"3.1","baseScoreVector":"CVSS:3.1/AV:N/AC:H/PR:N/UI:R/S:C/C:L/I:L/A:N","references":"https://github.com/vitest-dev/vitest/security/advisories/GHSA-qxg6-89mg-rqv8\nhttps://github.com/vitest-dev/vitest/commit/15cc006aa9f8683dc5f7e895d011fa7dc751ce35\nhttps://github.com/vitest-dev/vitest/commit/b825313243dc55757e8d7c0f9e7a792135e13473\nhttps://github.com/vitest-dev/vitest/releases/tag/v4.1.12\nhttps://github.com/vitest-dev/vitest/releases/tag/v5.0.3\n","enisa_id":"EUVD-2026-105148\n","assigner":"GitHub_M","epss":0.34,"dataProcessed":"Nov 6, 2026, 7:15:30 AM","vulnerabilityProduct":[{"id":"0ebd496e-6b07-3cb5-8d2d-e412287806a2","product":{"name":"vitest","vendor":{"name":"vitest-dev"}},"product_version":"2.1.0-beta.7, \u003c 4.1.12"},{"id":"34f71490-374b-32d4-8a42-be8261390b47","product":{"name":"mocker","vendor":{"name":"@vitest"}},"product_version":"5.0.0, \u003c 5.0.3"},{"id":"8b4a0795-1817-392c-9ab6-f45f1a62e6f2","product":{"name":"mocker","vendor":{"name":"@vitest"}},"product_version":"2.1.0-beta.7, \u003c 4.1.12"},{"id":"dcaecb15-0792-3f28-8a70-18be84949eb1","product":{"name":"vitest","vendor":{"name":"vitest-dev"}},"product_version":"5.0.0, \u003c 5.0.3"}],"vulnerabilityVendor":[{"id":"05c42382-c632-3ca6-b6b7-bb5881f7c377","vendor":{"name":"vitest-dev"}},{"id":"1f1c274e-414e-3a5f-b518-6816568ba818","vendor":{"name":"@vitest"}}]}},{"id":"6a14c6f7-7b6b-31bf-ac22-9d33e2153f04","vulnerability":{"id":"GHSA-qxg6-89mg-rqv8","description":"Vitest: Code injection via unauthenticated manual mock registration","datePublished":"Oct 21, 2026, 7:54:26 PM","dateUpdated":"Oct 21, 2026, 7:54:26 PM","baseScore":0.0,"references":"https://github.com/vitest-dev/vitest/security/advisories/GHSA-qxg6-89mg-rqv8\nhttps://nvd.nist.gov/vuln/detail/CVE-2026-112949\nhttps://github.com/vitest-dev/vitest/commit/15cc006aa9f8683dc5f7e895d011fa7dc751ce35\nhttps://github.com/vitest-dev/vitest/commit/b825313243dc55757e8d7c0f9e7a792135e13473\nhttps://github.com/vitest-dev/vitest\nhttps://github.com/vitest-dev/vitest/releases/tag/v4.1.12\nhttps://github.com/vitest-dev/vitest/releases/tag/v5.0.3\n","enisa_id":"EUVD-2026-105148\n","aliases":"GHSA-qxg6-89mg-rqv8\nCVE-2026-112949\n","epss":0.0,"dataProcessed":"Nov 5, 2026, 7:03:26 AM","vulnerabilityProduct":[],"vulnerabilityVendor":[]}}],"enisaIdAdvisory":[]}