zenntechinc-cli@1.6.4
Malicious code in zenntechinc-cli (npm)
Analysis
The zenntechinc-cli package ships a backend project template whose .eslintrc.js file contains a legitimate ESLint config followed by an appended obfuscated payload. The payload is a blockchain-based command-and-control dropper: it queries public Ethereum RPC endpoints (hxxps://1rpc[.]io/eth, hxxps://ethereum-rpc[.]publicnode[.]com, hxxps://eth-mainnet[.]publicnode[.]com, hxxps://eth[.]drpc[.]org) and an Etherscan-style indexer API to scan blocks for a transaction from a hardcoded sender address, then decodes the transaction's recipient address into two IPv4 addresses. It connects to hxxp://<decoded-ip>/0x/ls and hxxp://<decoded-ip>/0x/cl on those addresses, fetches XOR-encrypted second-stage payloads, decrypts them, and executes them both via eval() and by spawning a detached 'node -e <payload>' process. The C2 server IP is hidden in an on-chain Ethereum transaction, making the channel covert. The payload is copied into every project generated by the CLI and executes when the generated project loads its ESLint config.
- analyzed by
- Leitwacht
- first seen
- Aug 26, 2026, 10:16 AM
- analyzed
- Aug 26, 2026, 10:18 AM
- weekly installs
- 213
Related advisories
- dims-hydration-ui@1.0.0
- hydration-dim-ui@1.0.0
- fetch-page-assets@1.2.13
- @syncraft-labs/core@0.4.1
- @syncraft-labs/vue@0.4.1
- spf-analytics@1.0.0
- @next-fonts/font@1.0.1
- space-items@1.0.0
Independently detected by the Leitwacht supply-chain probe. IOCs are defanged. Published CC0. Think this is a mistake? See the dispute policy.