Przy pomocy robaka Shai-Hulud skompromitowanych zostało 600 pakietów NPM

Odnotowano drugi atak na pakiety w repozytorium NPM, przeprowadzany z wykorzystaniem modyfikacji samorozprzestrzeniającego się robaka Shai-Hulud, który wstawia złośliwe oprogramowanie do zależności. W wyniku ataku opublikowano złośliwe wydania 605 pakietów, które łącznie miały ponad 100 mln pobrań.

Aby przeprowadzić atak, cyberprzestępcy za pomocą phishingu przechwycili dane logowania do konta osoby odpowiedzialnej za jeden z popularnych pakietów, używanego jako zależność przez wiele pakietów. Wykorzystując przechwycone konto, atakujący opublikowali wydanie pakietu, do którego dodano kod aktywujący robaka podczas instalacji dotkniętego pakietu wśród zależności. Uruchomiony robak przeszukuje dane logowania w bieżącym środowisku, ściągając i uruchamiając narzędzie TruffleHog.

W przypadku wykrycia tokenu dostępu do katalogu NPM, robak automatycznie publikuje nowe złośliwe wydania dla pakietów rozwijanych w bieżącym środowisku. W ten sposób w łańcuchu infekowane jest całe drzewo zależności. Oprócz tokenu NPM robak zachowuje klucze dostępu do GitHub oraz chmurowych usług AWS, Azure i GCP (Google Cloud Platform), a także zmienne środowiskowe i inne poufne dane, które potrafi wykryć skaner TruffleHog.

Znalezione w systemie poufne dane są umieszczane na GitHubie poprzez tworzenie repozytoriów o chaotycznych nazwach (np. „qzx15djl71alh6p80h”) z frazą „Sha1-Hulud: The Second Coming” w opisie, a także w kodowanym formacie są wypisywane do logów GitHub Actions. W tworzonym repozytorium znajduje się plik w formacie JSON (np. jsonactionsSecrets.json lub contents.json), zawierający ciąg z zakodowanymi metodą base64 informacjami o systemie, zmiennymi środowiskowymi i przechwyconymi danymi. Aby przekazywać informacje na zewnątrz z systemów ciągłej integracji opartych na GitHub, robak tworzy handler GitHub Actions o nazwie „.github/workflows/formatter_123456789.yml” i konfiguruje runner o nazwie SHA1HULUD.

Różnice w porównaniu do podobnego ataku we wrześniu sprowadzają się do innej metody wstawiania złośliwego kodu do pakietu. W formowanych przez robaka złośliwych wydaniach deklarowana jest implementacja wsparcia dla platformy JavaScript Bun. Do pliku package.json w sekcji „preinstall”, określającej skrypty uruchamiane przed rozpoczęciem instalacji, dodawana jest komenda „node setup_bun.js.”

Przy pomocy robaka Shai-Hulud skompromitowanych zostało 600 pakietów NPM

W pliku „setup_bun.js” znajduje się kod do uruchomienia zaniżonego skryptu „bun_environment.js”, który zawiera kod robaka. W celu dalszego rozpowszechnienia robak znajduje kod pakietów, wprowadza zmiany do pliku package.json (zwiększa numer wersji i dodaje wywołanie setup_bun.js), dodaje pliki setup_bun.js i bun_environment.js, przepakowuje pakiet i wykonuje polecenie „npm publish”, aby opublikować nową wersję.

Wśród skompromitowanych popularnych pakietów znajdują się: @zapier/zapier-sdk (2,8 mln pobrań tygodniowo), @posthog/core (2,8 mln), posthog-node (1,5 mln), @asyncapi/specs (1,4 mln), @postman/tunnel-agent (1,2 mln). Przyjmuje się, że atak rozpoczął się od skompromitowania pakietu @asyncapi/specs.

Źródło: opennet.ru

Kup solidny hosting stron z ochroną przed DDoS, serwery VPS VDS 🔥 Kup solidny hosting stron z ochroną przed DDoS, serwery VPS VDS | ProHoster