Podle dostupného sledování se malware během hodin rozšířil na více než 1 280 balíčků a přes 1 680 verzí. Dotčené balíčky měly dohromady přibližně 2 miliardy měsíčních stažení . Počty se v průběhu incidentu rychle měnily: StepSecurity nejprve evidoval 435 balíčků a 1 557 napadených verzí, zatímco Aikido Security později uvádělo 868 balíčků ve 1 381 verzích .
K převzetí účtu mělo dojít přibližně v 09:00 UTC. Útočníci poté získaný přístup využili k přímému vložení škodlivého kódu do větve main repozitáře keyv a k vydání nových verzí celé skupiny souvisejících balíčků .
Počáteční vlna zasáhla 11 balíčků napříč jmennými prostory keyv a cacheable. Mezi známé příklady patřily:
keyvcacheable-requestcache-manager@cacheable/utilsflat-cachefile-entry-cachecacheable@cacheable/memory@cacheable/node-cache Bezpečnostní týmy Aikido Security, StepSecurity, Socket a Chainguard kompromitaci nezávisle zachytily a začaly ji sledovat během prvních hodin .
Napadené balíčky měly shodný vzorec změn: dva nové soubory — setup.mjs a Math_Symbol.js — a upravený soubor package.json s automaticky spouštěným háčkem:
"preinstall": "node setup.mjs"
Jakmile vývojář nebo CI/CD systém spustil npm install, skript setup.mjs se provedl ještě před dokončením instalace. Tento dropper stáhl z GitHub Releases legitimní binární runtime Bun a pomocí něj spustil obfuskovaný druhý stupeň, soubor Math_Symbol.js o velikosti přibližně 710 až 728 KB .
Microsoft Threat Intelligence payload označila za variantu rodiny Mini Shai-Hulud. StepSecurity pro tuto kampaň používá také označení ChainDrop .
Payload prohledával napadená vývojářská prostředí a buildovací systémy a zaměřoval se mimo jiné na:
To znamená, že riziko se netýkalo pouze samotného projektu v npm. Kompromitované prostředí mohlo malware vystavit také přístupy ke cloudu, interní infrastruktuře, repozitářům a automatizovaným deploymentům.
Shai-Hulud nebyl jen jednorázově vložený škodlivý kód. Po krádeži npm publishing tokenů a GitHub PATů je využíval k publikování dalších napadených verzí balíčků, které patřily jiným a vzájemně nesouvisejícím správcům .
Červ tak překročil původní jmenné prostory keyv a cacheable a zasáhl balíčky spojované například s organizacemi Deliveroo, Ornikar, OneReach, Picsart, Qlik a ServiceTitan . Právě tato schopnost využít ukradené přihlašovací údaje k dalšímu publikování způsobila, že se rozsah incidentu během jediného dne dramaticky zvětšil.
Ukradené přístupové údaje malware odesílal do repozitáře GitHubu ovládaného útočníkem. Kampaň podle analýz buď vytvářela nový repozitář, nebo využívala vyhrazený repozitář pro exfiltraci dat . Payload měl navíc několik redundantních komunikačních kanálů, takže odstranění jediného kanálu nemuselo únik zastavit .
Okamžitě připněte závislosti na známé čisté verze nebo se vraťte k vydáním před incidentem. V package.json lze použít přepisy závislostí, například pole overrides; obdobné mechanismy nabízejí také Yarn a pnpm .
Zkontrolujte rovněž lock soubory:
package-lock.json,yarn.lock,pnpm-lock.yaml.Nezapomeňte ani na tranzitivní závislosti, které projekt nepoužívá přímo, ale stáhne je jiný balíček .
Pokud na počítači nebo CI/CD runneru proběhla instalace zasažené verze, nestačí smazat podezřelé soubory z node_modules. Předpokládejte, že všechny tajné údaje dostupné v daném prostředí mohly být odhaleny . U citlivých systémů je vhodnější obnova z čistého obrazu než důvěra v dodatečné čištění.
Odvolejte a znovu vytvořte všechny potenciálně vystavené údaje, zejména:
Malware mohl v některých případech vytvořit GitHub workflow nebo monitorovací mechanismus sledující vznik nových tokenů. Bezpečnostní výzkumníci proto doporučili takový watcher nejprve deaktivovat či odstranit a teprve potom přístupové údaje vyměnit .
Smažte cache npm, pnpm a Yarnu na vývojářských počítačích i CI/CD runnerech. Vyčistěte také Docker build cache a znovu vytvořte obrazy a další artefakty od začátku, aby v nich nezůstaly napadené balíčky nebo vrstvy .
Zkontrolujte nově vytvořené repozitáře, neautorizované workflow, podezřelé commity a další známky přetrvávajícího přístupu . Výzkumníci upozornili také na možné artefakty v souborech, jako jsou .claude/settings.json nebo .vscode/tasks.json .
Útok z 4. srpna 2026 ukázal, jak daleko může dojít kompromitace jediného účtu správce. Útočníci nepotřebovali přímý přístup ke stovkám cizích repozitářů — stačilo jim získat tokeny z několika napadených prostředí a použít je k dalšímu publikování škodlivých verzí.
Kombinace automatického preinstall skriptu, legitimního runtime Bun, obfuskovaného payloadu, krádeže přístupových údajů a samovolného šíření udělala z kampaně mimořádně nebezpečný útok na dodavatelský řetězec JavaScriptu . Pro týmy, které používají npm v produkci, z toho plyne několik praktických pravidel: připínat verze závislostí, omezit spouštění instalačních skriptů, sledovat neobvyklé aktivity na GitHubu a mít připravený postup pro případ kompromitace závislostí.