Cyber Security News

Shai-Hulud Malware Campaign Abuses 23 PyPI Packages in Developer-Focused Attack

A rapidly evolving supply chain campaign dubbed “Shai-Hulud” is targeting developers through malicious Python packages. Researchers have identified 23 newly weaponised PyPI artefacts, expanding the scope of the ongoing Mini Shai-Hulud, Miasma, and Hades malware operations.

The latest findings highlight a shift in attacker tradecraft, combining multiple delivery techniques to compromise developer environments, CI/CD pipelines, and scientific computing workflows.

Shai-Hulud Malware Campaign

Security researchers from Socket report that this new wave builds on previously documented malicious PyPI packages but introduces more advanced execution mechanisms.

Unlike earlier variants that relied heavily on Python startup hooks, the new campaign incorporates native extensions and modular payload delivery, enabling improved evasion and flexibility.

The attackers are actively experimenting with package themes, including bioinformatics libraries and AI/MCP tooling, to increase infection surface among high-value developer targets.

The campaign now spans multiple delivery branches. One technique continues to abuse .pth startup hooks, which allow malicious code to execute automatically when Python initializes.

These hooks download the Bun JavaScript runtime and execute an obfuscated _index.js payload. A second, stealthier approach embeds malicious logic within compiled .abi3.so native extensions, enabling execution at import time.

This method is particularly effective in bioinformatics packages, where compiled extensions are common and often escape scrutiny during code review.

A third notable variant involves the langchain-core-mcp package, which introduces a split-loader technique. Instead of bundling the malicious JavaScript payload, the package deploys a .pth loader that searches Python’s sys.path for an external _index.js file.

This decoupling of loader and payload enables attackers to bypass traditional detection mechanisms that rely on identifying both components within the same package artifact. It also suggests potential staged infections where multiple packages or environments contribute to full payload execution.

Shai-Hulud Malware Campaign Abuses 23 PyPI Packages (Source: socket)

The underlying payload follows the Hades malware pattern, leveraging heavily obfuscated JavaScript executed via Bun. Once triggered, it targets sensitive developer assets, including API tokens, cloud credentials, SSH keys, container configurations, and package registry secrets.

Environments such as CI/CD runners are particularly at risk, as compromised credentials can enable further supply chain attacks, including malicious package publishing and infrastructure access.

An additional layer of sophistication is observed in the malware’s anti-analysis techniques. The _index.js payload includes misleading comment blocks designed to disrupt AI-based security analysis tools. These comments attempt to trigger false interpretations or safety filters, delaying detection and complicating automated triage workflows.

The campaign disproportionately targets bioinformatics and AI development ecosystems. Malicious versions of legitimate scientific packages such as embiggen, ensmallen, and pyphetools indicate deliberate targeting of research environments, while typosquatting packages like rsquests and tlask aim to capture unsuspecting developers through naming confusion.

Indicators of Compromise (IOCs) associated with this campaign include the following:

IndicatorTypeDescription / Context
dreamgen@1.8.1Malicious PyPI packagePart of newer Shai-Hulud / Hades PyPI wave, delivers JavaScript stealer payload
embiggen@0.11.97Malicious PyPI packageBioinformatics-themed package trojanized in this campaign
ensmallen@0.8.101Malicious PyPI packageBioinformatics package using trojanized native extensions
gpsea@0.9.14Malicious PyPI packageBioinformatics / genomics-themed package abusing .abi3.so loader
instructor-mcp@1.15.2Malicious PyPI packageMCP-themed package tied to Mini Shai-Hulud activity
instructor-mcp@1.15.3Malicious PyPI packageNewer MCP-themed variant in same PyPI wave
langchain-core-mcp@1.4.2Malicious PyPI packageUses .pth startup hook, searches sys.path for external index.js payload
langchain-core-mcp@1.4.3Malicious PyPI packageSame loader family, updated artifact
mem8@6.0.1Malicious PyPI packageMalicious memory-related package in this campaign
mflux-streamlit@0.0.3Malicious PyPI packageStreamlit-themed package used as delivery vehicle
mflux-streamlit@0.0.4Malicious PyPI packageNewer malicious version in same family
openai-mcp@2.41.1Malicious PyPI packageOpenAI/MCP-themed package targeting AI developers
openai-mcp@2.41.2Malicious PyPI packageFollow-on malicious version
orchestr8-platform@3.3.2Malicious PyPI packageOrchestration-themed package abused in this wave
phenopacket-store-toolkit@0.1.7Malicious PyPI packageTargets scientific / phenotyping workflows
ppkt2synergy@0.1.1Malicious PyPI packageBioinformatics-focused package with embedded payload
pyphetools@0.9.120Malicious PyPI packageTrojanized scientific package using native extension trigger
ray-mcp-server@0.2.1Malicious PyPI packageMCP server–style package delivering Hades payload
rlask@3.1.7Typosquatted packageLookalike of Flask ecosystem packages
rsquests@2.34.3Typosquatted packageLookalike of requests library targeting Python developers
tiktoken-mcp@0.13.1Malicious PyPI packageTokenization/MCP-themed package linked to campaign
tiktoken-mcp@0.13.2Malicious PyPI packageNewer malicious version of same package
tlask@3.1.4Typosquatted packageFlask-themed typosquat designed to capture developer installs
langchain_core-setup.pthMalicious filePython startup hook used by langchain-core-mcp loader
langchain_core_mcp-1.4.2-py3-none-any.whlMalicious wheelMalicious langchain-core-mcp artifact
langchain_core_mcp-1.4.3-py3-none-any.whlMalicious wheelUpdated malicious wheel variant
os.path.join(d,”index.js”)Code patternPayload discovery logic scanning sys.path for index.js
s.run([_b,”run”,_j],check=False)Code patternBun-based execution call for discovered JavaScript payload
Bun/1.3.14User-AgentObserved upload UA for langchain-core-mcp PyPI activity
ensmallen_haswell.abi3.soMalicious native moduleTrojanized .abi3.so extension executing payload at import
ensmallen_core2.abi3.soMalicious native moduleAdditional trojanized native extension in bioinformatics cluster
.abi3.so paired with index.jsSuspicious layoutImport-time execution pattern requiring review
SHA256: 6d332f814f15f19758d65026bbfd0a8c4…File hash (SHA256)Malicious langchain_core_mcp-1.4.2 wheel hash
SHA256: 6506d31707a39949f89534bf9705bcf8…File hash (SHA256)Malicious langchain_core-setup.pth file hash
thebeautifulmarchoftimeString / C2 markerFallback C2 discovery string used by malware
thebeautifulsnadsoftimeString / C2 markerAlternate fallback C2 discovery string
/tmp/.sshu-setup.jsFile pathSSH propagation script location
/var/run/docker.sockHost artifactLegitimate Docker socket targeted for abuse
harden-runnerString / tool referenceLegitimate StepSecurity tool referenced/targeted by malware
step-securityString / tool referenceLegitimate StepSecurity identifier referenced/blocked
stepsecurityString / tool referenceAlternate StepSecurity identifier referenced/blocked
agent.stepsecurity.ioDomainLegitimate StepSecurity telemetry domain reportedly blocked
api.stepsecurity.ioDomainLegitimate StepSecurity API domain reportedly blocked
app.stepsecurity.ioDomainLegitimate StepSecurity app domain reportedly blocked

Note: IP addresses and domains are intentionally defanged (e.g., [.]) to prevent accidental resolution or hyperlinking. Re-fang only within controlled threat intelligence platforms such as MISP, VirusTotal, or your SIEM.

Defenders are advised to audit Python environments for suspicious .pth files, unexpected native extensions, and unauthorized JavaScript execution.

Immediate actions should include removing affected packages, rotating exposed credentials, and reviewing CI/CD pipelines for anomalies. Monitoring sys.path abuse and Bun runtime downloads can also provide early detection signals.

This campaign underscores a broader trend in software supply chain attacks: increasing modularity, cross-language execution, and targeted ecosystem abuse. As threat actors continue refining these techniques, organizations must prioritize dependency security and runtime behavior analysis over static package inspection alone.

Follow us on Google News, LinkedIn, and X to Get Instant Updates and Set GBH as a Preferred Source in Google.

Divya

Divya is a Senior Journalist at GBhackers covering Cyber Attacks, Threats, Breaches, Vulnerabilities and other happenings in the cyber world.

Recent Posts

ARTEX AI Framework Linked to Bank Breaches and Cloud Attacks Found Exposed Across Hundreds of Servers

An autonomous penetration-testing framework linked to South Korean banking breaches and cloud supply-chain attacks is…

28 minutes ago

Shopify Makes IP Allowlisting Mandatory for All Public Apps to Prevent Stolen API Token Abuse

Shopify is making IP allowlisting mandatory for all public apps to limit abuse of stolen…

38 minutes ago

OpenAI’s New GPT-6 Cyber Finds 81 High-Severity Firefox Vulnerabilities and 948 Linux Kernel Exploits

OpenAI has introduced GPT-6 Cyber, a security-focused model built to find and validate exploitable vulnerabilities…

53 minutes ago

OpenMatter Network Positions Decentralized Computing as an Alternative to Data Centers for AI

Melbourne, Florida, November 5th, 2026, CyberNewswire OpenMatter Network, a pioneer in decentralized infrastructure for agentic…

13 hours ago

China-Aligned Hackers Hijack Popular Sogou Keyboard Software to Secretly Install DarkVigil Malware

A China-aligned espionage group abused the update traffic of Sogou Input Method, one of China's…

17 hours ago

Apple to Scan Publicly Shared iCloud Photos and Files for Harmful Content Starting With iOS 27.3

Apple will start checking iCloud photos and files shared through "Anyone with the Link" for…

18 hours ago