Bola zaznamenaná druhá útok na balíčky v úložisku NPM, vykonané pomocou modifikácie samoreplikujúceho červa Shai-Hulud, ktorý vkladá škodlivý softvér do závislostí. V dôsledku útoku boli zverejnené škodlivé vydania 605 balíkov, ktoré celkovo prekročili 100 miliónov stiahnutí.
Na uskutočnenie útoku útočníci prostredníctvom phishingu zachytili parametre účtu správcov jedného z populárnych balíkov, používaného ako závislosť veľkým počtom balíkov. Využitím zachyteného účtu útočníci zverejnili vydanie balíka, do ktorého bol pridaný kód na aktiváciu červa pri inštalácii postihnutého balíka medzi závislosťami. Spustený červ vykonáva vyhľadávanie prihlasovacích údajov v aktuálnom prostredí, sťahuje a spúšťa nástroj TruffleHog.
V prípade zistenia tokenu pripojenia k adresáru NPM červ automaticky zverejňuje nové škodlivé vydania pre balíky vyvíjané v aktuálnom prostredí. Týmto spôsobom sa reťazovo napáda celé strom závislostí. Okrem NPM tokenu červ ukladá prístupové kľúče k GitHubu a cloudovým službám AWS, Azure a GCP (Google Cloud Platform), ako aj premenné prostredia a iné dôverné údaje, ktoré dokáže objaviť skener TruffleHog.
Nájdené v systéme dôverné údaje sa umiestňujú na GitHub prostredníctvom vytvorenia repozitárov s chaotickými názvami (napríklad "qzx15djl71alh6p80h") a frázou "Sha1-Hulud: The Second Coming" v popise, ako aj kódovaným spôsobom sú vypisované do logov GitHub Actions. V vytváranom repozitári sa nachádza súbor vo formáte JSON (napríklad jsonactionsSecrets.json alebo contents.json), ktorý obsahuje reťazec s kódovanými metódou base64 informáciami o systéme, premennými prostredia a zachytenými údajmi. Na prenos informácií von z systémov kontinuálnej integrácie založených na GitHub červ vytvára spracovateľ GitHub Actions s názvom ".github/workflows/formatter_123456789.yml" a nastavuje runner s názvom SHA1HULUD.
Rozdiely od podobného septembrového útoku spočívajú v inom spôsobe vkladania škodlivého kódu do balíka. V generovaných červom škodlivých vydaniach sa tvrdí implementácia podpory JavaScriptovej platformy Bun. Do súboru package.json v sekcii "preinstall", ktorá určuje skripty, ktoré sa spúšťajú pred začiatkom inštalácie, sa pridáva príkaz "node setup_bun.js".

V súbore «setup_bun.js» je prítomný kód na vykonanie obfuskovaného skriptu «bun_environment.js», ktorý obsahuje kód červa. Na svoju ďalšiu distribúciu červ nájde kód balíkov, upraví súbor package.json (zvýši číslo verzie a pridá volanie setup_bun.js), pridá súbory setup_bun.js a bun_environment.js, prebalí balík a vykoná príkaz «npm publish» na zverejnenie novej verzie.
Medzi kompromitované populárne balíky patrí: @zapier/zapier-sdk (2,8 milióna stiahnutí týždenne), @posthog/core (2,8 milióna), posthog-node (1,5 milióna), @asyncapi/specs (1,4 milióna), @postman/tunnel-agent (1,2 milióna). Predpokladá sa, že útok začal kompromitáciou sprievodného balíka @asyncapi/specs.
Zdroj: opennet.ru
