Miasma Worm Hits Microsoft Azure Repositories

Suspected
Discovered Jun 5, 2026

StepSecurity reported that the Miasma worm reached Microsoft Azure GitHub organizations after a compromised contributor account pushed malicious workspace and AI-assistant hook files into Azure/durabletask, prompting GitHub to disable 73 repositories across four Microsoft organizations.

2
Affected Packages
14
Observables
2
Sources

Analysis

Executive Summary

StepSecurity reported that the Miasma worm reached Microsoft Azure GitHub organizations after a compromised contributor account pushed malicious workspace and AI-assistant hook files into Azure/durabletask, prompting GitHub to disable 73 repositories across four Microsoft organizations.

This folder ports older Astro-era supply-chain coverage into the canonical hp-posts-info authoring shape so the Next.js/Postgres importer can serve it. The current status is needs_review: the source-backed indicators are captured, but the pass intentionally does not claim fresh artifact diffing beyond the cited primary research.

Key Facts

  • Affected assets: Azure/durabletask, Azure/azure-functions-action.
  • Execution trigger: developer or automation opens/uses a repository containing planted IDE and AI-assistant hook files.
  • Credential risk: GitHub, OIDC, cloud, package-registry, and developer credentials reachable from impacted CI or developer environments.
  • Relationship: migrated from the older Astro blog supply-chain roundup into a standalone Next.js/Postgres-ready incident folder.

Defender Handling

Run the included scope scanner over repository exports, package caches, CI logs, and endpoint telemetry. Treat matches in live dependency manifests, lockfiles, workflow definitions, or runner process/network logs as exposure signals until the owning team confirms whether the malicious artifact actually executed.

Open Questions

This migration captures coverage and source-backed selectors. Before marking publish-ready, perform fresh artifact diffing, validate current package/action cleanup status, and reconcile exact downstream victim counts from direct maintainer or platform sources.

Sources

  1. StepSecurity primary research. Role: PRIMARY_RESEARCH Impact: Primary source for affected assets, execution trigger, payload behavior, and published IOCs.

Timeline

4 of 4 rows

Timeline
DateEventDescriptionSource
Jun 5, 2026First seenFirst seen recorded for Miasma Worm Hits Microsoft Azure Repositories.StepSecurity
Jun 5, 2026DiscoveryDiscovery recorded for Miasma Worm Hits Microsoft Azure Repositories.StepSecurity
Jun 5, 2026DisclosureDisclosure recorded for Miasma Worm Hits Microsoft Azure Repositories.StepSecurity
Jun 5, 2026Miasma Worm Hits Microsoft Azure RepositoriesUnknownStepSecurity

Affected Software

2 of 2 rows

Affected Software
PackageEcosystemVersion RangeStatusConfidenceSource
Azure/durabletaskunknownmalicious-commitMalicious65%StepSecurity; haltingproblems.com
Azure/azure-functions-actionunknownrepository-compromiseMalicious65%StepSecurity; haltingproblems.com

IOC Clipboard

14 IOCs
domainapi.github.com
domaingithub.com
urlhttps://www.stepsecurity.io/blog/miasma-worm-hits-microsoft-again-azure-functions-action-and-72-other-repositories-disabled-after-supply-chain-attack-targeting-ai-coding-agents
file_path.claude/settings.json
file_path.claude/index.js
file_path.claude/setup.mjs
file_path.vscode/tasks.json
file_path.vscode/setup.mjs
commandRunner.Worker
commandgh auth token
commandnode .claude/setup.mjs
commandnode .vscode/setup.mjs
network_patternGitHub repository exfiltration
network_patternMiasma

Tested Hunting Scripts

1 of 1 rows

Tested Hunting Scripts
TitleLanguageDescriptionRepositorySource
local repository and exported telemetry scopePythonDoes this scope contain package, workflow, process, filesystem, or network indicators associated with Miasma Worm Hits Microsoft Azure Repositories?scripts/local_repository_and_exported_telemetry_scope.pyStepSecurity

Hunt Manifest: local repository and exported telemetry scope

Title
local repository and exported telemetry scope
Question
Does this scope contain package, workflow, process, filesystem, or network indicators associated with Miasma Worm Hits Microsoft Azure Repositories?
Telemetry Family
Python
Repository
scripts/local_repository_and_exported_telemetry_scope.py
scripts/local_repository_and_exported_telemetry_scope.pyPython
#!/usr/bin/env python3
import os
import sys
from pathlib import Path

ROOT = Path(sys.argv[1]).resolve() if len(sys.argv) > 1 else Path('.').resolve()
OUT = Path(os.environ.get('OUT', 'hp-miasma-microsoft-azure-repository-worm-scope'))
OUT.mkdir(parents=True, exist_ok=True)

PACKAGES = ["Azure/durabletask", "Azure/azure-functions-action"]
PACKAGE_VERSIONS = ["Azure/durabletask@malicious-commit", "Azure/azure-functions-action@repository-compromise"]
FILES = [".claude/settings.json", ".claude/index.js", ".claude/setup.mjs", ".vscode/tasks.json", ".vscode/setup.mjs"]
HASHES = []
DOMAINS = ["api.github.com", "github.com"]
URLS = ["https://www.stepsecurity.io/blog/miasma-worm-hits-microsoft-again-azure-functions-action-and-72-other-repositories-disabled-after-supply-chain-attack-targeting-ai-coding-agents"]
IPS = []
PROCESS_PATTERNS = ["Runner.Worker", "gh auth token", "node .claude/setup.mjs", "node .vscode/setup.mjs"]
NETWORK_PATTERNS = ["GitHub repository exfiltration", "Miasma"]

def read_text(path: Path) -> str:
    try:
        return path.read_text(encoding="utf-8", errors="ignore")
    except Exception as exc:
        return f"__READ_ERROR__:{path}:{exc}"

def scan_tree(base: Path, indicators: set[str]) -> list[str]:
    matches = []
    skip = {".git", "node_modules", "vendor", "dist", ".venv", "__pycache__"}
    for current_root, dirs, files in os.walk(base):
        dirs[:] = [d for d in dirs if d not in skip]
        for name in files:
            path = Path(current_root) / name
            text = read_text(path)
            for indicator in indicators:
                if indicator and indicator in text:
                    matches.append(f"{path}: found {indicator!r}")
    return matches

indicators = set()
for group in [PACKAGES, PACKAGE_VERSIONS, FILES, HASHES, DOMAINS, URLS, IPS, PROCESS_PATTERNS, NETWORK_PATTERNS]:
    indicators.update(group)

(OUT / "indicators.txt").write_text("\n".join(sorted(indicators)) + "\n", encoding="utf-8")
matches = scan_tree(ROOT, indicators)
(OUT / "matches.txt").write_text("\n".join(matches) + ("\n" if matches else ""), encoding="utf-8")
print(f"[+] wrote {len(indicators)} selectors and {len(matches)} matches under {OUT}")

Provenance & Sources

2 of 2 rows

Provenance & Sources
SourceTypeReliabilityClaimsEvidence
StepSecuritySecurity Researcher95%1StepSecurity reported that the Miasma worm reached Microsoft Azure GitHub organizations after a compromised contributor account pushed malicious workspace and AI-assistant hook files into Azure/durabletask, prompting GitHub to disable 73 repositories across four Microsoft organizations.
haltingproblems.comBlog80%1StepSecurity reported that the Miasma worm reached Microsoft Azure GitHub organizations after a compromised contributor account pushed malicious workspace and AI-assistant hook files into Azure/durabletask, prompting GitHub to disable 73 repositories across four Microsoft organizations.
Miasma Worm Hits Microsoft Azure Repositories — Halting Problems