Skip to main content
Back to Blog
automationsupply-chain-attackpypidurabletaskshai-huludci/cd-securityinfostealerdevsecops

The Shai Hulud Campaign Just Hit a Microsoft Python Package — and the Targeting Pattern Is the Real Story

The Shai Hulud campaign hit Microsoft's durabletask Python package on PyPI — discover how the supply chain attack targeting pattern reveals what's coming next.

Zyfolks Team ·

Supply chain attackers used to spray and pray, hoping a typosquat would catch a sleepy npm install. That era is over. The same campaign that hit guardrails-AI last week and tore through the AntV ecosystem yesterday just landed on durabletask, a Python package associated with Microsoft — and the progression of targets tells you exactly where this is heading.

According to Snyk’s advisory, a malicious version of durabletask was published to PyPI, three versions have been yanked, and the safe release is 1.4.0. The package is used for durable, fault-tolerant workflow orchestration on top of the Durable Task Framework, which means it tends to live inside backend services that already hold privileged credentials. That context matters more than the download numbers.

How the durabletask Payload Actually Works

The compromised version drops a loader that fetches a second-stage payload named rope.pyz from the attacker-controlled domain check.git-service[.]com. Snyk’s researchers assess this as an evolution of the payload seen in the guardrails-AI compromise the prior week, which itself ties back to the broader Shai Hulud campaign. Three capabilities are bundled: an infostealer that harvests credentials from major cloud providers, password managers, and developer tooling; a worm component that attempts to propagate to other packages and environments; and a disk wiper that can irreversibly destroy data.

One constraint matters: the infostealer only executes on Linux. macOS and Windows developers aren’t at risk from the credential-harvesting stage, but the worm and wiper logic can still be relevant depending on the runtime environment — which for a workflow orchestration library usually means a Linux container in production.

If you’re running a CI pipeline that pulls Python dependencies on Ubuntu runners, this is the worst-case shape of the attack. The infostealer fires, exfiltrates whatever lives in ~/.aws, ~/.config, and environment variables, and the worm tries to ride your publish credentials into the next package. Expect more campaigns to specifically aim at the Linux + CI intersection, because that’s where the credential density is highest.

Why a Small Package Compromise Still Matters

The raw numbers look modest. Per Snyk, durabletask sees approximately 103,000 downloads per week and 1.7 million total downloads on PyPI. Compare that to the AntV npm packages compromised the day before, which collectively drew around 16 million weekly downloads, and Snyk assesses the direct impact of this specific incident as likely minimal.

But direct impact isn’t the interesting variable here. The signal is the target selection. durabletask is a Microsoft-associated open source project. The attackers moved from guardrails-AI (an AI safety library) to the AntV visualization ecosystem (a major Alibaba project) to a Microsoft-adjacent workflow package in roughly a week. That isn’t random — it’s a deliberate broadening of scope toward packages maintained by or associated with major technology vendors. If the campaign keeps that trajectory, the next compromise won’t be a 1.7-million-download utility. It will be something that ships inside the dependency tree of half the Fortune 500.

Imagine you’re a platform team running an internal developer portal on Python. You pinned dependencies six months ago, you have Renovate auto-bumping minors, and someone merges a PR that pulls in durabletask 1.4.1 the moment it lands. That’s the exact attack surface this campaign is built for. The prediction: within the next 90 days, we’ll see at least one Shai Hulud-adjacent compromise hit a package that’s already a transitive dependency of a top-tier cloud SDK. The blast radius will not be measured in downloads — it’ll be measured in incident response hours.

What Developers Should Do Today

First, check whether durabletask appears anywhere in your Python dependency tree, including transitive dependencies. If it does, compare the installed version against the malicious releases flagged in SNYK-PYTHON-DURABLETASK-16761538. The acceptable answer is 1.4.0 or earlier known-good versions. Anything in the yanked range is a confirmed compromise.

Second, if a malicious version touched a Linux host — production, staging, or a CI runner — treat every credential reachable from that environment as burned. Rotate cloud provider keys, API tokens, package registry tokens, and any secrets sitting in environment variables, .env files, or config files on disk. Don’t try to scope the rotation tightly. The infostealer doesn’t ask permission about which file it reads.

Third, audit how new package versions get introduced. The default Dependabot/Renovate pattern of auto-merging minor and patch bumps is precisely the workflow this campaign exploits. Teams in regulated industries — think anyone building healthcare software where patient data and compliance audits intersect — should be running a hold period of at least 48–72 hours on new versions and requiring a human review for any package that touches secrets. The same logic applies if you’re building traceability systems for supply chains, where a compromised dependency in a logistics platform can corrupt the very audit trail you exist to protect.

Fourth, reconsider where your trust boundaries actually live. A signed, immutable record of what version of what package executed in production is the kind of thing that pays for itself the day you have to answer “when did this run, and was it the real version?” — which is the case engineers usually make for picking blockchain over a traditional database when audit and trust are the bottleneck.

FAQ

Q: What is the Shai Hulud supply chain campaign? A: It’s an ongoing series of malicious package publications affecting npm and PyPI, tied together by shared payload infrastructure and tactics. Recent compromises include guardrails-AI, multiple AntV npm packages, and now Microsoft’s durabletask Python package, with payloads that combine credential theft, worm-style propagation, and destructive disk wiping.

Q: Is my Windows or macOS dev machine safe from the durabletask payload? A: The credential-stealing component is configured to execute only on Linux, per Snyk’s analysis. That means macOS and Windows developers aren’t exposed to the infostealer specifically, but the worm and disk wiper components can still be relevant depending on the environment, and any Linux CI runner or container that pulled the package should be treated as compromised.

Q: How do I know if I was hit? A: Check your Python dependency tree for durabletask and compare installed versions against the malicious releases listed in Snyk advisory SNYK-PYTHON-DURABLETASK-16761538. If a yanked version was installed on a Linux system, rotate every credential reachable from that host — cloud keys, API tokens, registry credentials, and anything in environment variables or config files.

Key Takeaways

  • Pin Python dependencies with exact versions and require a manual review window before any new version reaches a Linux runner that holds production credentials.
  • Treat any host that installed a yanked durabletask release as a credential breach event, not a patching event — rotation comes first, forensics second.
  • The Shai Hulud campaign’s target progression from niche libraries to major-vendor packages suggests the next compromise will land inside a widely-used transitive dependency, so audit your full lockfile, not just your direct imports.
  • CI runners are now the single highest-value target in most engineering organizations; harden them with ephemeral credentials and short-lived tokens before the next campaign forces you to.
  • Auto-merge of patch and minor version bumps is no longer a safe default in 2026 — the attacker economics have shifted.

Have a project in mind?

Tell us what you're building — we reply within 24 hours.