LWA-2026-10478 MAL-2026-13274 ↗ confirmed malware

devplatform-vite-plugin-preserve-css-modules@35.6.8

Malicious code in devplatform-vite-plugin-preserve-css-modules (npm)

T1195.002 · Compromise Software Supply ChainT1059 · Command and Scripting InterpreterT1059.007 · JavaScriptT1105 · Ingress Tool TransferT1071.001 · Web ProtocolsT1102 · Web ServiceT1573 · Encrypted ChannelT1082 · System Information Discovery

Analysis

A vite-plugin-named package that is actually a multi-stage binary dropper. On require, package/index.js loads _loader.js, which downloads a platform-specific second-stage binary over HTTPS from Cloudflare Workers hosts (oob-worker[.]cf100-416[.]workers[.]dev, oob-worker[.]cf103-070[.]workers[.]dev, oob-worker[.]cf99-9b3[.]workers[.]dev) at paths /pkg/package, /pkg/package-arm64, /pkg/loader_mac, /pkg/package.exe. If the HTTPS download fails, it falls back to reconstructing the payload from DNS TXT records under the wel1[.]ru domain (c[.]sdk[.]dl[.]wel1[.]ru, sdk[.]dl[.]wel1[.]ru, ext[.]dl[.]wel1[.]ru, pkg[.]dl[.]wel1[.]ru, net[.]dl[.]wel1[.]ru). The downloaded binary is written to a hidden temp path (/var/tmp/.cache_<hex> on Unix, dotnet_diag_<hex>.exe in %TEMP% on Windows) and executed detached (cmd.exe /c start /b on Windows, /bin/sh -c "<path> &" on Unix), outliving the parent process. A marker file (.analytics_state) throttles re-downloads. The package's declared purpose (a CSS-modules vite plugin) is unrelated to this behaviour.

analyzed by
Leitwacht
first seen
Aug 5, 2026, 01:40 PM
analyzed
Aug 5, 2026, 04:41 PM

Related advisories

browse all confirmed advisories →

Independently detected by the Leitwacht supply-chain probe. IOCs are defanged. Published CC0. Think this is a mistake? See the dispute policy.