
Co znajdziesz w tym artykule?
Wprowadzenie do problemu / definicja
Ekosystem npm ponownie znalazł się na celowniku atakujących prowadzących operacje wymierzone w łańcuch dostaw oprogramowania. Tym razem zagrożenie dotyczy siedmiu złośliwych pakietów podszywających się pod komponenty związane z Vite, popularnym narzędziem wykorzystywanym w projektach frontendowych opartych na JavaScript i TypeScript.
Kampania wyróżnia się zastosowaniem nietypowej infrastruktury command-and-control, w której publiczne sieci blockchain pełnią rolę warstwy pośredniczącej do przekazywania wskaźników i pobierania kolejnych etapów złośliwego ładunku. Taki model utrudnia zarówno wykrywanie, jak i szybkie unieszkodliwienie operacji.
W skrócie
Badacze zidentyfikowali siedem złośliwych pakietów npm publikowanych od końca czerwca do początku lipca 2026 roku. Pakiety zostały nazwane w sposób mający uwiarygodnić ich pochodzenie i skłonić programistów do instalacji w środowiskach deweloperskich oraz buildowych.
- Złośliwy kod nie uruchamia się podczas instalacji, lecz dopiero przy imporcie pakietu.
- Celem ataku jest dostarczenie trojana zdalnego dostępu typu RAT.
- Malware może otwierać reverse shell, kraść poświadczenia, wyprowadzać pliki i utrzymywać trwałość w systemie.
- Blockchain został wykorzystany jako element wielowarstwowego łańcucha C2.
Kontekst / historia
Opisywana operacja stanowi rozwinięcie wcześniejszych kampanii malware w npm, które podszywały się pod biblioteki związane z popularnymi narzędziami developerskimi. Tym razem operatorzy skoncentrowali się na ekosystemie Vite, co sugeruje świadome profilowanie ofiar spośród zespołów frontendowych i full-stackowych.
Istotną zmianą taktyczną jest odejście od prostych typosquatów na rzecz pakietów typu scoped, które sprawiają wrażenie bardziej oficjalnych i lepiej wpisują się w praktyki publikowania bibliotek przez organizacje. To zwiększa prawdopodobieństwo, że podejrzana zależność zostanie uznana za wiarygodną zarówno przez programistę, jak i przez automatyczne procesy budowania.
Wśród wykrytych nazw znalazły się między innymi @uw010010/vite-tree, @vite-tab/tab, @vite-ln/build-ts, @vite-mcp/vite-type, @vite-pro/vite-ui, @vitets/vite-ts oraz @vite-ts/vite-ui. Część z tych pakietów zanotowała setki pobrań, a cała kampania osiągnęła łączną liczbę pobrań sięgającą kilku tysięcy.
Analiza techniczna
Techniczny rdzeń kampanii opiera się na loaderze umieszczonym w pliku bin/vite.js. Kluczowym elementem jest to, że złośliwy kod nie aktywuje się na etapie npm install, lecz dopiero wtedy, gdy pakiet zostanie zaimportowany przez aplikację albo proces buildowy. To pozwala ominąć część mechanizmów bezpieczeństwa skoncentrowanych wyłącznie na skryptach instalacyjnych.
Łańcuch infekcji ma charakter wieloetapowy i wykorzystuje czterowarstwową architekturę pobierania kolejnych komponentów. Publiczne blockchainy nie przechowują bezpośrednio pełnego malware, lecz służą jako nośnik danych prowadzących do dalszych etapów ataku.
- Moduł odpytuje blockchain Tron w celu pobrania najnowszej transakcji z kontrolowanego portfela.
- Dane transakcyjne są dekodowane i odwracane w celu uzyskania identyfikatora transakcji w Binance Smart Chain.
- Z pola wejściowego tej transakcji wyodrębniany jest zaszyfrowany ładunek.
- Ładunek jest odszyfrowywany przy użyciu klucza osadzonego w kodzie.
- Jeżeli ten proces zawiedzie, malware może skorzystać ze ścieżki zapasowej opartej na sieci Aptos.
- Dodatkowo przewidziano awaryjne pobranie właściwego RAT bezpośrednio z serwera HTTP.
Taki model znacząco zwiększa odporność infrastruktury atakującego. Zamiast opierać się wyłącznie na domenach lub tradycyjnych serwerach C2, operator wykorzystuje publiczne rejestry transakcyjne, których nie można łatwo wyłączyć klasycznymi metodami reakcji. Blockchain staje się więc warstwą sterującą i maskującą, a nie zwykłym miejscem hostowania pliku.
Badacze wskazali również na silne powiązania z wcześniejszą kampanią ChainVeil. O podobieństwie mają świadczyć między innymi współdzielone elementy infrastruktury drugiego poziomu, identyczne klucze XOR używane do deszyfrowania danych oraz ten sam końcowy trojan RAT. Może to sugerować działalność tego samego operatora albo co najmniej współdzielenie zaplecza operacyjnego.
Dodatkowym utrudnieniem dla obrońców jest mieszanie wersji czystych i złośliwych w obrębie tych samych pakietów. W praktyce oznacza to, że powierzchowna analiza tylko najnowszego wydania nie musi wystarczyć do wykrycia zagrożenia.
Konsekwencje / ryzyko
Skala ryzyka jest wysoka, zwłaszcza dla organizacji intensywnie korzystających z otwartego ekosystemu JavaScript i automatyzujących procesy budowania. Jeżeli złośliwy pakiet zostanie uruchomiony na stacji deweloperskiej lub agencie CI/CD, skutki mogą wykraczać daleko poza pojedynczy host.
- kradzież poświadczeń deweloperskich i sesji logowania,
- przejęcie tokenów npm, kluczy API i sekretów środowiskowych,
- dostęp do repozytoriów kodu i zasobów chmurowych,
- utrzymanie trwałego zdalnego dostępu do systemu ofiary,
- możliwość modyfikacji artefaktów budowania i dalszej propagacji ataku.
Szczególnie groźny jest scenariusz, w którym skompromitowany pipeline zaczyna publikować zmodyfikowane komponenty do klientów, partnerów lub wewnętrznych rejestrów. W takiej sytuacji pojedyncza infekcja może przekształcić się w incydent łańcucha dostaw o znacznie większym zasięgu.
Ryzyko zwiększa także opóźniona detekcja. Uruchamianie kodu przy imporcie, użycie scoped packages oraz ukrywanie wskaźników C2 w blockchainie razem obniżają skuteczność wielu standardowych mechanizmów opartych wyłącznie na reputacji pakietów i prostym monitoringu instalacji zależności.
Rekomendacje
Organizacje korzystające z npm i Vite powinny potraktować ten incydent jako wyraźny sygnał do przeglądu kontroli bezpieczeństwa w obszarze software supply chain. Reakcja nie powinna ograniczać się wyłącznie do usunięcia podejrzanych paczek.
- Sprawdzić, czy wskazane pakiety lub ich wersje występują w
package.json,package-lock.json,pnpm-lock.yamlorazyarn.lock. - Usunąć złośliwe zależności i przeprowadzić pełny audyt zależności bezpośrednich oraz pośrednich.
- Założyć kompromitację każdego środowiska, które pobrało i uruchomiło podejrzany pakiet.
- Zrotować poświadczenia deweloperskie, tokeny npm, sekrety CI/CD, klucze API i dane dostępowe do chmury.
- Skontrolować pliki odpowiedzialne za trwałość, takie jak
.bashrc,.zshrci.profile. - Przeanalizować ruch wychodzący oraz logi pod kątem nietypowych odwołań do infrastruktur blockchain i nieznanych hostów HTTP.
- Przeskanować endpointy pod kątem reverse shell, persistence i artefaktów RAT.
- Wdrożyć pinowanie wersji oraz korzystanie z wewnętrznego, zatwierdzonego rejestru pakietów.
- Rozszerzyć ochronę CI/CD o analizę behawioralną paczek i kontrolę pochodzenia maintainerów.
- Przeszkolić zespoły developerskie w zakresie typosquattingu, namespace impersonation i ryzyka złośliwych pakietów scoped.
W środowiskach o podwyższonych wymaganiach bezpieczeństwa warto dodatkowo wdrożyć listy dozwolonych pakietów, izolację agentów budujących oraz ścisłe ograniczenie dostępu stacji deweloperskich do sekretów produkcyjnych.
Podsumowanie
Najnowsza kampania pokazuje, że ataki na łańcuch dostaw JavaScript stają się coraz bardziej dojrzałe i odporne na klasyczne metody blokowania. Złośliwe pakiety związane z Vite łączą socjotechnikę, wieloetapowe ładowanie malware oraz nietypowe wykorzystanie publicznych blockchainów jako elementu infrastruktury C2.
Dla zespołów bezpieczeństwa i DevSecOps to kolejny dowód, że sama reputacja pakietu lub analiza skryptów instalacyjnych już nie wystarcza. Konieczne są głębsza kontrola zależności, monitoring zachowania kodu na etapie importu i buildów oraz szybkie procedury reagowania po wykryciu kompromitacji.
Źródła
- Seven Malicious Vite npm Packages Use Blockchain C2 to Deliver a RAT — https://thehackernews.com/2026/07/seven-malicious-vite-npm-packages-use.html
- Sequel to ChainVeil npm Malware Targets Vite Ecosystem — https://checkmarx.com/zero-post/sequel-to-chainveil-npm-malware-targets-vite-ecosystem/
- ChainVeil: A Malicious npm Supply Chain Attack by SuccessKey — https://checkmarx.com/zero-post/chainveil-a-malicious-npm-supply-chain-attack-by-successkey/