Rychloviny Rychloviny.cz
Ultrarychlovky

Červ ChainDrop paralyzuje npm: Přes 400 balíčků v háji, útočníci zneužili GitHub Actions

L. V. R. L. V. R.

Jestli právě stavíte nebo nasazujete jakýkoliv projekt v Node.js, na chvíli zastavte buildy a zkontrolujte si závislosti. Během posledních několika hodin se naplno rozhořel jeden z nejnebezpečnějších supply chain útoků v historii JavaScriptového ekosystému.

Útok dostal název ChainDrop a nestojí za ním žádný začátečník. Všechno to začalo kompromitací GitHub účtu vývojáře odpovědného za extrémně populární balíček Keyv, který slouží pro jednoduché kešování v Node.js a má miliony stažení týdně. Jakmile se útočníci dostali k přístupovým údajům, okamžitě napadli i navázané knihovny jako cacheableflat-cache nebo file-entry-cache.

Červ, který se šíří sám a těží z GitHub CI/CD

To nejschválnější na celém incidentu je způsob šíření. Škodlivý kód je variantou červa Mini Shai-Hulud. Spouští se automaticky při příkazu npm install skrz takzvaný preinstall hook. V té chvíli prohledá prostředí vývojáře nebo CI/CD pipeline a vysaje veškerá citlivá data, tokeny k npm, přístupy na GitHub, AWS klíče, Kubernetes tajnosti i Vault.

A tím to nekončí. Se získanými tokeny červ okamžitě vezme další balíčky, ke kterým má nakažený vývojář přístup, nakazí je a publikuje jejich nové verze do npm registru. Během pár hodin tak počet zasažených balíčků vyskočil na přes 440 knihoven a zasaženo bylo více než 2 000 konkrétních verzí. Celkový měsíční dosah těchto balíčků přesahuje dvě miliardy stažení.

Bezpečnostní analytici ze SecurityWeek navíc upozorňují na to, že útočníci zneužili přímo automatizované GitHub Actions pipelines původních správců. Díky tomu nakažené balíčky prošly s platným SLSA certifikátem původu (provenance attestations), což mnohé automatizované skenery zcela oklamalo. Pro řízení a komunikaci (C2) navíc červ využívá Ethereum blockchain (technika známá jako EtherHiding), což výrazně ztěžuje zablokování řídících serverů.

Co teď hned udělat v projektech?

Pokud držíte v CI/CD trubkách automatické zamykání závislostí nebo lokální cache, buďte velmi opatrní:

  1. Auditujte lockfile: Zkontrolujte, zda se vám do package-lock.json nebo yarn.lock nedostaly nejnovější verze zasažených knihoven (keyvcacheableflat-cachefile-entry-cache).
  2. Promažte cache: Vyčistěte lokální npm/yarn cache a stejně tak cache v GitHub Actions nebo GitLab CI.
  3. Rotace tokenů: Pokud jste v posledních 24 hodinách pouštěli npm install s některým z napadených balíčků, berte všechny přístupové klíče (AWS, GitHub, npm) v daném prostředí za kompromitované a okamžitě je zrotujte.

Bezpečnostní týmy npm i bezpečnostních firem v tuto chvíli masivně stahují závadné verze z registru, ale červ se šíří rychleji, než stačí správci reagovat. Dejte si na to dnes při deployích sakra pozor.

Sdílet článek:
L. V. R.
Autor článku

L. V. R.

Technologický novinář a zakladatel zpravodajského portálu Rychloviny. Specializuje se na open-source software, Linux a moderní webové technologie. V oboru se pohybuje od roku 2017.

Všechny články autora →