
keyv and cacheable npm Package Hijacked in Supply Chain Attack
Wiz Research documents an ongoing supply chain attack in which a compromised GitHub maintainer account was used to publish malicious versions of keyv, cacheable, and 400+ dependent npm packages. The payload is a variant of the open-sourced 'Mini' Shai-Hulud malware (linked to the TeamPCP and antv campaigns) that steals cloud, CI/CD, AI-agent, and cryptocurrency credentials, persists via Claude Code hooks and VS Code tasks.json, exfiltrates data to attacker-controlled GitHub repos, and retrieves its C2 domain dynamically via an Ethereum smart contract (StringListStore) eth_call rather than hardcoding it.
What it is
The Wiz page on the keyv/cacheable npm compromise carries concrete IOCs and detection artifacts the summary abstracts away. The attack began at 09:00 UTC (page dated August 4, 2026); the worm reached 400+ packages. The payload is a modified "Mini" Shai-Hulud variant.
Indicators the summary omits
- C2 domain: the StringListStore contract initially returned three domains, then was updated to return only
npm-cache[.]com. The contract owner was funded by an address previously flagged for scam activity. - Malicious user-agent:
Bun/1.3.13performing the malicious calls. - Lock file artifact:
tmp.dpkg_14527.lock. - GitHub exfil repos use the default description
Shai-Hulud: Here We Go Again. - Commit fingerprints: the intimidation string
IfYouBlockThisAPIKeyItWillCrashTheLiveProductionServersOfAllThirdPartyClientsin initial commits; IDE-persistence commits use the messagechore: update config.
How the new features work
- Dead-man's switch is now selectively armed by C2 response: the C2 returns a code specifying the command to arm the switch and which token to monitor for revocation. The revocation monitor checks
api.github.com/user, so any token valid there can be watched. - Per-machine targeting: the malware sends a SHA256 hash of concatenated system properties alongside stolen credentials — Wiz believes this enables customized (targeted) dead-man switch delivery.
- A new RSA key encrypts exfiltrated data, but the RSA key verifying fallback C2s posted to GitHub is unchanged.
Expanded credential targets (~70% more)
New additions: AI-agent credential stores for Claude, OpenAI, Codex, Cursor, Gemini; crypto keystores for Foundry, Solana, Monero; self-hosted CI/registry secrets — Jenkins master.key, Argo CD, Harbor; Alibaba Cloud and Tencent Cloud CLI configs; and system files including /etc/shadow.
What to do
Per Wiz: identify and remove affected package versions from dev/build/CI; treat affected systems as compromised and rebuild if malicious packages were installed; rotate exposed credentials (cloud, GitHub tokens, SSH keys, Kubernetes configs, Terraform creds); review cloud/source environments for unauthorized access post-install; monitor for the IOCs above; and enable dependency allowlisting, package integrity verification, and provenance controls. The full affected-package list is on Wiz's GitHub.
Caveats
The page is explicitly an initial, actively-updated investigation — affected packages, IOCs, and attribution may change.
Organisations named here
- npm-cache[.]com
- Shai-Hulud
- StringListStore
- Wiz Research
Technologies named here
- Wiz Research
- keyv
- cacheable
- GitHub
- over 400 distinct npm packages
- Ethereum smart contract
- npm
- Ethereum
- Claude Code
- VS Code
- Bun
- AntV
Techniques named here
- Credential and secrets harvesting
- Data exfiltration via GitHub repositories
- Dynamic C2 resolution via blockchain smart contract
- Dead-man's switch
- Machine fingerprinting
- CI/CD and cloud environment enumeration
Threat actors named here
- "Mini" Shai-Hulud malware family
- TeamPCP
- antv supply chain campaign
- Shai-Hulud
- Mini Shai-Hulud
Related in Supply Chain


