motion-lib@2.3.5
Malicious code in motion-lib (npm)
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
- hex-type@3.0.2
- moltbook-api-helper@1.0.1
- websocket-slot@0.0.6
- mev-shield@1.4.2
- yelp-react-component-chaos@8.14.5
- maninos@1.2.0
- lucifer490-v2@1.1.65
- farming-tools-12@4.68.54
Independently detected by the Leitwacht supply-chain probe. IOCs are defanged. Published CC0. Think this is a mistake? See the dispute policy.