Skip to main content
Live Webinar with SANS (June 25)— Agentic CTI Automation for Fun & ProfitRegister Free
Mallory
Back to malware
MalwareUsed by 1 actor

CanisterSprawl

Share:
For your environment

Hunt this family in your stack

Mallory pivots from this family to the IOCs, detections, and named campaigns that touch your stack, and pages you when something new lands.

THREAT ACTORS

Groups observed using it

1 distinct threat actor attributed by public researchers. Open in Mallory to see the full evidence chain and overlapping campaigns.

View more details
TeamPCP

Socket and StepSecurity began identifying a self-propagating npm supply chain worm tracked as CanisterSprawl... The worm executes via npm postinstall hook, harvests roughly 40 credential categories via regex sweep, and exfiltrates to a dual-channel endpoint that includes an Internet Computer Protocol (ICP) canister

via handlers diary fullisc.sans.edu
MITRE ATT&CK

Techniques & procedures

19 distinct techniques documented for this family, organized by ATT&CK tactic.

Initial Access

4 techniques
T1078Valid AccountsEvidence1

...injecting them with the malicious script and republishing them using the victim’s stolen npm credentials. Additionally, the script attempts to spread the attack to the Python Package Index (PyPI) when the necessary credentials are available...

T1091Replication Through Removable MediaEvidence1

The worm then attempts to self-propagate by identifying and installing npm packages the victim can publish, injecting them with the malicious script and republishing them using the victim’s stolen npm credentials.

T1195Supply Chain CompromiseEvidence5

The most significant development of the week was the end of TeamPCP's 26-day supply chain compromise pause, with three concurrent package compromises landing across npm, PyPI, and Docker Hub between April 21 and 22.

T1195.001Compromise Software Dependencies and Development ToolsEvidence1

Additionally, the script attempts to spread the attack to the Python Package Index (PyPI) when the necessary credentials are available, preparing and uploading malicious .pth-based payloads via Twine.

Execution

3 techniques
T1059Command and Scripting InterpreterEvidence2

The worm executes via npm postinstall hook... Trojanized cx-dev-assist ... silently downloaded a second-stage mcpAddon.js payload ... and executed it via the Bun runtime without integrity verification.

T1059.007JavaScriptEvidence2

Trojanized cx-dev-assist (versions 1.17.0 and 1.19.0) and ast-results (versions 2.63.0 and 2.66.0) VS Code and Open VSX extensions were also identified, which silently downloaded a second-stage mcpAddon.js payload from a backdated commit in the official Checkmarx GitHub repository and executed it via the Bun runtime without integrity verification.

T1204User ExecutionEvidence1

Three consecutive xinference PyPI releases (versions 2.6.0, 2.6.1, and 2.6.2) were published from a bot account with a malicious base64-encoded payload injected directly into init .py, executing automatically on package import.

Persistence

2 techniques
T1078Valid AccountsEvidence1

...injecting them with the malicious script and republishing them using the victim’s stolen npm credentials. Additionally, the script attempts to spread the attack to the Python Package Index (PyPI) when the necessary credentials are available...

T1546Event Triggered ExecutionEvidence1

It combines a multi-cloud credential harvester targeting six distinct secret surfaces, a self-propagating npm worm that re-infects all packages a victim token can publish ... shell RC persistence

Privilege Escalation

2 techniques
T1078Valid AccountsEvidence1

...injecting them with the malicious script and republishing them using the victim’s stolen npm credentials. Additionally, the script attempts to spread the attack to the Python Package Index (PyPI) when the necessary credentials are available...

T1546Event Triggered ExecutionEvidence1

It combines a multi-cloud credential harvester targeting six distinct secret surfaces, a self-propagating npm worm that re-infects all packages a victim token can publish ... shell RC persistence

Stealth

1 technique
T1078Valid AccountsEvidence1

...injecting them with the malicious script and republishing them using the victim’s stolen npm credentials. Additionally, the script attempts to spread the attack to the Python Package Index (PyPI) when the necessary credentials are available...

Credential Access

5 techniques
T1528Steal Application Access TokenEvidence2

The worm is cross-ecosystem, jumping from npm to PyPI if it discovers a PyPI publish token on the infected host.

T1552Unsecured CredentialsEvidence1

The malicious postinstall script observed in this compromise works to harvest secrets from the victim’s environment by searching environment variables for names associated with tokens, credentials, cloud providers, CI/CD systems, registries, LLM platforms and other secrets. It also targets sensitive local system files including .npmrc, .git-credentials, .netrc, .env files, database password files, and files storing SSH keys and cloud credentials.

T1552.005Cloud Instance Metadata APIEvidence1

The payload swept AWS credentials, Google Cloud configurations, Kubernetes tokens, environment variables, SSH keys, API keys, and database credentials, exfiltrating to hxxps://whereisitat[.]lucyatemysuperbox[.]space/.

T1555Credentials from Password StoresEvidence2

The worm executes via npm postinstall hook, harvests roughly 40 credential categories via regex sweep, and exfiltrates to a dual-channel endpoint that includes an Internet Computer Protocol (ICP) canister.

T1649Steal or Forge Authentication CertificatesEvidence1

The worm is cross-ecosystem, jumping from npm to PyPI if it discovers a PyPI publish token on the infected host.

Discovery

1 technique
T1518Software DiscoveryEvidence1

The worm is cross-ecosystem, jumping from npm to PyPI if it discovers a PyPI publish token on the infected host.

Lateral Movement

1 technique
T1091Replication Through Removable MediaEvidence1

The worm then attempts to self-propagate by identifying and installing npm packages the victim can publish, injecting them with the malicious script and republishing them using the victim’s stolen npm credentials.

Collection

2 techniques
T1005Data from Local SystemEvidence1

The payload swept AWS credentials, Google Cloud configurations, Kubernetes tokens, environment variables, SSH keys, API keys, and database credentials... The malicious payload ... exfiltrated GitHub tokens, npm tokens, SSH material, AWS/GCP/Azure secrets, GitHub Actions secrets, and AI tooling configuration files.

T1119Automated CollectionEvidence2

The worm executes via npm postinstall hook, harvests roughly 40 credential categories via regex sweep... The payload swept AWS credentials, Google Cloud configurations, Kubernetes tokens, environment variables, SSH keys, API keys, and database credentials.

Command and Control

2 techniques
T1071Application Layer ProtocolEvidence1

The collected data is exfiltrated to an HTTPS webhook as well as an Internet Computer Protocol (ICP) canister that serves as a “dead-drop” command and control (C2) channel, Socket said.

T1102Web ServiceEvidence1

It combines ... a GitHub commit dead-drop C2 channel with RSA-signed command delivery

Exfiltration

1 technique
T1567Exfiltration Over Web ServiceEvidence4

The malicious payload contained the string "Shai-Hulud: The Third Coming" ... and exfiltrated GitHub tokens, npm tokens, SSH material, AWS/GCP/Azure secrets, GitHub Actions secrets, and AI tooling configuration files to public GitHub repositories created under victim accounts.

INDICATORS OF COMPROMISE

IOCs tracked for this family

7 indicators attributed across vendor reports, sandbox runs, and researcher write-ups. Full values are available in Mallory.

View more in app
Network
2 tracked

IPs, domains, and DNS infrastructure linked to this family.

Hashes
3 tracked

File hashes (MD5, SHA-1, SHA-256) from samples and reports.

Other
2 tracked

Other indicator types observed in public reporting.

TypeValueLatest sighting
domain●●●●●●●●●●●●View more in app2 months ago
domain●●●●●●●●●●●●View more in app2 months ago
hash.sha256●●●●●●●●●●●●View more in app2 months ago
hash.sha256●●●●●●●●●●●●View more in app2 months ago
hash.sha256●●●●●●●●●●●●View more in app2 months ago
uri●●●●●●●●●●●●View more in app2 months ago
ACTIVITY FEED

Recent activity

4 sources tracked across advisories, community write-ups, and news. New activity surfaces here as Mallory finds it.

handlers diary fullNews
Apr 27, 2026
TeamPCP Supply Chain Campaign: Update 008 - 26-Day Pause Ends with Three Concurrent Compromises (Checkmarx KICS, Bitwarden CLI Cascade, xinference PyPI), CanisterSprawl npm Worm Identified, and Tier 1 Coverage Returns

A self-propagating npm supply chain worm that executes via npm postinstall hooks, harvests roughly 40 credential categories, exfiltrates data to dual-channel infrastructure including an Internet Computer Protocol canister, and can jump from npm to PyPI when it finds a PyPI publish token.

Read more
handlers diary fullNews
Apr 27, 2026
TeamPCP Supply Chain Campaign: Update 008 - 26-Day Pause Ends with Three Concurrent Compromises (Checkmarx KICS, Bitwarden CLI Cascade, xinference PyPI), CanisterSprawl npm Worm Identified, and Tier 1 Coverage Returns

A self-propagating npm supply chain worm that executes via postinstall, steals a broad set of credentials, exfiltrates data using ICP canister-based infrastructure, and can jump from npm to PyPI when publish tokens are found.

Read more
handlers diary fullNews
Apr 27, 2026
TeamPCP Supply Chain Campaign: Update 008 - 26-Day Pause Ends with Three Concurrent Compromises (Checkmarx KICS, Bitwarden CLI Cascade, xinference PyPI), CanisterSprawl npm Worm Identified, and Tier 1 Coverage Returns

A self-propagating npm supply chain worm that executes via postinstall, steals a broad set of credentials, exfiltrates data using dual-channel infrastructure including an ICP canister, and can jump from npm to PyPI when publish tokens are found.

Read more
the hacker newsNews
Apr 23, 2026
Bitwarden CLI Compromised in Ongoing Checkmarx Supply Chain Campaign

A worm payload in the same broader developer-targeting supply chain campaign, designed to extract credentials from developer and CI/CD pipeline environments.

Read more
What this page doesn’t show

The version that knows your environment.

This page is what’s public. Mallory adds the parts that aren’t: which of your assets match these IOCs, which detections are missing, which campaigns to expect next, and what to do in the next 30 minutes.
IOC matching7

Match every observed IP, domain, and hash against your live telemetry.

Threat actor attribution1

Named campaigns wielding this family, with evidence pinned to each claim.

Exploited vulnerabilities

CVEs this family uses for access and lateral movement.

Detection signatures

YARA, Sigma, Snort, and vendor rules, auto-deployed to your SIEM.

MITRE ATT&CK mapping19

Every documented technique, ranked by evidence weight.

Researcher chatter

Reddit, Mastodon, and CTI community discussion around this family.