
Co znajdziesz w tym artykule?
Wprowadzenie do problemu / definicja
Ataki na łańcuch dostaw oprogramowania pozostają jednym z najpoważniejszych zagrożeń dla zespołów programistycznych i organizacji rozwijających aplikacje. Najnowsza kampania wykryta w rejestrze npm pokazuje, jak łatwo cyberprzestępcy mogą wykorzystać zaufanie do popularnych bibliotek i narzędzi, publikując pakiety podszywające się pod komponenty związane z Rollup oraz polyfillami. Celem takich działań nie jest wyłącznie infekcja pojedynczej maszyny, lecz przejęcie dostępu do środowisk deweloperskich, systemów buildowych i przechowywanych tam sekretów.
W praktyce oznacza to ryzyko kradzieży kluczy API, tokenów dostępowych, danych przeglądarkowych, konfiguracji chmurowych, a nawet informacji związanych z portfelami kryptowalutowymi. W przypadku środowisk CI/CD jeden złośliwy pakiet może stać się punktem wejścia do znacznie większego incydentu obejmującego wiele projektów jednocześnie.
W skrócie
Badacze zidentyfikowali kampanię wymierzoną w użytkowników npm, w której pakiety o nazwach sugerujących związek z Rollup imitowały legalne komponenty i uruchamiały wieloetapowy łańcuch malware. Wśród wskazanych nazw znalazły się między innymi „rollup-packages-polyfill-core”, „rollup-runtime-polyfill-core”, „swift-parse-stream”, „quirky-token”, „react-icon-svgs” oraz „rollup-plugin-polyfill-connect”.
- Pakiety udawały legalne narzędzia deweloperskie.
- Infekcja była realizowana wieloetapowo, z użyciem zewnętrznie pobieranych komponentów.
- Malware kradło dane z przeglądarek, portfeli kryptowalutowych i konfiguracji deweloperskich.
- Kampania wykazywała cechy kojarzone z wcześniejszymi operacjami przypisywanymi aktorom powiązanym z Koreą Północną.
Kontekst / historia
Fałszywe pakiety open source od lat stanowią problem dla ekosystemów programistycznych, jednak obecne kampanie stają się coraz bardziej dopracowane. Napastnicy nie ograniczają się już do prostych nazw imitujących popularne biblioteki. Coraz częściej kopiują konwencje nazewnicze, opisy, metadane oraz ogólną prezentację pakietu, tak aby wyglądał wiarygodnie podczas szybkiej weryfikacji przez programistę.
Opisywany przypadek wpisuje się w szerszy trend ataków na npm i inne rejestry pakietów. Przestępcy koncentrują się przede wszystkim na stacjach roboczych deweloperów oraz środowiskach automatyzacji, ponieważ właśnie tam znajdują się dane o wysokiej wartości operacyjnej: sekrety chmurowe, poświadczenia Git, klucze SSH, tokeny publikacyjne oraz konfiguracje narzędzi wykorzystywanych w codziennej pracy.
Analiza techniczna
Kampania została zaprojektowana jako atak wieloetapowy. Pakiety pierwszego etapu zawierały ukryte polecenia instalacyjne zapisane w Base64. Ich zadaniem było pobranie i uruchomienie kolejnych komponentów, takich jak „swift-parse-stream” lub „quirky-token”. Dodatkowo pakiet „react-icon-svgs” instalował jako drugi etap „rollup-plugin-polyfill-connect”.
Drugi etap był maskowany jako narzędzie pomocnicze do obsługi lub sanityzacji SVG, ale jego rzeczywistym celem było pobranie zewnętrznej konfiguracji JSON i wykonanie zawartego w niej kodu JavaScript. Taki model zapewniał operatorom elastyczność, ponieważ mogli zmieniać dalszy ładunek bez konieczności publikowania nowych wersji paczek w rejestrze npm. To znacząco utrudnia detekcję opartą wyłącznie na analizie statycznej.
Malware wykonywał także testy środowiskowe mające wykryć piaskownice, środowiska analityczne, infrastrukturę serverless i chmurowe środowiska deweloperskie. Po ominięciu tych kontroli instalował dodatkowe zależności i komunikował się z infrastrukturą zewnętrzną w celu pobrania zaszyfrowanego ładunku JavaScript. Po odszyfrowaniu działał on jako loader uruchamiający kolejne skrypty odpowiedzialne za zdalny dostęp i eksfiltrację danych.
Zakres funkcji był szeroki i wykraczał poza prosty downloader. Złośliwe oprogramowanie umożliwiało zdalne wykonywanie poleceń, interaktywne sesje terminalowe, wykonywanie zrzutów ekranu, kończenie procesów, a w środowiskach Windows także symulację działań użytkownika, takich jak ruchy myszy, kliknięcia, przewijanie i naciśnięcia klawiszy.
Równolegle malware zbierał dane z przeglądarek internetowych, portfeli kryptowalutowych, schowka systemowego oraz plików o wybranych rozszerzeniach. Szczególną uwagę zwracał zakres danych związanych z pracą dewelopera. Mechanizmy kolekcji poszukiwały między innymi historii i konfiguracji z narzędzi takich jak Visual Studio Code, Windsurf i Cursor, a także ustawień dla AWS, Microsoft Azure, SSH, Zsh oraz platform powiązanych z asystentami AI.
Konsekwencje / ryzyko
Skutki takiego incydentu mogą być poważne zarówno dla pojedynczych programistów, jak i dla dużych organizacji. Kompromitacja stacji roboczej dewelopera może prowadzić do przejęcia tokenów npm, poświadczeń Git, kluczy SSH, sekretów chmurowych oraz danych przechowywanych w przeglądarkach. W efekcie napastnik może uzyskać dostęp do repozytoriów kodu, pipeline’ów CI/CD i usług produkcyjnych.
Jeszcze większe ryzyko dotyczy maszyn buildowych oraz środowisk automatyzacji, gdzie często znajdują się poświadczenia o wysokich uprawnieniach. Jeśli złośliwy pakiet uruchomi się podczas procesu budowania, konsekwencje mogą objąć wiele projektów jednocześnie. To tworzy ryzyko dalszego zatrucia artefaktów, przejęcia kont publikacyjnych oraz ruchu bocznego w infrastrukturze organizacji.
Dodatkowym problemem jest wiarygodny wygląd pakietów. Nazwy, opisy i zachowanie podczas pobieżnej kontroli mogły sugerować, że są to legalne zależności. To sprawia, że tradycyjne ręczne sprawdzanie nazw bibliotek jest niewystarczające jako jedyny mechanizm ochrony.
Rekomendacje
Organizacje powinny traktować instalację wskazanych pakietów jako potencjalny incydent bezpieczeństwa i założyć możliwość kompromitacji hosta. Sama deinstalacja paczki nie jest wystarczająca, jeśli malware zdążył uruchomić dodatkowe komponenty lub wyprowadzić dane.
- Usunąć podejrzane biblioteki ze stacji roboczych i pipeline’ów CI/CD.
- Przeprowadzić rotację tokenów npm, kluczy SSH, sekretów chmurowych, poświadczeń Git i innych danych uwierzytelniających obecnych na zagrożonych maszynach.
- Przeanalizować historię instalacji pakietów npm oraz pliki lockfile pod kątem nietypowych zależności.
- Sprawdzić logi sieciowe w poszukiwaniu anomalii i nieautoryzowanych połączeń wychodzących.
- Uruchomić skanowanie endpointów pod kątem artefaktów postinstall, loaderów JavaScript i nowych mechanizmów uruchamiania po instalacji pakietu.
- Włączyć skanowanie zależności w CI/CD, w tym wykrywanie świeżo opublikowanych, mało popularnych lub nazewniczo podobnych pakietów.
- Ograniczyć uprawnienia sekretów używanych w buildach oraz skrócić ich czas życia.
- Wdrożyć izolację środowisk buildowych, segmentację stacji roboczych deweloperów oraz politykę allowlist dla zatwierdzonych pakietów.
- Rozważyć korzystanie z kontrolowanych repozytoriów pośredniczących i mirrorowania zależności.
Warto również monitorować anomalie związane z użyciem edytorów kodu, integracji chmurowych i narzędzi AI, ponieważ nowoczesne kampanie supply chain coraz częściej celują właśnie w te obszary.
Podsumowanie
Opisana kampania pokazuje, że npm pozostaje atrakcyjnym celem dla zaawansowanych operacji supply chain. Podszywanie się pod pakiety związane z Rollup, zastosowanie wieloetapowego łańcucha infekcji, mechanizmów unikania analizy oraz szerokiego zestawu funkcji kradzieży danych wskazuje na wysoki poziom przygotowania ataku. Dla zespołów bezpieczeństwa oznacza to konieczność wzmocnienia kontroli nad zależnościami, monitorowania instalacji pakietów oraz szybkiego reagowania na każdy sygnał możliwej kompromitacji.
Źródła
- The Hacker News — North Korea-Linked npm Packages Mimic Rollup Polyfills to Steal Developer Secrets — https://thehackernews.com/2026/07/north-korea-linked-npm-packages-mimic.html