Detect CVE-2026-47428: Vitest Browser Mode XSS via Unsanitized otelCarrier Query Parameter in IBM QRadar
CVE-2026-47428 is a reflected Cross-Site Scripting (XSS) vulnerability in @vitest/browser versions >= 4.0.17 < 4.1.6 and >= 5.0.0-beta.0 < 5.0.0-beta.3. The browser mode development server serves the otelCarrier query parameter as unsanitized inline script content in esm-client-injector.js and serverOrchestrator.ts, allowing an attacker to inject arbitrary JavaScript into the test runner's browser context. With a CVSS of 9.6 and public PoC available, this poses a critical risk to CI/CD pipelines and developer workstations running Vitest browser mode tests, potentially enabling credential theft, session hijacking, or supply chain compromise.
MITRE ATT&CK
QRadar Detection Query
SELECT DATEFORMAT(starttime, 'YYYY-MM-dd HH:mm:ss') as 'Event Time', sourceip, destinationip, URL, username, QIDNAME(qid) as 'Event Name', magnitude
FROM events
WHERE LOGSOURCETYPENAME(devicetype) IN ('Apache HTTP Server', 'Nginx', 'Microsoft IIS', 'Proxy')
AND URL ILIKE '%otelCarrier=%'
AND (URL ILIKE '%<%' OR URL ILIKE '%>%' OR URL ILIKE '%<script%' OR URL ILIKE '%javascript:%' OR URL ILIKE '%onerror=%' OR URL ILIKE '%onload=%')
AND starttime > NOW() - 7 DAYS
ORDER BY starttime DESC
LIMIT 500 QRadar AQL query detecting HTTP requests containing otelCarrier parameters with XSS injection payloads targeting Vitest browser mode CVE-2026-47428.
Data Sources
Required Tables
False Positives & Tuning
- Legitimate telemetry propagation headers that contain special characters as part of base64-encoded trace IDs
- Web application firewalls logging blocked requests that contain otelCarrier XSS patterns from scanners
- Developer tools or browser extensions that inject otelCarrier parameters for debugging purposes
- Log aggregation systems that decode URL-encoded characters causing false pattern matches
Other platforms for CVE-2026-47428
Testing Methodology
Validate this detection against 3 adversary techniques from Atomic Red Team. Each test below lists the behaviour to exercise and the telemetry you should expect to see. Executable commands and cleanup steps are available with Pro.
- Test 1CVE-2026-47428 Basic XSS via otelCarrier Parameter
Expected signal: HTTP request logs showing otelCarrier parameter containing <script> tags; Node.js process spawning on port 5173; outbound network connection to attacker.lab if XSS executes successfully in browser
- Test 2CVE-2026-47428 Event Handler XSS Payload Variant
Expected signal: HTTP requests with onerror, onload event handler patterns in otelCarrier; DNS/network connections to attacker.lab from browser process if XSS executes; browser process network activity on non-standard ports
- Test 3CVE-2026-47428 CI/CD Pipeline Exploitation Simulation
Expected signal: Node.js process with vitest and --browser arguments; child browser process (Chromium/Playwright) spawned from test runner; outbound HTTP connections from browser process to external host; environment variable access logged by audit framework
References (4)
- https://github.com/vitest-dev/vitest/security/advisories/GHSA-2h32-95rg-cppp
- https://github.com/vitest-dev/vitest/blob/cba2036a197ec8ed42c35a37db78ef07192202c7/packages/browser/src/client/public/esm-client-injector.js#L41
- https://github.com/vitest-dev/vitest/blob/cba2036a197ec8ed42c35a37db78ef07192202c7/packages/browser/src/node/serverOrchestrator.ts#L48
- https://github.com/advisories/GHSA-2h32-95rg-cppp
Unlock Pro Content
Get the full detection package for CVE-2026-47428 including response playbook, investigation guide, and atomic red team tests.