vite-dev-launchernpm
vite-dev-launcher is a confirmed malicious npm package (MAL-2026-16474) that opens a backdoor for remote access (malicious version 2.9.4). Do not install it — remove it immediately and rotate any exposed credentials.
Malicious code in vite-dev-launcher (npm)
What this malware does
The package presents as a Vite dev-server wrapper but its declared postinstall (node./postinstall-run.cjs) chains through lib/gradle/lifecycle/postinstall-entry.cjs and instrumentation-registry.cjs to base64+AES-256-GCM-decrypt an embedded ciphertext in agent-bytecode.segments.cjs. The AES key is derived from SHA-256 of a specific victim workspace's files (package.json, pnpm-workspace.yaml, vite-plugin-legacy-css.ts, scripts/gen-page-meta.cjs, scripts/git-tag.mjs, scripts/git-merge.mjs, src/router/routes.tsx, TAGLOG.md, index.html) plus a static pepper, and decryption only proceeds when the workspace digest matches a hardcoded workspaceMaterialDigest — environmental keying to a specific developer's repo that blocks sandbox analysis. The decrypted bytes are written to ~/.gradle/caches/transforms-3/8.7/instrumented/instrumented-jars/gradle-instrumentation-agent-8.7.0/instrumentation/instrumentation-agent-runtime.mjs (a Gradle-cache path unrelated to a Vite/Node package) and launched via child_process.spawn(nodeBin, [scriptPath, cwd, relay], {detached:true, stdio:'ignore', windowsHide:true}). lib/gradle/string-vault.cjs hides configuration behind base64+XOR (key gI8.7|tr), exposing c2Endpoint, apiRegister, apiTask, apiResult, apiFile, agentIdLeaf, relayEnvKey, tlsBypassEnvKey, and tlsRejectEnvKey — the register/poll-task/return-result/file-transfer surface of a polling C2 agent, with a TLS-verification bypass toggle. The same activation chain is also reachable via require('vite-dev-launcher') (main → bin/cli.js → tooling-bootstrap.cjs → scheduleGradleDaemonSync → activateDaemonBridge) and via CLI invocation, giving the drop-and-exec redundant triggers on the targeted workspace.
Malicious versions
Indicators of compromise (SHA-256)
Detection & response playbook
Backdoor / remote accessFind it
Scan your lockfiles (package-lock.json, pnpm-lock.yaml, yarn.lock, requirements.txt, poetry.lock, etc.) and build artifacts for vite-dev-launcher (version 2.9.4). O3 Security's supply-chain scanner checks every dependency against known-malicious package intelligence at install time and in CI, flagging vite-dev-launcher across your stack and pipelines.
If you installed it — respond
vite-dev-launcher establishes remote access, so treat any host that installed it as fully compromised. Isolate the machine, remove the package, rotate all credentials it could reach, and rebuild from a trusted image rather than cleaning in place — a backdoor may have planted additional persistence.
Did it already run?
If vite-dev-launcher was ever installed, its post-install/runtime payload may have already executed. O3's L7 egress monitoring and runtime eBPF sensors detect the credential exfiltration or command-and-control callback after install and block the malicious outbound channel, so you catch and contain the actual compromise — not just the presence of the package.
How O3 protects you
O3 blocks vite-dev-launcher before install through its supply-chain scanner, and if it has already run, detects and severs the exfiltration or C2 callback at runtime through L7 egress monitoring and eBPF.
Frequently asked questions
Campaign
References
Credits
- Amazon Inspector · finder
Detect & block this
O3 blocks vite-dev-launcher-class packages before install and in CI — and if it already ran, its runtime egress monitoring catches the C2 callback and severs the channel.