CanisterWorm is a self-propagating malware that has been used by TeamPCP in credential harvesting and software supply chain campaigns since at least 2026. CanisterWorm has used npm credentials to infect software packages and propagate across developer ecosystems. CanisterWorm has a targeted wiper component and can use decentralized C2 infrastructure implemented via an Internet Computer Protocol (ICP) blockchain canister.[1][2][3][4]
| Domain | ID | Name | Use | |
|---|---|---|---|---|
| Enterprise | T1548 | .003 | Abuse Elevation Control Mechanism: Sudo and Sudo Caching |
CanisterWorm has checked if the current user is root. If it is, CanisterWorm will wipe the system using |
| Enterprise | T1059 | .004 | Command and Scripting Interpreter: Unix Shell |
CanisterWorm has used shell commands to enable and start the malicious systemd service for execution and persistence.[3][4] |
| .006 | Command and Scripting Interpreter: Python |
CanisterWorm has used a Python script as a second-stage backdoor.[4] |
||
| .007 | Command and Scripting Interpreter: JavaScript |
CanisterWorm can leverage stolen tokens to execute Javascsript (deploy.js) for self-propagation.[4] |
||
| Enterprise | T1609 | Container Administration Command |
CanisterWorm can deploy privileged DaemonSets in Kubernetes clusters for data wiping using kubectl.[2][3] |
|
| Enterprise | T1613 | Container and Resource Discovery |
CanisterWorm has performed environment fingerprinting to identify Kubernetes clusters.[2] CanisterWorm has also searched for Kubernetes pods using the command |
|
| Enterprise | T1543 | Create or Modify System Process |
CanisterWorm can establish persistence in CI/CD environments by launching a background process (deploy.js) with stolen tokens.[4] |
|
| Enterprise | T1555 | .006 | Credentials from Password Stores: Cloud Secrets Management Stores |
CanisterWorm has gathered credentials from Amazon Web Services (AWS), Google Cloud Platform (GCP), and Microsoft Azure.[5] |
| Enterprise | T1485 | Data Destruction |
CanisterWorm has targeted wiper components that can delete entire clusters and execute recursive file deletions on non-containerized hosts.[2][3] |
|
| Enterprise | T1140 | Deobfuscate/Decode Files or Information |
CanisterWorm has decoded a long Base64 string to obtain a Python script for its second-stage payload.[4] |
|
| Enterprise | T1480 | Execution Guardrails |
CanisterWorm can base execution on specific conditions including halting its wiper component if Kubernetes is not found and if the target is not located in Iran.[3] |
|
| Enterprise | T1083 | File and Directory Discovery |
CanisterWorm has discovered npm pathways and directories that frequently store .npmrc files to check for _authToken values.[4] |
|
| Enterprise | T1070 | .004 | Indicator Removal: File Deletion |
CanisterWorm has deleted itself after execution.[3] |
| Enterprise | T1105 | Ingress Tool Transfer |
CanisterWorm has downloaded and executed binaries from dead drop URLs retrieved from ICP canister C2 nodes.[3][4] CanisterWorm has also downloaded kubectl to compromised environments if it was not already installed.[3] |
|
| Enterprise | T1036 | .004 | Masquerading: Masquerade Task or Service |
CanisterWorm has masqueraded itself as systemd or as a PostgreSQL utility named pgmon.[2][4] |
| .005 | Masquerading: Match Legitimate Resource Name or Location |
CanisterWorm has mimicked legitimate PostgreSQL components (pgmon, pglog, and .pg_state) to masquerade malicious files.[4] |
||
| Enterprise | T1027 | .009 | Obfuscated Files or Information: Embedded Payloads |
CanisterWorm has used embedded second stage Base64-encoded payloads.[4] |
| Enterprise | T1677 | Poisoned Pipeline Execution |
CanisterWorm has leveraged stolen tokens from Trivy users to publish itself across over 46 npm packages.[1][4] |
|
| Enterprise | T1018 | Remote System Discovery |
CanisterWorm has scanned the local /24 subnet for new targets.[3] |
|
| Enterprise | T1053 | .006 | Scheduled Task/Job: Systemd Timers |
CanisterWorm has registered itself as a systemd service for persistence on targeted Kubernetes nodes.[3][4] |
| Enterprise | T1528 | Steal Application Access Token |
CanisterWorm has gathered cloud access tokens.[5] |
|
| Enterprise | T1195 | .001 | Supply Chain Compromise: Compromise Software Dependencies and Development Tools |
CanisterWorm has spread through an automated process that infects and publishes npm packages.[1][4] |
| Enterprise | T1614 | .001 | System Location Discovery: System Language Discovery |
CanisterWorm has checked the target system's timezone |
| Enterprise | T1016 | System Network Configuration Discovery |
CanisterWorm has parsed the /var/log/auth.log and /var/log/secure files for source IP addresses.[3] |
|
| Enterprise | T1033 | System Owner/User Discovery |
CanisterWorm has parsed the /var/log/auth.log and /var/log/secure files for usernames.[3] |
|
| Enterprise | T1569 | .003 | System Services: Systemctl |
CanisterWorm has used executed |
| Enterprise | T1529 | System Shutdown/Reboot |
CanisterWorm has forced the target system to reboot after file deletion.[3] |
|
| Enterprise | T1124 | System Time Discovery |
CanisterWorm has checked if the target system’s time zone is "Asia/Tehran" or "Iran."[2][3] |
|
| Enterprise | T1552 | .004 | Unsecured Credentials: Private Keys |
CanisterWorm has gathered SSH private keys from the .ssh file.[3] |
| Enterprise | T1550 | .001 | Use Alternate Authentication Material: Application Access Token |
CanisterWorm has leveraged stolen npm tokens to automate compromise by enumerating all publishable packages in a namespace, bumping versions, and publishing itself across the entire scope.[1][4] |
| Enterprise | T1497 | .003 | Virtualization/Sandbox Evasion: Time Based Checks |
CanisterWorm has leveraged a Sleep setting of five minutes before executing tasks to evade sandbox environments.[4] |
| Enterprise | T1102 | .001 | Web Service: Dead Drop Resolver |
CanisterWorm can periodically poll a decentralized Internet Computer Protocol (ICP) canister to retrieve a dynamic URL for payload delivery.[2][3][4] |
| ID | Name | References |
|---|---|---|
| G1056 | TeamPCP |
TeamPCP has used CanisterWorm in credential harvesting and software supply chain campaigns since at least 2026.[1][2][3][4][5] |