Mini Shai-Hulud is a credential stealer and self-replicating supply chain worm, derived from Shai-Hulud, that has been used by TeamPCP to target Continuous Integration and Continuous Delivery/Deployment (CI/CD) workflows since at least 2026. Mini Shai-Hulud can compromise credentials across multiple cloud, container, and AI configuration file paths and can use stolen npm and GitHub OIDC tokens to spread to other packages maintained by the compromised user. Mini Shai-Hulud also has a targeted wiper component and has used multiple C2 and data exfiltration mechanisms.[1][2][3][4][5][6]
| Domain | ID | Name | Use | |
|---|---|---|---|---|
| Enterprise | T1087 | .004 | Account Discovery: Cloud Account |
Mini Shai-Hulud has enumerated cloud accounts and subscriptions accessible to the targeted identity.[3] |
| Enterprise | T1071 | .001 | Application Layer Protocol: Web Protocols |
Mini Shai-Hulud has has exfiltrated data through the use of HTTPS POST requests to C2 domains.[2][5] |
| Enterprise | T1560 | Archive Collected Data |
Mini Shai-Hulud has compressed collected credentials to reduce transmission size and to make string content harder to detect in memory forensics captures.[3] |
|
| .001 | Archive via Utility |
Mini Shai-Hulud has compressed collected credentials and data within tar archive files prior to exfiltration.[2] |
||
| Enterprise | T1119 | Automated Collection |
Mini Shai-Hulud has the ability to automatically compile gathered credentials from configuration files and password vaults within an archive and exfiltrate stolen data leveraging both a primary and fallback C2.[5] |
|
| Enterprise | T1059 | .006 | Command and Scripting Interpreter: Python |
Mini Shai-Hulud has utilized Python scripts to execute payloads.[1][4] |
| .007 | Command and Scripting Interpreter: JavaScript |
Mini Shai-Hulud has leveraged JavaScript runtime to execute malicious scripts.[2][5] |
||
| .013 | Command and Scripting Interpreter: Container CLI/API |
Mini Shai-Hulud has utilized the Docker command-line tool to gather details of the victim environment and collect credentials.[3] |
||
| Enterprise | T1554 | Compromise Host Software Binary |
Mini Shai-Hulud has established persistence through modifying software binaries to include AI coding agents’ configuration or setting files that act as hooks, tasks or execution triggers.[5] |
|
| Enterprise | T1609 | Container Administration Command |
Mini Shai-Hulud has utilized container administration commands to gather details of compromised hosts and gather credentials to include Kubernetes command-line utilities |
|
| Enterprise | T1543 | .001 | Create or Modify System Process: Launch Agent |
Mini Shai-Hulud has established persistence on macOS hosts by installing a gh-token-monitor daemon through LaunchAgent that polls GitHub every 60 seconds.[1] |
| .002 | Create or Modify System Process: Systemd Service |
Mini Shai-Hulud has created .service files using Systemd on victim Linux hosts to establish persistence.[1][3][5] |
||
| Enterprise | T1555 | .005 | Credentials from Password Stores: Password Managers |
Mini Shai-Hulud has gathered credentials stored in password managers to include password vaults.[1][3][4] |
| .006 | Credentials from Password Stores: Cloud Secrets Management Stores |
Mini Shai-Hulud has captured credentials stored in cloud secret stores.[1][2][3][4][5] |
||
| Enterprise | T1485 | Data Destruction |
Mini Shai-Hulud has wiped data on devices that fall within specified parameters to include those that resolve to specific geolocations including Iran and Israel.[3][4] Mini Shai-Hulud has also implemented a dead-man’s switch that wipes the victims home directory if the operator revokes a GitHub token created by the adversary. [5] |
|
| Enterprise | T1132 | .001 | Data Encoding: Standard Encoding |
Mini Shai-Hulud has used base64 encoding to obfuscate URLs used for C2.[3][4] |
| Enterprise | T1213 | .003 | Data from Information Repositories: Code Repositories |
Mini Shai-Hulud has gathered and downloaded data stored on both compromised and publicly accessible code repositories.[4] |
| Enterprise | T1140 | Deobfuscate/Decode Files or Information |
Mini Shai-Hulud has the ability to decrypt obfuscated payloads.[2] |
|
| Enterprise | T1546 | Event Triggered Execution |
Mini Shai-Hulud has modified settings and configuration files of AI coding agents and other coding applications in order to create event triggered executions through creating hooks and runOn conditions.[5] |
|
| .018 | Python Startup Hooks |
Mini Shai-Hulud has utilized Python startup hooks to include the .pth import mechanism for execution.[2] |
||
| Enterprise | T1480 | Execution Guardrails |
Mini Shai-Hulud has utilized execution guardrails in order to prevent operating in restricted geolocations to include Russia by checking the devices language and terminating when a forbidden value is detected.[1][4] Mini Shai-Hulud has also utilized designated instructions that execute when victim hosts match geolocations to include wiping victim devices when the device is determined to be located within Iran or Israel.[3] |
|
| Enterprise | T1041 | Exfiltration Over C2 Channel |
Mini Shai-Hulud has exfiltrated encrypted archives over C2 domains.[2][3][4] |
|
| Enterprise | T1567 | .001 | Exfiltration Over Web Service: Exfiltration to Code Repository |
Mini Shai-Hulud has exfiltrated data through the use of the victim’s own GitHub repository by creating a new public repository using a unique naming convention from a curated list of key words or themes.[2][3][4][5] |
| Enterprise | T1008 | Fallback Channels |
Mini Shai-Hulud has established Fallback Channels to exfiltrate data to Github when other configured infrastructure is found to be unreachable.[1][2][3][4] |
|
| Enterprise | T1083 | File and Directory Discovery |
Mini Shai-Hulud has enumerated home directories, file paths and files associated with storing or containing credentials and other secrets.[3] |
|
| Enterprise | T1564 | .011 | Hide Artifacts: Ignore Process Interrupts |
Mini Shai-Hulud has suppressed output so that nothing is printed to terminal and has utilized silent exiting when environmental variables match restricted values.[3] |
| Enterprise | T1070 | .004 | Indicator Removal: File Deletion |
Mini Shai-Hulud has deleted all artifacts to include gathered credential archives to reduce disk persistence and detection.[2] |
| Enterprise | T1105 | Ingress Tool Transfer |
Mini Shai-Hulud has the ability to download additional payloads from adversary controlled or compromised infrastructure.[1][3][4] |
|
| Enterprise | T1559 | Inter-Process Communication |
Mini Shai-Hulud has executed via the use of |
|
| Enterprise | T1036 | .005 | Masquerading: Match Legitimate Resource Name or Location |
Mini Shai-Hulud has leveraged a user-agent string that mimics a standard git client to avoid detection within network logs.[3] |
| Enterprise | T1027 | .013 | Obfuscated Files or Information: Encrypted/Encoded File |
Mini Shai-Hulud has used a hybrid AES-256-GCM and RSA OAEP-SHA256 encryption to archive gathered data. Mini Shai-Hulud has also utilized custom MD5-keystream XOR cipher to encrypt data.[2] Mini Shai-Hulud has also been deployed via an obfuscated script using Bun JavaScript runtime.[5] |
| Enterprise | T1003 | .007 | OS Credential Dumping: Proc Filesystem |
Mini Shai-Hulud has scraped runner process memory to extract short-lived identity tokens, which it then exchanged for per-package npm trusted-publisher tokens.[5] |
| Enterprise | T1677 | Poisoned Pipeline Execution |
Mini Shai-Hulud has utilized Github Actions to propagate through the use of triggered workflows.[1][4][5] |
|
| Enterprise | T1090 | .003 | Proxy: Multi-hop Proxy |
Mini Shai-Hulud has the ability to exfiltrate stolen credentials via the Session messenger network.[1] |
| Enterprise | T1021 | .007 | Remote Services: Cloud Services |
Mini Shai-Hulud has accessed and propagated to AWS EC2 instances via SSM Send-Command.[4] |
| Enterprise | T1053 | .006 | Scheduled Task/Job: Systemd Timers |
Mini Shai-Hulud has obtained persistence on Linux devices by writing the |
| Enterprise | T1528 | Steal Application Access Token |
Mini Shai-Hulud has stolen application access tokens and other tokens to include those associated with CI/CD.[1][2][3][4][5] |
|
| Enterprise | T1649 | Steal or Forge Authentication Certificates |
Mini Shai-Hulud has collected victim client certificates to assist in signed authentication assertion with Azure environments.[3] |
|
| Enterprise | T1195 | .001 | Supply Chain Compromise: Compromise Software Dependencies and Development Tools |
Mini Shai-Hulud has published itself on compromised victim code repositories to propagate malicious versions of packages to other victims.[2][5][5] |
| Enterprise | T1082 | System Information Discovery |
Mini Shai-Hulud has gathered system information of victim hosts through the use of common discovery commands to include |
|
| Enterprise | T1614 | System Location Discovery |
Mini Shai-Hulud has discovered the compromised systems location through a query of the system timezone configuration and the locale settings.[3] |
|
| .001 | System Language Discovery |
Mini Shai-Hulud has the ability to check system details for its language configuration and terminates actions when the system is configured for the Russian language.[1][4] |
||
| Enterprise | T1016 | System Network Configuration Discovery |
Mini Shai-Hulud has discovered network configuration through the use of system commands to include |
|
| Enterprise | T1033 | System Owner/User Discovery |
Mini Shai-Hulud has leveraged commands such as |
|
| Enterprise | T1124 | System Time Discovery |
Mini Shai-Hulud has queried the system timezone configuration and timezone data files to include |
|
| Enterprise | T1205 | Traffic Signaling |
Mini Shai-Hulud has examined commit messages for a keyword followed by base64 encoded segments to validate communications and to execute subsequent actions to include exfiltration.[3] |
|
| Enterprise | T1552 | .001 | Unsecured Credentials: Credentials In Files |
Mini Shai-Hulud has collected credentials stored within configuration files.[2][4] Mini Shai-Hulud has also gathered credentials from files stored in common credential file paths to include targeting git-credentials, azureProfile.json, and application_default_credentials.json.[3][5] |
| .004 | Unsecured Credentials: Private Keys |
Mini Shai-Hulud has gathered unsecured credentials to include SSH private keys within .ssh.[2][3][5] |
||
| .005 | Unsecured Credentials: Cloud Instance Metadata API |
Mini Shai-Hulud has gathered credentials and secrets from AWS, Google Cloud Platform (GCP) and Azure metadata API.[3][5] |
||
| .007 | Unsecured Credentials: Container API |
Mini Shai-Hulud has gathered unsecured API keys stored in container orchestrators.[3] |
||
| Enterprise | T1550 | .001 | Use Alternate Authentication Material: Application Access Token |
Mini Shai-Hulud has the ability to authenticate using stolen application access tokens.[1][4][5] |
| Enterprise | T1078 | .004 | Valid Accounts: Cloud Accounts |
Mini Shai-Hulud has used compromised accounts for Docker Hub and GitHub to publish malicious software packages.[2] |
| Enterprise | T1497 | Virtualization/Sandbox Evasion |
Mini Shai-Hulud has evaded sandbox detection by applying a 1-in-6 probability gate that generates a random number which will only trigger the wiper functionality when the set number outcome is met even in environments that match parameters of a geopolitical target.[3] |
|
| .001 | System Checks |
Mini Shai-Hulud has evaded execution in virtual environments and sandboxes through checking system information to include the number of CPUs and exiting at times when there were less than four and other times when there were less than two CPUs.[1][3][4] |
||
| Enterprise | T1102 | .001 | Web Service: Dead Drop Resolver |
Mini Shai-Hulud has leveraged GitHub commit-search API to recover fallback C2 domains stored in auto-created public Github repositories.[1][2][3][4][5] |
| ID | Name | References |
|---|---|---|
| G1056 | TeamPCP |
TeamPCP has used Mini Shai-Hulud in supply chain campaigns targeting CI/CD workflows.[1][2][3][4][5][6] |