Hades PyPI Attack: 19 Packages Poisoned to Auto-Run Bun Credential Stealer
The Hacker NewsArchived Jun 09, 2026✓ Full text saved
The Miasma supply chain campaign has sparked a fresh attack wave called Hades, this time involving 37 malicious wheel artifacts across 19 packages in the Python Package Index (PyPI) registry, as the Mini Shai-Hulud-style attacks continue to be refined and splintered to target specific ecosystems. "The compromised releases shipped a *-setup.pth file that attempts to execute automatically
Full text archived locally
✦ AI Summary· Claude Sonnet
Hades PyPI Attack: 19 Packages Poisoned to Auto-Run Bun Credential Stealer
Ravie LakshmananJun 09, 2026Supply Chain Attack / Malware
The Miasma supply chain campaign has sparked a fresh attack wave called Hades, this time involving 37 malicious wheel artifacts across 19 packages in the Python Package Index (PyPI) registry, as the Mini Shai-Hulud-style attacks continue to be refined and splintered to target specific ecosystems.
"The compromised releases shipped a *-setup.pth file that attempts to execute automatically during Python startup, download the Bun JavaScript runtime, and run an obfuscated JavaScript payload named _index.js," Socket said in a new analysis.
The list of identified packages is below -
bramin 0.0.2, 0.0.3, 0.0.4
cmd2func 0.2.2, 0.2.3
coolbox 0.4.1, 0.4.2
dynamo-release 1.5.4
executor-engine 0.3.4, 0.3.5
executor-http 0.1.3, 0.1.4
funcdesc 0.2.2, 0.2.3
magique 0.6.8, 0.6.9
magique-ai 0.4.4, 0.4.5
mrbios 0.1.1, 0.1.2
napari-ufish 0.0.2, 0.0.3
nucbox 0.1.2, 0.1.3
okite 0.0.7, 0.0.8
pantheon-agents 0.6.1, 0.6.2
pantheon-toolsets 0.5.5, 0.5.6
spateo-release 1.1.2
synago 0.1.1, 0.1.2
ufish 0.1.2, 0.1.3
uprobe 0.1.3, 0.1.4
Like in the previous Shai-Hulud and Miasma campaigns, the malicious payload downloads and installs the Bun JavaScript runtime, which is then used to launch a heavily obfuscated JavaScript stealer that can harvest a wide range of data from developer systems.
This includes secrets associated with GitHub, npm, PyPI, RubyGems, JFrog, CircleCI, Anthropic, AWS, GCP, Azure, and Kubernetes, along with Docker configurations, Vault tokens, SSH keys, shell histories, .env files, .npmrc files, .pypirc files, Claude/MCP configurations, and other local or runner-accessible credentials.
What's changed this time around is the campaign marker. While previous iterations exported the harvested data to a public GitHub repository with the description "Miasma: The Spreading Blight," "Miasma: The Spreading Blight," and "Miasma - The Spreading Blight," the latest wave includes the repository descriptions -
Hades - The End for the Damned
Hades * The End for the Damned
"That makes Hades best understood as a PyPI branch of the same Mini Shai-Hulud / Miasma lineage, not a standalone Python malware incident," the application security company said. "The core playbook remains the same: abuse trusted package channels, execute before normal package use, stage a Bun-powered JavaScript payload, steal developer and CI/CD credentials, and use GitHub-centric exfiltration and propagation logic."
What has changed this time around is the use of a *-setup.pth file that's processed by Python's "site" module during interpreter startup, resulting in the execution of the malicious payload after installation without requiring the victim to import the poisoned package. The payload, in turn, downloads and runs Bun from GitHub and runs the stealer, but not before checking if the system corresponds to the Russian locale.
"This is the Python equivalent of the npm install-hook problem that Shai-Hulud and Miasma repeatedly exploit," Socket explained. "The syntax is different, but the security consequence is the same: dependency installation creates an execution edge before application code is reviewed or invoked."
Hades Cluster Attempts to Mislead AI Security Scanners
Also compromised as part of the Hades campaign are a number of packages related to the computational biology, bioinformatics, and genotype-phenotype analysis ecosystem -
embiggen 0.11.97
ensmallen 0.8.101
gpsea 0.9.14
mflux-streamlit 0.0.3, 0.0.4
nhmpy 2.4.7
ppkt2synergy 0.1.1
pyphetools 0.9.120
Interestingly, this cluster employs a different approach in that the entry point is embedded inside the package's "__init__.py" file as an obfuscated single-line import hook. However, the outcome is the same: Downloading and running the Bun runtime, followed by the execution of the JavaScript payload.
"The use of the Bun runtime remains a consistent theme," StepSecurity said. "Downloading Bun as a standalone ZIP file allows the malware to run complex JavaScript tasks in environments that lack a Node.js installation, bypassing traditional package manager controls and network proxy logs."
In what has been characterized as a novel artificial intelligence (AI) defense evasion technique, the malware also incorporates a plain-text prompt injection that attempts to deceive Large Language Model (LLM)-based package analysis tools to instruct the model to classify the package as safe.
On top of that, the malware queries GitHub commits for the keyword "TheBeautifulSnadsOfTime" to extract a Base64-encoded string containing a JavaScript payload. It also polls GitHub for commits matching the keyword "firedalazer" so as to fetch a Python-based dropper and execute it.
Some of the important features built into the Hades malware are listed below -
Replicate and spread laterally across developer networks via SSH or SCP, push trojanized versions of PyPI packages from compromised systems by exploiting the developers' OpenID Connect (OIDC) trust configurations.
Target GitHub repositories to extract organization secrets using GitHub Actions runners if the harvested GitHub token has appropriate write permissions.
Backdoor local workspace folders to trigger code execution when analyzed by AI assistants or opened in IDEs. Targets include Anthropic Claude, OpenAI Codex, Google Gemini, Microsoft Copilot, Cline, Aider, Tabby, Amazon Q, Cody, Bolt, and Continue.
Install a background service named "gh-token-monitor" that acts as a wiper by removing all data ("rm -rf ~/; rm -rf ~/Documents") if the stolen GitHub token is revoked by the developer.
"A key capability of the Miasma actor is reading the process memory of the GitHub Actions runner (the Runner.Worker process) to extract secrets," security researcher Rohan Prabhu said. "In earlier campaigns, this was limited to Linux systems using /proc/{pid}/mem. The Hades Campaign introduces tailored macOS and Windows memory scrapers."
The development comes as StepSecurity revealed that an unknown attacker compromised the GitHub account ("LeonOstrez") linked to "Pythagora-io/gpt-pilot," a popular open-source AI developer tool, and force-pushed a variant of the Shai-Hulud credential-stealing worm to the main branch. The malware is designed to activate silently when an unsuspecting developer runs the project, while avoiding systems with a Russian locale.
"The malware, a variant of the Shai-Hulud worm, was stopped by an unlikely defender: ruff, a Python code formatter," Ashish Kurmi, co-founder and CTO of StepSecurity, said. "The attacker tried twice to get the malicious code past CI and failed both times because their injected Python file did not match the project's formatting and linting rules."
Software supply chain security company Snyk has described these attacks as part of the Shai-Hulud / Miasma lineage, with each wave leveraging a Bun-runtime obfuscated stealer and combining it with "new persistence, new exfiltration routes, and new ways to fire code automatically at install or build time."
"The Miasma campaign proves that having signed keys and authenticated maintainer accounts are no longer an absolute guarantee of safety," Cloudsmith said. "When upstream registries and repos are compromised, public code becomes one of the easiest, and most direct, ways of getting pwned."
Found this article interesting? Follow us on Google News, Twitter and LinkedIn to read more exclusive content we post.
SHARE
Tweet
Share
Share
SHARE
artificial intelligence, CI/CD, Credential Theft, cybersecurity, Developer Tools, GitHub, Malware, PyPI, Python, Supply Chain Attack
⚡ Top Stories This Week
Dashlane Discloses Brute-Force Attack, Encrypted Vaults of Fewer Than 20 Users Downloaded
Microsoft Slams Public Zero-Day Disclosures Amid GitHub Researcher Account Removal
Google June 2026 Android Update Patches 124 Flaws, One Actively Exploited
Threat Actors Exploit Critical FortiClient EMS Flaw to Deploy Credential Stealer
ChatGPhish Vulnerability Turns ChatGPT Web Summaries Into a Phishing Surface
ThreatsDay Bulletin: Claude Security Plugin, Azure Priv-Esc, Kali365 MFA Bypass, FIFA Scams +15 More
Oracle WebLogic CVE-2024-21182 Added to KEV Catalog After Active Exploitation
Microsoft Patches SharePoint RCE Flaw CVE-2026-45659 Across Server Versions
Attackers Use LLM Agent for Post-Exploitation After Marimo CVE-2026-39987 Exploit
Malicious npm Package Stole Files From Claude AI User Directory via GitHub
PAN-OS GlobalProtect Authentication Bypass (CVE-2026-0257) Under Active Exploitation
⚡ Weekly Recap: New Linux Flaw, PAN-OS Exploit, AI-Powered Attacks, OAuth Phishing and More
OpenAI Codex Authentication Tokens Stolen in codexui-android npm Supply Chain Attack
GlassWorm Malware Takedown Disrupts Developer Supply Chain Attack Infrastructure
AI Chatbot Recommendations Redirect Users to Cryptojacking Malware Sites
Miasma Supply Chain Attack Compromises Red Hat npm Packages with Credential-Stealing Worm
Load More ▼
⭐ Featured Resources
Watch AI Turn Vulnerabilities Into Working Exploits in Minutes (See the Demo)
Learn How to Stop Attacks Before They Reach Your EDR – With PHASR
[Guide] The Real Security Risks of Shadow AI (And Where You’re Exposed)
Your Employees Are Using AI in Ways You Can’t See – 2026 State of AI Report