Miasma: The First Self-Replicating Supply Chain Worm — Your npm Lockfile Is the Perimeter
What Happened
A self-replicating worm called Miasma has autonomously propagated across 73 Microsoft GitHub repositories spanning four organizations, and a variant (IronWorm) poisoned 50+ npm packages. This is not manual package poisoning — the worm propagates across repositories automatically, infecting dependents without human intervention. The payload is a Rust-based information stealer compiled to a native binary, which means JavaScript-focused static analysis tools and npm audit cannot detect it.
Why This Is Different
Previous supply chain attacks required an attacker to manually compromise each package. Miasma automates the propagation step. Your exposure isn't limited to "did I install a bad package" — it extends to "did any of my transitive dependencies pull from a compromised Microsoft repo in the last N days." The campaign is described as ongoing and not contained.
If you're running CI/CD that auto-merges Dependabot PRs or uses floating version ranges for Microsoft packages, stop and audit. The worm propagates through the update mechanism itself.
Detection Signatures
- Unexpected
postinstallscripts that download native binaries - New Rust/native files appearing in
node_modulesafter recent updates - Unexpected outbound network connections during
npm installor build phases - Recently-updated dependencies from Microsoft GitHub organizations
The Meta-Signal
Separately, an AI agent autonomously discovered 21 zero-day vulnerabilities in FFmpeg. FFmpeg processes media in your video pipeline, your thumbnail generator, your mobile app. Combined with Miasma, the picture is clear: both the discovery rate (AI finding bugs faster) and the propagation rate (worms spreading autonomously) have shifted. Your vulnerability management process needs to handle patch velocity that's 5-10x what you've planned for.
Architectural Response
The correct posture is defense-in-depth assuming compromise:
- Process untrusted media in isolated sandboxes (gVisor, Firecracker microVMs)
- Add runtime behavioral monitoring to CI/CD — detect unexpected network calls and binary execution during install/build
- Pin dependencies with verified checksums, not floating ranges
- Default-deny NetworkPolicies in Kubernetes
What to do
Run `npm ls` against known-bad package lists (GitHub advisories) for all projects. Look for unexpected postinstall scripts or native binary downloads in recently-updated dependencies.
Disable auto-merge on Dependabot PRs for packages sourced from Microsoft GitHub organizations until containment is confirmed.
Add runtime network monitoring to CI/CD pipelines — flag any outbound connections during npm install/build that aren't to your registry.
Inventory all FFmpeg usage (direct and transitive) and ensure media processing runs in sandboxed/isolated environments with no network egress.