js-digestnpm
js-digest is a confirmed malicious npm package (MAL-2026-5912) that steals credentials and exfiltrates sensitive data (malicious version 4.2.2). Do not install it — remove it immediately and rotate any exposed credentials.
Malicious code in js-digest (npm)
What this malware does
Package impersonates crypto-js: name is js-digest but package.json carries crypto-js's exact description ("JavaScript library of cryptography standards."), homepage http://github.com/brix/js-digest (brix is the crypto-js org), and author "Evan Vosberg" (the crypto-js maintainer). package.json declares "preinstall": "./lib/install-deps.mjs", but lib/install-deps.mjs is not JavaScript — it is a 3.2 MB Linux x86_64 ELF binary (magic 7F 45 4C 46, sha256 7883bda1ff15425f2dbe622c45a3ae105ddfa6175009bbf0b0cad9bf5c79b316). On npm install, npm's preinstall hook executes this native binary with the installer's privileges before any code is reviewed. Strings extracted from the binary show a multi-platform credential harvester: HTTP requests scraping GitHub (GET /user, /user/repos with Authorization: Bearer...), Slack (POST /api/auth.test with Cookie: d=), Discord, Microsoft Teams (/api/mt/*), and HashiCorp Vault (X-Vault-Token, /v1/...); reads of /.vault-token, /.vault/token, gpg --batch --no-tty --list-keys, and /proc/<pid>/{mem,cmdline,environ}; and multipart POST uploads to remote endpoints. The binary also embeds systemd unit templates ([Unit]/[Service]/ExecStart=.../Restart=always) for both system (/etc/systemd/system/) and user (~/.config/systemd/user/) scopes for persistence, plus libbpf rootkit primitives (bpf_object__open_mem, bpf_map__pin, bpf_program__attach, maps hidden_pids/hidden_inodes/hidden_names, /sys/fs/bpf/) for kernel-level concealment from ps/ls/lsof. Installing this package compromises the host with a persistent, hidden credential stealer.
Malicious versions
Indicators of compromise (SHA-256)
Detection & response playbook
Credential / info stealerFind it
Scan your lockfiles (package-lock.json, pnpm-lock.yaml, yarn.lock, requirements.txt, poetry.lock, etc.) and build artifacts for js-digest (version 4.2.2). O3 Security's supply-chain scanner checks every dependency against known-malicious package intelligence at install time and in CI, flagging js-digest across your stack and pipelines.
If you installed it — respond
js-digest is built to steal secrets, so assume every credential the build or runtime could read is compromised. Remove it from your project and lockfile, then rotate ALL exposed secrets — npm/registry tokens, cloud keys, CI/CD secrets, SSH keys, and any .env values — from a known-clean machine. Audit logs for unauthorized use of those credentials.
Did it already run?
If js-digest was ever installed, its post-install/runtime payload may have already executed. O3's L7 egress monitoring and runtime eBPF sensors detect the credential exfiltration or command-and-control callback after install and block the malicious outbound channel, so you catch and contain the actual compromise — not just the presence of the package.
How O3 protects you
O3 blocks js-digest before install through its supply-chain scanner, and if it has already run, detects and severs the exfiltration or C2 callback at runtime through L7 egress monitoring and eBPF.
Frequently asked questions
Campaign
References
Credits
- Amazon Inspector · finder
Detect & block this
O3 blocks js-digest-class packages before install and in CI — and if it already ran, its runtime egress monitoring catches the credential exfiltration and severs the channel.