Nahráno Masivní útok na balíčky v repozitáři NPM byl proveden pomocí nového samošířícího se červa ChainDrop, který vkládá malware do závislostí. Útok vedl k 2 212 vydáním škodlivého softwaru pro 444 balíčků. Nejoblíbenější z napadených balíčků – keyv, flat-cache a file-entry-cache – byly staženy 154, 149.9 a 147.6 milionkrát týdně.
Zavaděč červa se nacházel v souborech setup.mjs a Math_Symbol.js, které byly spuštěny pomocí preinstalačního obslužného programu („preinstall“: „node setup.mjs“), jenž byl volán při instalaci postiženého balíčku. Tyto skripty stáhly legitimní běhové prostředí Bun a obfuskovaly kód červa o velikosti 710 KB. Po aktivaci červ prohledával systémové a environmentální proměnné a hledal tokeny pro NPM, PyPI, CircleCI, AWS, GCP, Docker, Azure, HashiCorp, KubernetesK8s a další služby (analyzováno bylo více než 140 cest k souborům, například ~/.npmrc) a také analyzoval paměť (prostřednictvím /proc/). /mem) prostředí GitHub Actions pro tokeny a přihlašovací údaje.
Pokud byl detekován token pro připojení k adresáři NPM, červ automaticky publikoval nové škodlivé verze pro balíčky vyvíjené v aktuálním prostředí a infikoval strom závislostí. Na rozdíl od dříve detekovaného červa Šaj-Hulud 2.0 ChainDrop implementoval techniku EtherHiding pro příjem řídicích příkazů prostřednictvím veřejného blockchainu Etherea, použil šifrování ke skrytí důvěrných dat přenášených na server útočníka a provedl injekci do konfiguračních souborů Claude Code, VS Code a GitHub Copilot, aby zajistil svou přítomnost v systému.
Útok začal kompromitací procesu vydání balíčku založeného na akcích GitHubu. klíčV, který je stahován 154 milionůkrát týdně a používá se jako závislost v 1 703 balíčcích. Útočníci vytvořili novou verzi 6.0.0 s vloženým škodlivým kódem a publikovali ji pomocí „Důvěryhodní vydavatelé» a správně Certifikace SLSAPo zveřejnění červ infikoval mnoho balíčků závislých na keyv a poté začal infikovat i nepřímé závislosti.
Mezi nejoblíbenější balíčky, které byly červem zasaženy a které pro ně publikovaly škodlivé verze:
- flat-cache 6.1.24 (149.8 milionu stažení týdně);
- mezipaměť záznamů souborů 11.1.6 (147.5 milionu);
- požadavek cacheable-request 13.0.20 (33.9 milionu);
- @cacheable/utils 2.5.1 (8.7 milionu);
- uložitelné do mezipaměti 2.5.1 (7.8 milionu);
- @cacheable/memory 2.2.1 (7.1 milionu);
- správce mezipaměti 7.2.10 (4.2 milionu);
- @cacheable/node-cache 3.1.2 (1.5 milionu).
Zdroj: linux.org.ru
