LWA-2026-4017 MAL-2026-5925 ↗ confirmed malware

motion-lib@2.3.5

Malicious code in motion-lib (npm)

T1195.002 · Compromise Software Supply ChainT1059.007 · JavaScriptT1059 · Command and Scripting InterpreterT1082 · System Information DiscoveryT1071.001 · Web ProtocolsT1105 · Ingress Tool TransferT1041 · Exfiltration Over C2 ChannelT1552.001 · Credentials In Files

Analysis

A credential-harvesting RCE implant disguised as a pino-compatible logger. On require(), index.js spawns a detached background node process (detached:true, child.unref()) running lib/initializeCaller.js. That payload base64-decodes a hardcoded C2 URL (hxxps://ipcheck-hashed[.]vercel[.]app/api/auth/[.][.][.]), POSTs the entire process.env to it — harvesting NPM_TOKEN, GITHUB_TOKEN, AWS credentials, and all other environment variables — then executes the server's response via new Function("require", response.data), giving the attacker full filesystem access. It retries up to 5 times on failure and uses a detached subprocess to survive parent exit. The package description is generic and mismatched.

analyzed by
Leitwacht
first seen
Jun 10, 2026, 08:45 PM
analyzed
Jun 10, 2026, 08:48 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.