ChainDrop: Červ npm, který otrávil stovky balíčků během několika hodin

Poslední aktualizace: 08/11/2026
  • 4. srpna 2026 samošířící červ s názvem ChainDrop napadl během čtyř hodin přes 400 npm balíčků, včetně keyv a flat-cache.
  • Útok použil ukradené přihlašovací údaje GitHubu k publikování škodlivých verzí s platným původem, čímž je znemožnil rozeznat od legitimních vydání.
  • Účelem útoku je kradení přihlašovacích údajů, exfiltrace dat prostřednictvím C2 platformy založené na Ethereu a opětovná publikace infikovaných balíčků pomocí ukradených npm tokenů.
  • Organizace musí kontrolovat soubory zámků, rotovat přihlašovací údaje a odstraňovat mechanismy perzistence, aby zmírnily dopad.

logo npm

Ekosystém npm se potýká s jedním z nejagresivnějších útoků na dodavatelský řetězec, jaké kdy byly zaznamenány. 4. srpna 2026 červ s názvem ChainDrop prorazil registr a otrávil stovky balíčků během necelých čtyř hodin. Útok využil kompromitovaný účet GitHub k publikování škodlivých verzí široce používaných knihoven, jako jsou keyv a flat-cache, které dohromady tvoří stovky milionů stažení týdně. Obzvláště alarmující na tomto incidentu je, že škodlivé verze měly platný původ SLSA, takže pro automatizované bezpečnostní kontroly vypadaly zcela legitimně.

Bezpečnostní výzkumníci ze společností StepSecurity, Unit 42, Sonatype a Aikido se předhánějí v analýze červa a zamezení jeho šíření. První vlna zasáhla ekosystém Jaredwray, ale červ se rychle rozšířil i do dalších správců a organizací, včetně ServiceTitan, Qlik a Deliveroo. V době poslední aktualizace počet napadených balíčků neustále roste a nové infekce se objevují každých pár minut. Nejedná se jen o další kampaň zaměřenou na překlepy; jedná se o sofistikovaného, ​​samorozmnožujícího se červa, který krade přihlašovací údaje a používá je k opětovnému publikování v registru npm.

Ataque a la cadena de suministro ChainDrop npm
Související článek:
Útok ChainDrop: Červ dodavatelského řetězce napadl přes 435 balíčků npm

Útok v kostce

Bezpečnostní upozornění NPM

Útok začal, když byl napaden účet Jareda Wraye na GitHubu, správce keyv a souvisejících balíčků. Útočník odesílal škodlivé commity přímo do hlavní větve a vyřazoval nové verze, které byly následně publikovány na npm prostřednictvím vlastního důvěryhodného publikačního postupu projektu. To znamenalo, že napadené verze měly platné ověření původu SLSA , což je funkce, na kterou se mnoho týmů spoléhá jako na bezpečnostní signál. Původ však pouze dokazuje, který commit byl sestaven, nikoli to, zda byl autorizován. Útočník také vložil falešné testovací soubory a upravené skripty pro vydání, aby zajistil, že škodlivé verze se stanou nejnovějším dist-tagem.

Škodlivé balíčky obsahovaly předinstalační skript, který spouštěl dropper s názvem setup.mjs. Tento dropper stáhl legitimní běhové prostředí Bun JavaScript z GitHubu a použil ho ke spuštění 727 KB obfuskovaného datového souboru s názvem Math_Symbol.js. Tento datový soubor byl plně vybavený červ, který shromažďoval přihlašovací údaje ze systému oběti, včetně tokenů npm, tokenů GitHubu, cloudových přihlašovacích údajů, klíčů SSH a dokonce i konfigurací nástrojů umělé inteligence. Data poté odeslal na command-and-control server, což bylo řešeno pomocí chytré smlouvy Ethereum – techniky známé jako EtherHiding.

Dotčené balíčky a rozsah

seznam balíčků npm

První vlna útoků se zaměřila na 11 balíčků v ekosystému jaredwray, včetně keyv@6.0.0, flat-cache@6.1.24 a file-entry-cache@11.1.6. Tyto balíčky jsou tranzitivními závislostmi nespočtu projektů, od ESLint po cache-manager. Červ poté použil ukradené přihlašovací údaje k opětovnému publikování 433 dalších balíčků, čímž se celkový počet během prvních několika hodin zvýšil na 444 balíčků a 2 212 verzí. Pozdější zprávy od Sonatype a Aikido naznačují, že toto číslo ještě vzrostlo a do doby, než se prach usadil, bylo ovlivněno přes 1 000 balíčků.

Druhá vlna zasáhla balíčky od organizací jako @servicetitan, @qlik, @onereach a @deliveroo, což naznačuje, že se červ přesunul z veřejných vývojářských nástrojů do firemních sestavovacích kanálů. Útočníci také vytvořili veřejná úložiště s názvy ve stylu Dune, aby uchovávali ukradená data, a do adresářů .vscode a .claude umístili mechanismy perzistence, aby znovu infikovali vývojáře, kteří otevírali napadená úložiště.

Jak funguje červ ChainDrop

Útočný řetězec je mistrovskou třídou v životě z přírody. Předinstalační skript se spustí před instalací jakékoli závislosti, takže červ se spustí s oprávněními uživatele. Dropper zkontroluje, zda je Bun již přítomen; pokud ne, stáhne legitimní binární soubor Bun z GitHubu. Díky tomu síťový provoz vypadá neškodně, protože pochází z github.com. Druhá fáze dat se poté odpojí jako proces na pozadí a začne svou špinavou práci.

Jednou z nejvýraznějších technik je „scraping“ paměti běžce . Účelem červa je spustit pomocný program Pythonu, který čte paměť procesu Runner.Worker z GitHub Actions a hledá tajné informace vložené do pracovního postupu. To mu umožňuje zachytit tokeny OIDC a další efemérní přihlašovací údaje, které by jinak po ukončení úlohy zmizely. Červ také používá „kill switch“ pro ruskou lokalitu a čistě ukončí proces, pokud je systémovým jazykem ruština, což je běžná taktika, jak se vyhnout cílení na země SNS.

Součástí balíčku je kompletní publikační engine NPM. Vyjmenovává všechny balíčky, které může oběť publikovat, stáhne aktuální tarball, vloží škodlivý předinstalační skript a balíček a znovu publikuje balíček s vylepšenou verzí. Dokonce generuje vlastní balíčky Sigstore a SLSA, díky čemuž škodlivé verze vypadají jako legitimně sestavené. Právě tento mechanismus samošíření umožnil červu tak rychlé šíření napříč nesouvisejícími organizacemi.

Ukazatele kompromisu

Pokud jste nainstalovali některou z dotčených verzí, předpokládejte, že váš systém je napaden. Hledejte tyto indikátory:

  • Soubory s názvem setup.mjs, Math_Symbol.js nebo math_init.js v adresářích node_modules.
  • Neočekávané binární soubory Bun ve vašem systému, zejména pokud jste Bun nikdy neinstalovali.
  • Úpravy souborů .claude/settings.json nebo .vscode/tasks.json, které odkazují na setup.mjs.
  • Odchozí připojení k npm-cache.com nebo awqhnjewqjkl.icu, případně volání RPC Etherea ke kontraktu 0xE1f2395ee43e45A1556EC6438a88c31B83493103.
  • Nové repozitáře na GitHubu s popisy jako „Shai-Hulud: Here We Go Again“ nebo názvy s tématikou Duny.

Také zkontrolujte, zda je po úniku tokenu nainstalován monitor tokenů: ~/.local/bin/gh-token-monitor.sh, ~/.config/gh-token-monitor/ a služby systemd nebo LaunchAgent. Červ jej instaluje, aby potrestal rotaci přihlašovacích údajů spuštěním útočníkovy datové zátěže, když je ukradený token odvolán.

Zmírnění a zotavení

Pokud jste postiženi, jednejte rychle. Nejprve izolujte počítač a uchovávejte protokoly. Poté rotujte všechny přihlašovací údaje, které byly v systému přítomny, včetně tokenů npm, PATů GitHubu, cloudových klíčů a klíčů SSH. Před rotací odstraňte monitor tokenů, protože se spustí, pokud token zrušíte. Dále vyčistěte soubory zámků a připněte je na známé funkční verze. Pro keyv, flat-cache a file-entry-cache použijte přepsání k blokování škodlivých verzí. Nakonec znovu nainstalujte s parametrem –ignore-scripts, abyste zabránili spuštění všech přetrvávajících instalačních hooků.

U CI/CD pipeline zkontrolujte protokoly všech instalací, které vyřešily postižené verze během expozičního okna. Každý spouštěč, který nainstaloval infikovaný balíček, považujte za kompromitovaný a rotujte všechny tajné kódy dostupné pro danou úlohu. Také proveďte audit vašich organizací GitHub, zda neobsahují neočekávané pracovní postupy s názvem „Run Copilot“ nebo artefakty s názvem „format-results“, které jsou známkami tajného praní červem.

Hloubková ochrana je klíčová. Používejte seznamy povolených odchozích balíčků na CI runnerech, abyste zabránili dropperu v načítání Bun. Implementujte zásady pro ochlazování balíčků, které vyžadují, aby byly před jejich přijetím staré několik dní. A nespoléhejte se pouze na původ – není to záruka bezpečnosti. Nejlepší obranou je minimalizovat používání instalačních skriptů a monitorovat anomální chování.

S pokračujícím vyšetřováním počet postižených balíčků stále roste. Schopnost červa rotovat svou C2 infrastrukturu prostřednictvím jediné transakce Ethereum ho činí obzvláště odolným. Bezpečnostní týmy by měly monitorovat změny v chytré smlouvě a být informovány o nových indikátorech. Registr npm začal odstraňovat škodlivé verze, ale čištění stále probíhá.

Tento incident je drsnou připomínkou toho, že ekosystém open-source je jen tak bezpečný, jako jeho nejslabší článek. Jediný napadený účet správce se může kaskádovitě rozvinout do masivního útoku na dodavatelský řetězec. Červ ChainDrop je pro vývojáře a organizace varovným signálem k přijetí silnějších bezpečnostních postupů, včetně vícefaktorového ověřování, tokenů s nejnižšími oprávněními a neustálého monitorování závislostí.

Související příspěvky: