Malicious code in lodahs-cli (npm)
lodahs-cli, a typosquatting package masquerading as a lodash CLI tool, contained a malicious postinstall script that beacons to a hardcoded IP, downloads and executes a Windows executable, and can cross WSL boundaries to compromise the host system.
- Disclosed
- Last updated
- Blast radius
- All npm users who installed lodahs-cli
- Ecosystems
- Attack vectors
- Affected entities
- lodahs-clinpm package containing malicious postinstall script
The npm package lodahs-cli contained malicious code in its postinstall lifecycle script (scripts/postinstall.js) that executed automatically upon installation. The script performed three attacker-controlled actions: it sent a platform fingerprint beacon to http://193.70.34.101:20099/vote, downloaded and executed main.exe from an obfuscated GitHub repository (https://github.com/beb1raz1/qPzM50V1AKG0rVlH/releases/download/null/main.exe), and included logic to cross WSL boundaries and execute the same payload on Windows hosts when detected.
The package name is a reversal/typosquatting variant of 'lodash' but contained no legitimate CLI functionality—it was purely a dropper. The malicious URLs and IP addresses were obfuscated using XOR encoding (key 'stf2026') and array concatenation to evade static detection.
The incident was identified and credited to the OpenSSF malicious-packages repository (MAL-2026-14180), indicating the package has been cataloged and removed from npm.
Indicators of compromise
- Packages
- lodahs-cli
- Domains
- github.com
- IPs
- 193.70.34.101
Remediation
- Immediately uninstall lodahs-cli from all systems
- Audit npm install logs to identify when lodahs-cli was installed
- Scan systems for main.exe and any suspicious processes spawned during or after npm install
- Review outbound network connections to 193.70.34.101:20099 in firewall/proxy logs
- On WSL systems, check Windows host for unauthorized executables and processes
- Use npm audit to identify if lodahs-cli is listed as a dependency in any projects
- Consider using npm package lock files and integrity verification to prevent similar attacks
- Monitor for indicators of compromise from the downloaded executable payload
Sources
- GitHub Advisory GHSA-qq9w-rvjj-f8h3 · GitHub Advisory Database
Cite this entry
"Malicious code in lodahs-cli (npm)." supplychainattack.org, Supply Chain Attack Incident Catalog. Disclosed August 19, 2026; last updated August 19, 2026. https://supplychainattack.org/incident/malicious-code-in-lodahs-cli-npm-1yro1o
Suggest a correction
Found an error or have a newer source? Corrections to factual errors take priority over new entries.
Related incidents
- containedcritical
Malicious code in 3-buildsight-web (npm)
The npm package 3-buildsight-web contains malicious code that fetches and executes arbitrary JavaScript from a remote Bitbucket URL on module load, granting full page privileges to an unverified third party.
npmCompromised package - resolvedcritical
Malicious code in @usaa-grp-personal-profile/personal-profile-common (npm)
Malicious package @usaa-grp-personal-profile/personal-profile-common version 999.0.0 published to public npm as a dependency-confusion attack targeting an organization's internal registry. The package contains preinstall and postinstall hooks that exfiltrate hostname, username, and working directory to an attacker-controlled OAST endpoint on every install.
npmDependency confusionCompromised package - resolvedcritical
Malicious code in create-coin (npm)
create-coin@20.1.1 on npm contained malicious postinstall code that collected sensitive environment variables, credentials, and host reconnaissance data. The package impersonated an esbuild platform build and exfiltrated data to a hardcoded endpoint.
npmCompromised packageTyposquatting - resolvedcritical
Malicious code in @syncraft-labs/vue (npm)
The npm package @syncraft-labs/vue version 0.4.1 contained malicious obfuscated code in its ESM build that implements a blockchain-hosted C2 dropper (EtherHiding pattern), enabling remote code execution on any consumer importing the package.
npmCompromised package