Uwaga, programiści! Złośliwe Pakiety NPM pobrano już 100 000 razy. Opis dwóch kampanii szpiegowskich

kapitanhack.pl 6 godzin temu

W ciągu ostatnich czterech miesięcy ponad 130 złośliwych pakietów NPM, wdrażających programy wykradające informacje, zostało pobranych łącznie około 100 000 razy.

Czym jest NPM?

NPM jest menadżerem zależności (dependencies) dla języka JavaScript. Do opublikowania zależności w NPM konieczne jest założenie konta na npmjs.org. W zasobach NPM znaleźć można zarówno zależności tworzone, jak i rozwijane przez organizacje, a także paczki (pakiety) utrzymywane przez społeczność.

Czym są pakiety NPM?

Pakiety NPM to moduły kodu JavaScript przechowywane w rejestrze NPM i zarządzane dzięki menadżera pakietów NPM (Node Package Manager) – domyślnego menadżera dla środowiska Node.js. Umożliwiają łatwe dodawanie gotowych bibliotek, frameworków (takich jak React czy Angular) oraz narzędzi do projektów.

Jak wyglądała pierwsza kampania?

Socket – firma zajmująca się cyberbezpieczeństwem – twierdzi, iż w kampanii lipcowej zidentyfikowała tylko 10 pakietów, ale do momentu wykrycia akcji zgromadziła ona łącznie ponad 9900 pobrań.

Pakiety wykorzystują hak postinstall NPM do automatycznego wykonywania skryptu po uruchomieniu npm install. Skrypt identyfikuje system operacyjny ofiary i uruchamia ładunek w nowym oknie terminala, który działa niezależnie od procesu instalacji NPM.

Złośliwy kod ma wiele warstw zaciemniania i po instalacji wyświetla fałszywy monit CAPTCHA dzięki interfejsu readline Node. Następnie wysyła informacje systemowe do zdalnego serwera, a potem pobiera i wykonuje końcowy plik binarny.

Ładunek to 24-megabajtowa aplikacja napisana w Pythonie, spakowana przez PyInstaller, która przeprowadza rekonesans systemu i zbiera poufne informacje z różnych aplikacji i usług, w tym baz danych SQLite, plików konfiguracyjnych JSON, plików konfiguracyjnych tekstowych i przeglądarek.

Oprogramowanie wykradające informacje atakuje pęki kluczy (aplikacje przechowującą dane uwierzytelniające), pliki cookie przeglądarki, tokeny uwierzytelniające, klucze prywatne SSH i inne poufne informacje, które są następnie kompresowane w plikach ZIP i wysyłane na zdalny serwer kontrolowany przez atakującego.

Jak wyglądała druga kampania?

W ramach drugiej kampanii, która rozpoczęła się w sierpniu, zidentyfikowano łącznie 126 pakietów. Koi Security ostrzega, iż chociaż usunięto około 24 pakietów, ponad 80 pozostaje aktywnych. Łącznie pakiety zostały pobrane ponad 86 000 razy.

Kampania, nazwana PhantomRaven, opiera się na ukrytych zależnościach, aby dostarczać złośliwe oprogramowanie wykradające informacje, jednocześnie utrzymując pakiety w „czystości”.

Wykorzystując funkcję zdalnych dynamicznych zależności (RDD) NPM, która pozwala programistom używać adresów URL HTTP jako specyfikatorów zależności, a także hak preinstalacji, atakujący zapewnił, iż złośliwy kod został pobrany podczas instalacji pakietów ze zdalnego serwera bez wywoływania wykrycia.

Skrypt preinstalacji uruchamia się automatycznie, bez ostrzeżenia użytkownika i bez konieczności jego interakcji, niezależnie od tego, jak głęboko w drzewie zależności znajduje się pakiet.

Po uruchomieniu złośliwe oprogramowanie wyszukuje adresy e-mail w środowisku programistycznym ofiary, skanuje jej infrastrukturę w poszukiwaniu danych uwierzytelniających i tokenów zapewniających dostęp do repozytoriów i przepływów pracy, a następnie przeprowadza pełne rozpoznanie systemu.

Zaobserwowano, iż złośliwe oprogramowanie wykradało dane za pośrednictwem żądań HTTP GET, zakodowanych w adresie URL, żądań HTTP POST w formacie JSON oraz poprzez połączenie WebSocket z serwerem atakującego.

Koi twierdzi, iż w obu kampaniach atakujący wykorzystali typosquatting, aby nakłonić programistów do uruchomienia złośliwych pakietów. W ramach PhantomRaven nazwy zostały starannie dobrane – tak, aby przypominały LLM.

Deweloperzy proszący asystentów AI o rekomendacje pakietów mogą otrzymać wiarygodne nazwy nieistniejących pakietów. Aktor odpowiedzialny za tę kampanię stworzył te pakiety, a deweloperzy ufający rekomendacjom AI je pobrali.

Jak zabezpieczać środowiska deweloperskie?

Odpowiedzi na to pytanie udzielił SecurityWeek Ken Johnson, dyrektor ds. technologii DryRun Security:

„Weryfikacja zależności jest konieczna, ale już niewystarczająca. Zespoły potrzebują widoczności i kontroli wykraczających poza to, „co” jest pobierane z NPM lub PyPI, aby objąć „co stanie się dalej” – w zakresie pakowania, skryptów instalacyjnych, artefaktów kompilacji i zachowania środowiska uruchomieniowego. Haki po instalacji, kroki przepakowywania i ładunki generowane w terminalu to legalne mechanizmy, które atakujący teraz wykorzystują jako broń, dlatego zasługują na uwagę”.

„Operacyjnie oznacza to traktowanie instalacji i kompilacji jako wykonywania niepewnego: uruchamianie instalacji pakietów w efemerycznych, odizolowanych kontenerach CI, wymaganie powtarzalnych kompilacji i podpisanych artefaktów, skanowanie w poszukiwaniu haków postinstall i nazw z błędami typosquattingowymi zanim dotrą do CI, monitorowanie połączeń wychodzących z hostów kompilacji oraz blokowanie dostępu do magazynów danych uwierzytelniających systemu operacyjnego (lub korzystanie z sejfów, które nie ujawniają sekretów w postaci zwykłego tekstu). Dodaj do potoku kontrole integralności i mechanizmy SBOM, aby móc wcześnie wykrywać nieoczekiwane zmiany w archiwach i plikach binarnych” – radzi Johnson.

Idź do oryginalnego materiału