{"campaign":{"name":"Miasma: The Spreading Blight","slug":"miasma-the-spreading-blight","href":"/ti/campaigns/miasma-the-spreading-blight","description":"Supply-chain campaign in the Shai-Hulud worm lineage, a variant of / derived from Mini Shai-Hulud (TeamPCP-attributed). Also tracked by other researchers as the \"Hades Campaign\" (confirmed external alias / cross-reference name; like the \"Miasma\" name itself, it is an external label, not a string recovered in plaintext from any decoded artifact). As of 2026-06-08 the authoritative consolidated package list spans two ecosystems: npm (106 packages / 411 versions across the June 1 Trusted-Publishing @redhat-cloud-services wave and the June 3 Phantom Gyp Arm A) and PyPI (26 packages / 45 versions, newly surfaced and expanded). The PyPI package identities and versions are authoritative (HIGH CONFIDENCE), but the PyPI delivery mechanism, payload, and entry vector have NOT been analyzed (OBSERVED, not characterized); attribution of the PyPI packages to the Miasma payload is by authoritative-list inclusion only. The campaign-identifier string \"Miasma: The Spreading Blight\" was not recovered in plaintext from the June 1 sample but is corroborated by the June 3 liuende501 exfil account repo descriptions.","objective":"Steal developer, cloud, registry, and application credentials through malicious package execution and self-propagate via stolen tokens and trusted-publishing abuse.","aliases":["Hades Campaign"],"discovered_at":"2026-06-01"},"packages":[{"ecosystem":"npm","name":"@redhat-cloud-services/compliance-client","href":"/ti/packages/npm/@redhat-cloud-services/compliance-client","threat_types":["worm","credential_stealer","data_exfiltration","persistence"],"versions":["4.0.3","4.0.4"]},{"ecosystem":"npm","name":"@redhat-cloud-services/config-manager-client","href":"/ti/packages/npm/@redhat-cloud-services/config-manager-client","threat_types":["worm","credential_stealer","data_exfiltration","persistence"],"versions":["5.0.4","5.0.5"]},{"ecosystem":"npm","name":"@redhat-cloud-services/entitlements-client","href":"/ti/packages/npm/@redhat-cloud-services/entitlements-client","threat_types":["worm","credential_stealer","data_exfiltration","persistence"],"versions":["4.0.11","4.0.12"]},{"ecosystem":"npm","name":"@redhat-cloud-services/host-inventory-client","href":"/ti/packages/npm/@redhat-cloud-services/host-inventory-client","threat_types":["worm","credential_stealer","data_exfiltration","persistence"],"versions":["5.0.3","5.0.4"]},{"ecosystem":"npm","name":"@redhat-cloud-services/insights-client","href":"/ti/packages/npm/@redhat-cloud-services/insights-client","threat_types":["worm","credential_stealer","data_exfiltration","persistence"],"versions":["4.0.4","4.0.5"]},{"ecosystem":"npm","name":"@redhat-cloud-services/integrations-client","href":"/ti/packages/npm/@redhat-cloud-services/integrations-client","threat_types":["worm","credential_stealer","data_exfiltration","persistence"],"versions":["6.0.4","6.0.5"]},{"ecosystem":"npm","name":"@redhat-cloud-services/notifications-client","href":"/ti/packages/npm/@redhat-cloud-services/notifications-client","threat_types":["worm","credential_stealer","data_exfiltration","persistence"],"versions":["6.1.4","6.1.5"]},{"ecosystem":"npm","name":"@redhat-cloud-services/patch-client","href":"/ti/packages/npm/@redhat-cloud-services/patch-client","threat_types":["worm","credential_stealer","data_exfiltration","persistence"],"versions":["4.0.4","4.0.5"]},{"ecosystem":"npm","name":"@redhat-cloud-services/quickstarts-client","href":"/ti/packages/npm/@redhat-cloud-services/quickstarts-client","threat_types":["worm","credential_stealer","data_exfiltration","persistence"],"versions":["4.0.11","4.0.12"]},{"ecosystem":"npm","name":"@redhat-cloud-services/rbac-client","href":"/ti/packages/npm/@redhat-cloud-services/rbac-client","threat_types":["worm","credential_stealer","data_exfiltration","persistence"],"versions":["9.0.3","9.0.4"]},{"ecosystem":"npm","name":"@redhat-cloud-services/remediations-client","href":"/ti/packages/npm/@redhat-cloud-services/remediations-client","threat_types":["worm","credential_stealer","data_exfiltration","persistence"],"versions":["4.0.4","4.0.5"]},{"ecosystem":"npm","name":"@redhat-cloud-services/javascript-clients-shared","href":"/ti/packages/npm/@redhat-cloud-services/javascript-clients-shared","threat_types":["worm","credential_stealer","data_exfiltration","persistence"],"versions":["2.0.8","2.0.9"]},{"ecosystem":"npm","name":"@redhat-cloud-services/sources-client","href":"/ti/packages/npm/@redhat-cloud-services/sources-client","threat_types":["worm","credential_stealer","data_exfiltration","persistence"],"versions":["3.0.10","3.0.11"]},{"ecosystem":"npm","name":"@redhat-cloud-services/topological-inventory-client","href":"/ti/packages/npm/@redhat-cloud-services/topological-inventory-client","threat_types":["worm","credential_stealer","data_exfiltration","persistence"],"versions":["3.0.10","3.0.11"]},{"ecosystem":"npm","name":"@redhat-cloud-services/vulnerabilities-client","href":"/ti/packages/npm/@redhat-cloud-services/vulnerabilities-client","threat_types":["worm","credential_stealer","data_exfiltration","persistence"],"versions":["2.1.8","2.1.9"]},{"ecosystem":"npm","name":"@redhat-cloud-services/chrome","href":"/ti/packages/npm/@redhat-cloud-services/chrome","threat_types":["worm","credential_stealer","data_exfiltration","persistence"],"versions":["2.3.1","2.3.2"]},{"ecosystem":"npm","name":"@redhat-cloud-services/eslint-config-redhat-cloud-services","href":"/ti/packages/npm/@redhat-cloud-services/eslint-config-redhat-cloud-services","threat_types":["worm","credential_stealer","data_exfiltration","persistence"],"versions":["3.2.1","3.2.2"]},{"ecosystem":"npm","name":"@redhat-cloud-services/frontend-components","href":"/ti/packages/npm/@redhat-cloud-services/frontend-components","threat_types":["worm","credential_stealer","data_exfiltration","persistence"],"versions":["7.7.2","7.7.3"]},{"ecosystem":"npm","name":"@redhat-cloud-services/frontend-components-advisor-components","href":"/ti/packages/npm/@redhat-cloud-services/frontend-components-advisor-components","threat_types":["worm","credential_stealer","data_exfiltration","persistence"],"versions":["3.8.2","3.8.4"]},{"ecosystem":"npm","name":"@redhat-cloud-services/frontend-components-config","href":"/ti/packages/npm/@redhat-cloud-services/frontend-components-config","threat_types":["worm","credential_stealer","data_exfiltration","persistence"],"versions":["6.11.3","6.11.4"]},{"ecosystem":"npm","name":"@redhat-cloud-services/frontend-components-config-utilities","href":"/ti/packages/npm/@redhat-cloud-services/frontend-components-config-utilities","threat_types":["worm","credential_stealer","data_exfiltration","persistence"],"versions":["4.11.2","4.11.3"]},{"ecosystem":"npm","name":"@redhat-cloud-services/frontend-components-notifications","href":"/ti/packages/npm/@redhat-cloud-services/frontend-components-notifications","threat_types":["worm","credential_stealer","data_exfiltration","persistence"],"versions":["6.9.2","6.9.3"]},{"ecosystem":"npm","name":"@redhat-cloud-services/frontend-components-remediations","href":"/ti/packages/npm/@redhat-cloud-services/frontend-components-remediations","threat_types":["worm","credential_stealer","data_exfiltration","persistence"],"versions":["4.9.2","4.9.3"]},{"ecosystem":"npm","name":"@redhat-cloud-services/frontend-components-testing","href":"/ti/packages/npm/@redhat-cloud-services/frontend-components-testing","threat_types":["worm","credential_stealer","data_exfiltration","persistence"],"versions":["1.2.1","1.2.2"]},{"ecosystem":"npm","name":"@redhat-cloud-services/frontend-components-translations","href":"/ti/packages/npm/@redhat-cloud-services/frontend-components-translations","threat_types":["worm","credential_stealer","data_exfiltration","persistence"],"versions":["4.4.1","4.4.2"]},{"ecosystem":"npm","name":"@redhat-cloud-services/frontend-components-utilities","href":"/ti/packages/npm/@redhat-cloud-services/frontend-components-utilities","threat_types":["worm","credential_stealer","data_exfiltration","persistence"],"versions":["7.4.1","7.4.2"]},{"ecosystem":"npm","name":"@redhat-cloud-services/rule-components","href":"/ti/packages/npm/@redhat-cloud-services/rule-components","threat_types":["worm","credential_stealer","data_exfiltration","persistence"],"versions":["4.7.2","4.7.3"]},{"ecosystem":"npm","name":"@redhat-cloud-services/tsc-transform-imports","href":"/ti/packages/npm/@redhat-cloud-services/tsc-transform-imports","threat_types":["worm","credential_stealer","data_exfiltration","persistence"],"versions":["1.2.2","1.2.4"]},{"ecosystem":"npm","name":"@redhat-cloud-services/types","href":"/ti/packages/npm/@redhat-cloud-services/types","threat_types":["worm","credential_stealer","data_exfiltration","persistence"],"versions":["3.6.1","3.6.2"]},{"ecosystem":"npm","name":"@redhat-cloud-services/hcc-feo-mcp","href":"/ti/packages/npm/@redhat-cloud-services/hcc-feo-mcp","threat_types":["worm","credential_stealer","data_exfiltration","persistence"],"versions":["0.3.1","0.3.2"]},{"ecosystem":"npm","name":"@redhat-cloud-services/hcc-kessel-mcp","href":"/ti/packages/npm/@redhat-cloud-services/hcc-kessel-mcp","threat_types":["worm","credential_stealer","data_exfiltration","persistence"],"versions":["0.3.1","0.3.2"]},{"ecosystem":"npm","name":"@redhat-cloud-services/hcc-pf-mcp","href":"/ti/packages/npm/@redhat-cloud-services/hcc-pf-mcp","threat_types":["worm","credential_stealer","data_exfiltration","persistence"],"versions":["0.6.1","0.6.2"]},{"ecosystem":"pypi","name":"gpt-pilot","href":"/ti/packages/pypi/gpt-pilot","threat_types":["credential_stealer","data_exfiltration","persistence"],"versions":["compromised-source-2026-06-08"]},{"ecosystem":"pypi","name":"pantheon-toolsets","href":"/ti/packages/pypi/pantheon-toolsets","threat_types":["other"],"versions":["0.5.5","0.5.6"]},{"ecosystem":"pypi","name":"pantheon-agents","href":"/ti/packages/pypi/pantheon-agents","threat_types":["other"],"versions":["0.6.1","0.6.2"]},{"ecosystem":"pypi","name":"magique","href":"/ti/packages/pypi/magique","threat_types":["other"],"versions":["0.6.8","0.6.9"]},{"ecosystem":"pypi","name":"magique-ai","href":"/ti/packages/pypi/magique-ai","threat_types":["other"],"versions":["0.4.4","0.4.5"]},{"ecosystem":"pypi","name":"executor-engine","href":"/ti/packages/pypi/executor-engine","threat_types":["other"],"versions":["0.3.4","0.3.5"]},{"ecosystem":"pypi","name":"executor-http","href":"/ti/packages/pypi/executor-http","threat_types":["other"],"versions":["0.1.3","0.1.4"]},{"ecosystem":"pypi","name":"funcdesc","href":"/ti/packages/pypi/funcdesc","threat_types":["other"],"versions":["0.2.2","0.2.3"]},{"ecosystem":"pypi","name":"cmd2func","href":"/ti/packages/pypi/cmd2func","threat_types":["other"],"versions":["0.2.2","0.2.3"]},{"ecosystem":"pypi","name":"coolbox","href":"/ti/packages/pypi/coolbox","threat_types":["other"],"versions":["0.4.1","0.4.2"]},{"ecosystem":"pypi","name":"ufish","href":"/ti/packages/pypi/ufish","threat_types":["other"],"versions":["0.1.2","0.1.3"]},{"ecosystem":"pypi","name":"napari-ufish","href":"/ti/packages/pypi/napari-ufish","threat_types":["other"],"versions":["0.0.2","0.0.3"]},{"ecosystem":"pypi","name":"nucbox","href":"/ti/packages/pypi/nucbox","threat_types":["other"],"versions":["0.1.2","0.1.3"]},{"ecosystem":"pypi","name":"okite","href":"/ti/packages/pypi/okite","threat_types":["other"],"versions":["0.0.7","0.0.8"]},{"ecosystem":"pypi","name":"bramin","href":"/ti/packages/pypi/bramin","threat_types":["other"],"versions":["0.0.2","0.0.3","0.0.4"]},{"ecosystem":"pypi","name":"synago","href":"/ti/packages/pypi/synago","threat_types":["other"],"versions":["0.1.1","0.1.2"]},{"ecosystem":"pypi","name":"mrbios","href":"/ti/packages/pypi/mrbios","threat_types":["other"],"versions":["0.1.1","0.1.2"]},{"ecosystem":"pypi","name":"uprobe","href":"/ti/packages/pypi/uprobe","threat_types":["other"],"versions":["0.1.3","0.1.4"]},{"ecosystem":"pypi","name":"spateo-release","href":"/ti/packages/pypi/spateo-release","threat_types":["other"],"versions":["1.1.2"]},{"ecosystem":"pypi","name":"dynamo-release","href":"/ti/packages/pypi/dynamo-release","threat_types":["other"],"versions":["1.5.4"]},{"ecosystem":"pypi","name":"ppkt2synergy","href":"/ti/packages/pypi/ppkt2synergy","threat_types":["other"],"versions":["0.1.1"]},{"ecosystem":"pypi","name":"mflux-streamlit","href":"/ti/packages/pypi/mflux-streamlit","threat_types":["other"],"versions":["0.0.3","0.0.4"]},{"ecosystem":"pypi","name":"nhmpy","href":"/ti/packages/pypi/nhmpy","threat_types":["other"],"versions":["2.4.7"]},{"ecosystem":"pypi","name":"embiggen","href":"/ti/packages/pypi/embiggen","threat_types":["other"],"versions":["0.11.97"]},{"ecosystem":"pypi","name":"gpsea","href":"/ti/packages/pypi/gpsea","threat_types":["other"],"versions":["0.9.14"]},{"ecosystem":"pypi","name":"pyphetools","href":"/ti/packages/pypi/pyphetools","threat_types":["other"],"versions":["0.9.120"]},{"ecosystem":"pypi","name":"ensmallen","href":"/ti/packages/pypi/ensmallen","threat_types":["other"],"versions":["0.8.101"]}],"indicators":[{"kind":"sha256","value":"031ba872d5a84bfb18115f432811e4b45180346a1bae653f7fd85f918e7bb3a3","href":"/ti/ioc/sha256/031ba872d5a84bfb18115f432811e4b45180346a1bae653f7fd85f918e7bb3a3","context":"patch-client@4.0.4 malicious tarball SHA256"},{"kind":"sha256","value":"df1732f5bfec12e066be44dee02ec8a243e4868d38672c1b1d065359dd735a14","href":"/ti/ioc/sha256/df1732f5bfec12e066be44dee02ec8a243e4868d38672c1b1d065359dd735a14","context":"index.js dropper SHA256 (ROT-9 + AES-128-GCM loader)"},{"kind":"sha256","value":"0dc06ecdaa63fe24859cfd955053c23245c536e4733480239d14bebf12688e35","href":"/ti/ioc/sha256/0dc06ecdaa63fe24859cfd955053c23245c536e4733480239d14bebf12688e35","context":"decrypted Bun worm payload SHA256"},{"kind":"url","value":"https://registry.npmjs.org/-/npm/v1/oidc/token/exchange/package/","href":"/ti/ioc/url/url-6e07621b67f6","context":"npm OIDC-to-publish-token exchange endpoint abused for self-propagation"},{"kind":"url","value":"https://github.com/oven-sh/bun/releases/download/bun-v1.3.13/","href":"/ti/ioc/url/url-64f182498063","context":"Bun 1.3.13 runtime download URL used by Python stager; same version pinned across all Shai-Hulud/Miasma waves"},{"kind":"ipv4","value":"169.254.169.254","href":"/ti/ioc/ipv4/169.254.169.254","context":"AWS IMDS endpoint queried for cloud credentials"},{"kind":"ipv4","value":"169.254.170.2","href":"/ti/ioc/ipv4/169.254.170.2","context":"AWS ECS task metadata endpoint queried for credentials"},{"kind":"file_path","value":"/var/run/secrets/kubernetes.io/serviceaccount/token","href":"/ti/ioc/file_path/file_path-ca72b599811b","context":"Kubernetes service account token harvested"},{"kind":"file_path","value":"/var/run/docker.sock","href":"/ti/ioc/file_path/file_path-71329c4cc6e3","context":"Docker socket abused for container escape"},{"kind":"file_path","value":"/tmp/p<random>.js","href":"/ti/ioc/file_path/file_path-689667fb8c5f","context":"runtime dropper artifact (decoded loader)"},{"kind":"file_path","value":"/tmp/b-<random>/bun","href":"/ti/ioc/file_path/file_path-59b338a3cd5c","context":"runtime artifact (downloaded Bun runtime)"},{"kind":"file_path","value":"/tmp/kitty-<random>","href":"/ti/ioc/file_path/file_path-3f0c1ce3224a","context":"runtime worm artifact"},{"kind":"domain","value":"login.microsoftonline.com","href":"/ti/ioc/domain/login.microsoftonline.com","context":"Azure managed identity / token endpoint queried"},{"kind":"domain","value":"graph.microsoft.com","href":"/ti/ioc/domain/graph.microsoft.com","context":"Azure Graph API queried for identity data"},{"kind":"email","value":"justinorringer@gmail.com","href":"/ti/ioc/email/justinorringer@gmail.com","context":"spoofed/unconfirmed git author on malicious commits (Justin Orringer)"},{"kind":"email","value":"claude@users.noreply.github.com","href":"/ti/ioc/email/claude@users.noreply.github.com","context":"Spoofed git commit author identity used to plant the binary dropper and blend with AI-assistant automation. Also seen across the Shai-Hulud / Mini Shai-Hulud worm family."},{"kind":"github_repo","value":"RedHatInsights/javascript-clients","href":"/ti/ioc/github_repo/github_repo-1bc3b2894993","context":"compromised repo; workflow ci.yml; branches oidc-4d5900f3, oidc-6523a11b; 15 packages"},{"kind":"github_repo","value":"RedHatInsights/frontend-components","href":"/ti/ioc/github_repo/github_repo-9d459b8f2e91","context":"compromised repo; workflow ci.yaml; branches oidc-61fff775, oidc-af10000d; 14 packages"},{"kind":"github_repo","value":"RedHatInsights/platform-frontend-ai-toolkit","href":"/ti/ioc/github_repo/github_repo-f8474b5474b9","context":"compromised repo; workflow release.yml; branches oidc-2530ec68, oidc-93b9a955; 3 packages"},{"kind":"sha256","value":"51b4dd39a15af1e28e97adc375849d688423ec3d88e8010644395fcdea52a3cc","href":"/ti/ioc/sha256/51b4dd39a15af1e28e97adc375849d688423ec3d88e8010644395fcdea52a3cc","context":"core/telemetry/_hooks.py — Python stager injected into gpt-pilot; derived from edxeth/Shai-Hulud-Open-Source PYTHON_LOADER.py"},{"kind":"sha256","value":"c96f37e1b9cdc9683a300909492ed9f770b620d0037e5b80e23753cba7ca4077","href":"/ti/ioc/sha256/c96f37e1b9cdc9683a300909492ed9f770b620d0037e5b80e23753cba7ca4077","context":"core/telemetry/_runtime.bin — 758 KB Bun JS payload with // @bun @bun-cjs header, MxGPr9 string-array rotation obfuscation, fromCodePoint decoder"},{"kind":"file_path","value":"core/telemetry/.loader.lock","href":"/ti/ioc/file_path/file_path-01372a18cbf5","context":"Run-once lock file; presence indicates prior stager execution on the host"},{"kind":"github_repo","value":"Pythagora-io/gpt-pilot","href":"/ti/ioc/github_repo/github_repo-5278c0f8c305","context":"Compromised Python AI coding assistant repository; injected via direct PAT push"},{"kind":"github_repo","value":"edxeth/Shai-Hulud-Open-Source","href":"/ti/ioc/github_repo/github_repo-6686c727cc01","context":"Attacker toolkit repository (created 2026-05-13); contains src/assets/PYTHON_LOADER.py — the template for the gpt-pilot stager"}],"ttps":[{"name":"Supply Chain Compromise: Compromise Software Dependencies and Development Tools","mitre_attack_id":"T1195.001","href":"/ti/ttps/T1195.001"},{"name":"Trusted Relationship","mitre_attack_id":"T1199","href":"/ti/ttps/T1199"},{"name":"Command and Scripting Interpreter: JavaScript","mitre_attack_id":"T1059.007","href":"/ti/ttps/T1059.007"},{"name":"Obfuscated Files or Information","mitre_attack_id":"T1027","href":"/ti/ttps/T1027"},{"name":"Deobfuscate/Decode Files or Information","mitre_attack_id":"T1140","href":"/ti/ttps/T1140"},{"name":"Ingress Tool Transfer","mitre_attack_id":"T1105","href":"/ti/ttps/T1105"},{"name":"Unsecured Credentials: Credentials In Files","mitre_attack_id":"T1552.001","href":"/ti/ttps/T1552.001"},{"name":"Unsecured Credentials: Cloud Instance Metadata API","mitre_attack_id":"T1552.005","href":"/ti/ttps/T1552.005"},{"name":"Steal Application Access Token","mitre_attack_id":"T1528","href":"/ti/ttps/T1528"},{"name":"Forge Web Credentials: SAML Tokens","mitre_attack_id":"T1606.002","href":"/ti/ttps/T1606.002"},{"name":"Exfiltration Over C2 Channel","mitre_attack_id":"T1041","href":"/ti/ttps/T1041"},{"name":"Exfiltration to Code Repository","mitre_attack_id":"T1567.001","href":"/ti/ttps/T1567.001"},{"name":"Account Manipulation","mitre_attack_id":"T1098","href":"/ti/ttps/T1098"},{"name":"Deploy Container","mitre_attack_id":"T1610","href":"/ti/ttps/T1610"},{"name":"Event Triggered Execution","mitre_attack_id":"T1546","href":"/ti/ttps/T1546"},{"name":"Execution Guardrails: Environmental Keying","mitre_attack_id":"T1480.001","href":"/ti/ttps/T1480.001"},{"name":"Software Discovery: Security Software Discovery","mitre_attack_id":"T1518.001","href":"/ti/ttps/T1518.001"},{"name":"Self-Propagation via Trusted Publishing Worm","href":"/ti/ttps/self-propagation-via-trusted-publishing-worm"},{"name":"Spoofed User-Agent on GitHub API","href":"/ti/ttps/spoofed-user-agent-on-github-api"},{"name":"Compromise Software Supply Chain","mitre_attack_id":"T1195.002","href":"/ti/ttps/T1195.002"},{"name":"Command and Scripting Interpreter: Python","mitre_attack_id":"T1059.006","href":"/ti/ttps/T1059.006"},{"name":"Masquerading","mitre_attack_id":"T1036","href":"/ti/ttps/T1036"}],"related_campaigns":[{"name":"Mini Shai-Hulud","slug":"mini-shai-hulud","href":"/ti/campaigns/mini-shai-hulud","relationship":"variant-of"}],"reports":[{"title":"Miasma: The Spreading Blight (Mini Shai-Hulud lineage) Hits @redhat-cloud-services: Multiple Packages at Risk","url":"https://safedep.io/redhat-cloud-services-hit-by-mini-shai-hulud-npm-worm","published_at":"2026-06-01"},{"title":"gpt-pilot Python Bun Loader Shai-Hulud Injection","url":"https://safedep.io/gpt-pilot-python-bun-loader-shai-hulud-injection","published_at":"2026-06-08"},{"title":"Miasma: The Spreading Blight — Authoritative Consolidated Package List (PyPI arm surfaced)","published_at":"2026-06-08"}]}