
Miasma Blight Reaches Microsoft: 73 Repos Disabled in 105 Seconds
Investigates GitHub's mass disabling of 73 Microsoft repositories across the Azure, Azure-Samples, microsoft, and MicrosoftDocs orgs within a 105-second window on June 5, all flagged for ToS violations, including the widely-used Azure/functions-action GitHub Action that broke CI pipelines globally. The author links the takedown to a re-compromise of the durabletask PyPI package (previously hit May 19 by TeamPCP via stolen GitHub Actions secrets) and to Miasma, a rebrand of TeamPCP's open-sourced Mini Shai-Hulud worm that Aikido and OX Security found had added Azure/GCP credential collectors and self-propagates by committing stolen secrets into attacker-created public repos, which is what likely triggered GitHub's automated abuse enforcement.
What it is
A follow-up on the June 5, 2026 GitHub takedown of 73 Microsoft repos, adding the detail the summary lacks: the specific PyPI compromise, the mutable-tag failure mode that broke pipelines, and Microsoft's own recommended workarounds during the outage.
How it works
The recurring root is the durabletask PyPI package (Microsoft's official Azure Durable Task SDK, ~417,000 downloads/month). On May 19, three malicious versions — 1.4.1, 1.4.2, 1.4.3 — were pushed to PyPI inside a 35-minute window with no matching tags, releases, or CI runs in the GitHub repo, indicating direct publishing via stolen GitHub Actions secrets rather than the normal build path. Those were yanked within hours. A month later the same ecosystem became the hub of the takedown, which the author reads as the May credentials never having been fully revoked.
The CI blast radius comes from mutable tags: Azure/functions-action@v1 floats, so when GitHub disabled the source repo the tag simply stopped resolving and every referencing workflow broke. A pinned commit SHA would have kept resolving (or failed predictably) rather than evaporating.
Preconditions / Affected
- Any pipeline referencing
Azure/functions-action@v1orfunctions-container-action— these are actions that run inside other people's workflows, so they can't be pinned around by consumers of a library. - Anyone who installed
durabletaskversions 1.4.1, 1.4.2, or 1.4.3 during the May 19 window.
What to do
- Check for the malicious
durabletaskversions 1.4.1, 1.4.2, 1.4.3 in any environment that pulled from PyPI around May 19. - Pin GitHub Actions to a full commit SHA rather than a floating tag like
@v1, so a disabled source fails loudly instead of vanishing. - While
functions-actionis down, Microsoft's staff recommended alternative deployment methods: Azure CLI, Azure DevOps Pipelines, VS Code deployment, Zip Deploy, or Azure Pipelines instead of GitHub Actions.
Caveats
- The re-compromise link is the author's inference ("plausibly never fully lost them"), not confirmed root cause — GitHub's banner cites only a terms-of-service violation.
- Microsoft's public messaging was contradictory: a staffer first cited "GitHub policy violations (malware, phishing…)," then revised twelve minutes later to "an internal management issue" — so the official cause is unsettled.
- The May attribution to threat actor TeamPCP comes from Wiz, Endor Labs, and StepSecurity (per the summary); this post asserts continuity but does not independently establish the June mechanism.
Organisations named here
- Shai-Hulud
Technologies named here
- GitHub automated abuse/terms-of-service enforcement
- durabletask
- Azure/functions-action
- Bun
- functions-container-action
- Azure CLI
- Azure DevOps Pipelines
- @redhat-cloud-services npm namespace
- VS Code deployment
- Azure CLI auth caches / managed-identity tokens
- Zip Deploy
- Azure Pipelines
- npm
- PyPI
- GitHub Actions
- Azure
- GitHub
- Azure/durabletask
Techniques named here
- Mutable tag / floating version reference abuse
- Credential harvesting of Azure and GCP secrets
- Malicious preinstall script execution
Threat actors named here
- TeamPCP
- Miasma
- Mini Shai-Hulud
- Shai-Hulud
- Miasma worm
Related in Supply Chain


