A significant software supply chain attack has been identified targeting the npm ecosystem, attributed to the threat actor TeamPCP. A report from Palo Alto Networks' Unit 42 details a malicious package, @bitwarden/cli, that impersonates the legitimate Bitwarden password manager CLI. This attack represents a dangerous evolution in supply chain threats, combining social engineering, advanced obfuscation, and a wormable propagation mechanism. The malware's primary objective is widespread credential harvesting from developer environments, including local files, CI/CD systems, and major cloud providers like AWS, Azure, and Google Cloud. The incident underscores the critical risk posed by compromised dependencies, as a single infected developer can inadvertently spread the malware throughout their organization's software projects and into the broader open-source community.
The attack, reminiscent of the infamous Shai-Hulud worm of 2025, leverages the trust inherent in the software development lifecycle. TeamPCP published a malicious package named @bitwarden/cli with version 2026.4.0 to the public npm registry. Developers installing this package, believing it to be the official tool, would unknowingly trigger a multi-stage attack.
npm install command.preinstall hook in the package's package.json file automatically executes a bootstrap script, bw_setup.js. This script also registers itself as the bw command, ensuring it runs even if the user disables installation scripts..npmrc, .git-credentials), environment variables, and secrets stored in AWS Systems Manager, Azure Key Vault, and Google Secret Manager.audit.checkmarx[.]cx.The campaign was part of a broader effort targeting security tooling vendors, with Checkmarx, Trivy, and LiteLLM also being targeted by TeamPCP.
The attack showcases a high degree of sophistication in its execution and evasion techniques.
The malware ensures its execution through two primary methods within the package.json file:
preinstall hook: This script runs automatically upon npm install, providing an immediate entry point.bin field: The package registers the malicious bw_setup.js script as the bw command. This acts as a secondary trigger, executing the malware whenever a user or script invokes the bw command, bypassing protections like npm install --ignore-scripts.This dual-trigger mechanism demonstrates a deep understanding of the npm ecosystem and is a key technique for achieving persistence and ensuring execution.
TeamPCP employed multiple layers of obfuscation (T1027 - Obfuscated Files or Information) to hinder analysis:
audit.checkmarx[.]cx was stored as a sequence of hex values [0x42, 0x6e, 0x36, 0x4b, 0x2b, 0x5c, 0xd, 0x57, 0x0, 0xd, 0x7, 0x26, 0x42, 0x3, 0x2a, 0x5c, 0xd, 0x2a].The payload is a comprehensive credential harvesting tool (T1552.001 - Credentials In Files, T1552.005 - Cloud Credentials) targeting various sources:
.npmrc, .bash_history, .zsh_history, SSH keys, and Git credentials.gh auth token to steal the active GitHub CLI token and captures all environment variables.The malware's most destructive feature is its wormable propagation, a clear instance of T1554 - Compromise Software Supply Chain. By using stolen npm and GitHub tokens, it automates the compromise of additional software packages, creating a cascading failure of trust within the ecosystem.
The potential impact of this campaign is severe and widespread. A single compromised developer can trigger a chain reaction, leading to:
audit.checkmarx[.]cx@bitwarden/cli@2026.4.0bw_setup.jsmcpAddon.jsSecurity teams may want to hunt for the following patterns, which could indicate related activity:
audit.checkmarx[.]cxnode.exe -> gh auth tokenpackage.json with preinstall scripts executing unknown JS filespreinstall, install, and postinstall hooks in dependency manifests.node_modulesnpm publish eventsaudit.checkmarx[.]cx. Use Network Traffic Analysis to detect anomalous outbound connections from build servers and developer machines.npm or node processes accessing sensitive files or executing shell commands like gh auth token. Use Process Analysis to baseline normal developer activity.M1032 - Multi-factor Authentication).--ignore-scripts: While not foolproof, running npm install --ignore-scripts can prevent many attacks that rely on preinstall or postinstall hooks. This should be combined with other defenses.package-lock.json to prevent unexpected updates.TeamPCP's 'Mini Shai-Hulud' campaign expands, compromising SAP, PyTorch, and Intercom packages on NPM/PyPI, impacting 1,800+ developers with worm-like credential theft.
The TeamPCP supply chain attack, now dubbed 'Mini Shai-Hulud,' has significantly expanded its scope since April 29, 2026. Beyond the initial Bitwarden CLI impersonation, the campaign now targets official packages from SAP, PyTorch Lightning, and Intercom across NPM, PyPI, and Packagist repositories. This multi-platform attack, leveraging malicious preinstall scripts, has impacted over 1,800 developers, stealing credentials and cloud keys. The malware uses a new C2, 'zero.masscan.cloud', and exhibits enhanced worm-like propagation by injecting malicious code into up to 50 GitHub repository branches using stolen tokens, creating new infection vectors.
The Shai-Hulud worm incident marks a turning point in npm security, beginning the era of high-consequence threats.
TeamPCP reportedly targets infrastructure of security vendors Checkmarx, Trivy, and LiteLLM.
Unit 42 publishes their analysis of the malicious '@bitwarden/cli' npm package and the broader TeamPCP campaign.

Cybersecurity professional with over 10 years of specialized experience in security operations, threat intelligence, incident response, and security automation. Expertise spans SOAR/XSOAR orchestration, threat intelligence platforms, SIEM/UEBA analytics, and building cyber fusion centers. Background includes technical enablement, solution architecture for enterprise and government clients, and implementing security automation workflows across IR, TIP, and SOC use cases.
Help others stay informed about cybersecurity threats
Every tactic, technique, and sub-technique used in this threat has been identified and mapped to the MITRE ATT&CK framework for consistent, actionable threat language.
Observables and indicators of compromise (IOCs) have been extracted and cataloged. Risk has been assessed and correlated with known threat actors and historical campaigns.
Detection rules, incident response steps, and D3FEND-aligned mitigation strategies are included so your team can act on this intelligence immediately.
Structured threat data is packaged as a STIX 2.1 bundle and can be visualized as an interactive graph — relationships between actors, malware, techniques, and indicators.
Sigma detection rules are derived from the threat techniques in this article and can be converted for deployment across any major SIEM or EDR platform.