Als je op een dinsdag in 2026 npm install draaide, heb je mogelijk de malware van iemand anders meegeleverd. Dat is geen overdrijving. Tussen september 2025 en juni 2026 ging het npm-register van een incidentele typosquatting-ergernis naar het podium voor de eerste echte zelf-replicerende worm die het JavaScript-ecosysteem ooit heeft gezien. De npm-supply-chain-crisis van 2026 is het verhaal van hoe aanvallers stopten met het phishen van individuele developers en begonnen met het wapenen van het vertrouwen dat één package stilletjes driehonderd andere laat binnenhalen.
Hier is wat er werkelijk gebeurde, wie geraakt werd, en de concrete stappen die voorkomen dat jouw pipeline de volgende propagatieknoop wordt.
De worm die zichzelf publiceert: Shai-Hulud
Het bepalende incident was Shai-Hulud, vernoemd naar de zandworm uit Frank Herberts Dune. Volgens Unit 42 van Palo Alto Networks werd de eerste golf gelanceerd op 15 september 2025 en wordt deze beschouwd als de eerste echte zelf-replicerende worm in het npm-ecosysteem.
De werking is gemeen in zijn eenvoud. De worm voert zich uit tijdens de installatie via package lifecycle scripts, oogst credentials van de host, en gebruikt vervolgens eventuele gestolen npm publish tokens om de andere packages van de slachtoffer-maintainer opnieuw te publiceren met dezelfde kwaadaardige payload. Unit 42 merkte op dat het ongeveer de top 20 packages die een slachtoffer beheerde zou opsommen en opnieuw publiceren, wat een cascade veroorzaakte. Sysdig en anderen herleidden de oorspronkelijke golf tot rond de 200 geïnfecteerde packages, waaronder veelgebruikte libraries zoals @ctrl/tinycolor en ngx-bootstrap.
Het stopte daar niet. De campagnefamilie evolueerde door drie gedocumenteerde golven:
- Origineel (september 2025): ~200 packages, credential harvesting plus de auto-publish-loop.
- Shai-Hulud 2.0 (november 2025): Unit 42 rapporteerde dat de payload verschoof naar pre-install-uitvoering, wat betekende dat het draaide op vrijwel elke build-server die een geïnfecteerd package verwerkte, niet alleen op laptops van developers.
- Mini Shai-Hulud (eind april 2026): Voor het eerst bekendgemaakt rond 29 april 2026, raakte deze golf voor het eerst npm en PyPI tegelijkertijd. De Cloud Security Alliance en Securonix volgden het over ruwweg 172 packages en 404 kwaadaardige versies, waarbij de geïnfecteerde packages gezamenlijk honderden miljoenen keren per week werden gedownload.
De Mini Shai-Hulud-variant voegde een huiveringwekkende nieuwe truc toe: persistentie via configuratiebestanden van AI-coding-agents, waaronder de instellingen van Claude Code en VS Code. De worm begreep dat moderne developers binnen AI-tooling leven en plantte zichzelf daar.
Axios: wanneer 100M wekelijkse downloads op hol slaan
Wormen zijn eng omdat ze schalen. Gerichte compromitteringen van vlaggenschip-packages zijn eng vanwege de blast radius. Op 30 maart 2026 werd Axios — de populairste HTTP-client van het JavaScript-ecosysteem, met meer dan 100 miljoen wekelijkse npm-downloads — gecompromitteerd en omgebouwd tot een afleveringsvoertuig voor een cross-platform remote access trojan (RAT).
Microsoft Threat Intelligence schreef de Axios-compromittering en de ondersteunende infrastructuur toe aan Sapphire Sleet, een Noord-Koreaanse, staatsgelieerde actor. Wanneer een dependency die onder een betekenisvol deel van alle Node.js-applicaties ligt, een backdoor krijgt, stopt de vraag "zijn we blootgesteld?" te zijn en wordt het "hoe snel kunnen we erachter komen?".
De les van Axios is dat populariteit geen veiligheid is. Een package met negen cijfers aan wekelijkse downloads is een aantrekkelijker doelwit, niet een minder riskant, juist omdat zoveel downstream-software er impliciet op vertrouwt.
Red Hat, OIDC en de CI/CD-blinde vlek
Het meest leerzame incident van 2026 is misschien wel het kleinste qua omvang. Op 1-2 juni 2026 compromitteerden aanvallers minstens 32 packages gepubliceerd onder de @redhat-cloud-services npm-namespace — 96 versies in totaal, volgens Aikido Security, met meer dan 116.000 cumulatieve downloads.
Wat deze zaak ertoe doet, is hoe het gebeurde. Volgens Cybersecurity Dive en Wiz werden de kwaadaardige versies gepubliceerd via GitHub Actions OIDC in plaats van gestolen npm-credentials. Een gecompromitteerd GitHub-account pushte ongeautoriseerde commits naar repositories in de RedHatInsights-organisatie, en de CI-pipeline publiceerde plichtsgetrouw het resultaat. De payload was een variant van Mini Shai-Hulud — een credential-stelende worm die jaagt op CI-secrets, cloud-credentials, SSH-keys en npm-tokens.
Red Hat verklaarde dat de kwaadaardige code nooit voor klantgebruik werd gepubliceerd en alleen interne ontwikkelpackages trof. Maar de conclusie is universeel: als jouw CI/CD-identiteit kan publiceren, dan is het compromitteren van je CI/CD-identiteit genoeg. De npm-supply-chain-aanvallen van 2026 omzeilen de menselijke maintainer steeds vaker volledig en gaan rechtstreeks op de automatisering af die namens hen publiceert.
Waarom dit zo snel zo erg werd
Drie structurele realiteiten veranderden geïsoleerde incidenten in een systemische crisis:
- Transitief vertrouwen. Een typisch Node-project heeft duizenden transitieve dependencies. Je controleert je directe dependencies; die van hen controleer je vrijwel nooit.
- Lifecycle scripts.
preinstall- enpostinstall-hooks draaien standaard willekeurige code tijdens de installatie. Dat is de uitvoeringsprimitive waar elk van deze wormen op leunde. - Tokens overal. Langlevende npm publish tokens en brede cloud-credentials die in CI-omgevingen liggen, zijn precies waar credential-stelende wormen voor gebouwd zijn om te grijpen — en vervolgens te hergebruiken om zich te verspreiden.
Hoe je je pipeline nu meteen verdedigt
Je kunt niet elke transitieve dependency met de hand auditen. Je kunt het aanvalsoppervlak drastisch verkleinen met controls die direct aansluiten op hoe deze aanvallen werken.
Schakel code-uitvoering tijdens install uit
- Draai standaard
npm install --ignore-scriptsin CI, en zet de handvol packages die echt build scripts nodig hebben op een allowlist. - Zet
ignore-scripts=truein je project-.npmrczodat de standaard veilig is.
Lock en verifieer wat je installeert
- Commit je lockfile en gebruik
npm ci, nietnpm install, in geautomatiseerde builds zodat versies exact zijn vastgepind. - Schakel npm's
--foreground-scriptsin en bekijk packages die uit onverwachte registers worden opgelost (de klassieke dependency-confusion-vector waar Microsoft in mei 2026 voor waarschuwde). - Voeg een cooldown toe: vermijd automatisch upgraden naar versies die in de laatste 24-72 uur zijn gepubliceerd, het venster waarin de meeste van deze kwaadaardige versies worden betrapt en teruggetrokken.
Behandel CI-credentials als de kroonjuwelen
- Vervang langlevende npm publish tokens door kortlevende, scoped tokens en schakel npm's trusted publishing / provenance in zodat packages worden ondertekend tegen hun source-build.
- Scope GitHub Actions OIDC tot specifieke repositories en omgevingen; de Red Hat-zaak laat zien dat te brede publish-identiteiten het nieuwe zwakke doelwit zijn.
- Roteer alle AWS-keys, HashiCorp Vault-tokens en SSH-keys die aan build runners zijn blootgesteld, en geef de voorkeur aan just-in-time secrets boven statische.
Houd je AI-tooling in de gaten
De persistentie van Mini Shai-Hulud via de configbestanden van Claude Code en VS Code betekent dat je editor- en agent-instellingen nu deel uitmaken van het aanvalsoppervlak. Houd die configs in source control zodat onverwachte wijzigingen zichtbaar zijn in een diff.
De conclusie
De npm-supply-chain-crisis van 2026 maakte één ding onweerlegbaar: het register is infrastructuur, en infrastructuur wordt aangevallen. Shai-Hulud bewees dat een worm zich van maintainer naar maintainer kan verspreiden zonder menselijke hulp, Axios bewees dat de meest-vertrouwde packages de doelwitten met de hoogste waarde zijn, en de Red Hat-OIDC-compromittering bewees dat aanvallers de developer zullen overslaan en rechtstreeks op de robot afgaan die publiceert. Geen van de bovenstaande verdedigingen is exotisch — het uitschakelen van install scripts, pinnen met npm ci, en het vervangen van langlevende tokens door provenance-onderbouwd publiceren zou elke hier beschreven golf hebben afgezwakt. De teams die 2026 ongedeerd doorkwamen, hadden geen geluk. Ze stopten simpelweg met standaard npm install te vertrouwen.
FAQ
Is Shai-Hulud nog actief in 2026? De campagnefamilie evolueerde door minstens drie golven tot medio 2026, met Mini Shai-Hulud actief vanaf eind april 2026 en gerelateerde activiteit (zoals de Red Hat-compromittering) verschijnend in juni. Behandel het als een doorlopend dreigingspatroon, geen afgesloten incident.
Vangt npm audit deze aanvallen op?
Niet betrouwbaar in real time. npm audit markeert bekende kwetsbaarheden nadat ze zijn gecatalogiseerd. Vers gepubliceerde kwaadaardige versies kunnen zich urenlang verspreiden vóór de bekendmaking, en daarom doen install-time controls en versie-cooldowns er meer toe dan audit alleen.
Worden PyPI en andere registers ook getroffen? Ja. Mini Shai-Hulud was de eerste golf die npm en PyPI in één gecoördineerde operatie raakte, dus dezelfde verdedigingsprincipes gelden over ecosystemen heen.
Waqas Ahmed Waseer
Waqas Ahmed Waseer is a developer and automation builder with 8+ years shipping production systems used by 100k+ people. He builds custom multi-tenant SaaS, AI automation (n8n, LLM workflows, WhatsApp bots) and hosting infrastructure (WHM/cPanel, CloudLinux) — and is the maker of WaSphere, FlowMaticX, and the WaseerHost hosting brand. 100+ projects delivered for SMBs, agencies and funded startups.


