
Wprowadzenie do problemu / definicja
Node.js to powszechnie wykorzystywane, legalne i podpisane cyfrowo środowisko uruchomieniowe JavaScript. W najnowszych kampaniach cyberprzestępcy zaczęli używać go jako narzędzia do uruchamiania złośliwych skryptów, dzięki czemu omijają część tradycyjnych mechanizmów bezpieczeństwa opartych na wykrywaniu podejrzanych plików wykonywalnych. Z perspektywy obrońców problem polega na tym, że zaufany proces node.exe może stać się nośnikiem dla backdoorów, loaderów i skryptów utrzymujących dostęp do środowiska ofiary.
W skrócie
Badacze opisali incydenty, w których napastnicy pobierali legalny instalator Node.js i wykorzystywali zawarty w nim plik node.exe do uruchamiania złośliwego kodu JavaScript. Technika ta była obserwowana co najmniej od lutego 2026 roku i pojawiała się w atakach wymierzonych m.in. w sektor rządowy, technologiczny, hotelarski oraz finansowy.
- Atak często rozpoczyna się od socjotechniki, w tym przynęt typu ClickFix.
- Zamiast klasycznego malware PE uruchamiane są skrypty JavaScript przez zaufany proces.
- W kampaniach pojawiają się backdoory, loadery i mechanizmy trwałości.
- Infrastruktura C2 może być ukrywana z użyciem technik takich jak EtherHiding.
Kontekst / historia
Nadużywanie legalnych narzędzi systemowych i deweloperskich od dawna stanowi istotny trend w działaniach ofensywnych. Koncepcja living-off-the-land oraz używanie narzędzi dual-use opiera się na prostym założeniu: skoro dane oprogramowanie jest legalne, powszechne i często dopuszczone w organizacji, jego aktywność łatwiej ukryć wśród normalnego ruchu operacyjnego.
Node.js wpisuje się w ten schemat wyjątkowo dobrze. To środowisko szeroko stosowane przez programistów, administratorów i zespoły DevOps, dlatego jego obecność w systemie rzadko wzbudza automatyczne podejrzenia. W opisywanych kampaniach napastnicy mieli sięgać po tę metodę również po nieudanych próbach wdrożenia bardziej klasycznych implantów, przechodząc na model, w którym legalny runtime staje się pośrednikiem do wykonania złośliwej logiki.
Analiza techniczna
Łańcuch ataku zwykle zaczyna się od uzyskania początkowego dostępu, nierzadko poprzez manipulację użytkownikiem. Ofiara może zostać nakłoniona do uruchomienia polecenia w systemie Windows lub wykonania czynności, która pobierze kolejne komponenty z internetu. Następnie atakujący korzysta z oficjalnego instalatora Node.js albo z samego pliku node.exe, aby uruchomić własne skrypty JavaScript.
Kluczowa przewaga tej techniki polega na rozdzieleniu nośnika wykonania od złośliwej logiki. Sam plik binarny jest legalny i podpisany, natomiast szkodliwe działanie znajduje się w interpretowanych skryptach. Utrudnia to wykrywanie oparte wyłącznie na sygnaturach, reputacji pliku lub prostym modelu zaufania do podpisanego oprogramowania.
Skrypty uruchamiane przez Node.js mogą odpowiadać za różne etapy operacji:
- pobieranie dodatkowych komponentów malware,
- komunikację z infrastrukturą dowodzenia i kontroli,
- wywoływanie PowerShella,
cmd.exei narzędzi systemowych, - utrwalanie obecności w systemie, np. przez klucze autostartu
Run, - wdrażanie kolejnych backdoorów lub stealerów.
Dodatkowym problemem jest ukrywanie infrastruktury C2 przy użyciu technik takich jak EtherHiding, w których informacje o serwerach sterujących mogą być przechowywane pośrednio w publicznie dostępnych zasobach opartych na blockchainie. W praktyce utrudnia to prostą blokadę pojedynczej domeny lub adresu IP, ponieważ operatorzy mogą elastycznie zmieniać punkt kontaktu z malware.
Doniesienia wskazują również na współwystępowanie tej techniki z innymi rodzinami zagrożeń i zestawami narzędzi używanych przez brokerów dostępu początkowego oraz operatorów kampanii socjotechnicznych. To pokazuje, że wykorzystanie Node.js nie jest już wyłącznie ciekawostką, lecz coraz bardziej regularnym elementem współczesnego arsenału.
Konsekwencje / ryzyko
Największe ryzyko wynika z błędnego założenia, że legalny proces jest automatycznie bezpieczny. W środowiskach, w których Node.js jest wykorzystywany do codziennej pracy, nietypowe uruchomienie node.exe może pozostać niezauważone, jeśli narzędzia EDR lub SIEM nie analizują pełnego kontekstu zdarzenia. Znaczenie mają tu m.in. linia poleceń, katalog roboczy, proces rodzic, źródło skryptu oraz późniejsze połączenia sieciowe.
Ryzyko zwiększa także możliwość opóźnionego rozwijania ataku. Napastnik może najpierw uzyskać przyczółek, a dopiero później wdrożyć kolejne komponenty, przeprowadzić ruch lateralny lub rozpocząć eksfiltrację danych. Taki odstęp czasowy utrudnia korelację incydentów i może wydłużyć czas obecności intruza w środowisku.
Istotne zagrożenie dotyczy też organizacji posiadających publiczne serwisy WWW. Jeżeli atakujący zmodyfikuje stronę i umieści na niej przynętę ClickFix lub fałszywy komunikat CAPTCHA, kompromitacja może objąć nie tylko samą firmę, ale również jej klientów, partnerów i pracowników. Jedna skuteczna infekcja może więc uruchomić efekt kaskadowy.
Rekomendacje
Organizacje powinny traktować Node.js i inne legalne runtime’y jako potencjalny wektor wykonania złośliwego kodu. Sam fakt, że proces jest podpisany i powszechnie używany, nie powinien wyłączać go z analizy bezpieczeństwa. Kluczowe staje się monitorowanie nietypowego użycia oraz wiązanie aktywności procesu z zachowaniem użytkownika, systemu i sieci.
- Wdrożyć reguły EDR/SIEM wykrywające nietypowe uruchomienia
node.exe. - Analizować linie poleceń, drzewo procesów oraz relacje między Node.js, PowerShellem i
cmd.exe. - Monitorować mechanizmy trwałości, w tym klucze
Run, harmonogram zadań i foldery autostartu. - Ograniczać możliwość uruchamiania niezatwierdzonych skryptów i binariów.
- Śledzić połączenia sieciowe inicjowane przez procesy deweloperskie i administracyjne.
- Regularnie skanować publiczne serwisy WWW pod kątem nieautoryzowanych modyfikacji treści i skryptów.
- Szkolić użytkowników w zakresie ClickFix, fałszywych CAPTCHA i poleceń wklejanych do okna Uruchamianie lub terminala.
Z perspektywy threat huntingu szczególnie wartościowe może być korelowanie pobrania oficjalnego instalatora Node.js z pojawieniem się nowych skryptów JavaScript w katalogach tymczasowych, profilach użytkowników lub niestandardowych lokalizacjach. W środowiskach o podwyższonych wymaganiach bezpieczeństwa warto rozważyć ograniczenie użycia Node.js wyłącznie do zatwierdzonych hostów i zespołów.
Podsumowanie
Wykorzystywanie Node.js jako zaufanego nośnika dla malware potwierdza, że współczesne kampanie coraz częściej opierają się na legalnych narzędziach, a nie wyłącznie na klasycznych złośliwych plikach wykonywalnych. Dla zespołów bezpieczeństwa oznacza to konieczność odejścia od prostego modelu zaufania do podpisanego binarium i przejścia do analizy kontekstu użycia, zachowania procesu oraz powiązanych aktywności w systemie i sieci.
Źródła
- https://thehackernews.com/2026/09/attackers-turn-trusted-nodejs-runtime.html
- https://www.security.com/
- https://www.guidepointsecurity.com/
- https://www.stormshield.com/
- https://nodejs.org/