
Co znajdziesz w tym artykule?
Wprowadzenie do problemu / definicja
PolinRider to kampania ataków na łańcuch dostaw oprogramowania, w której złośliwe pakiety i rozszerzenia trafiają do popularnych ekosystemów używanych przez programistów. Celem operacji jest przejęcie dostępu do środowisk deweloperskich, kradzież danych uwierzytelniających, sekretów oraz kodu źródłowego, a następnie dalsze rozprzestrzenianie infekcji.
Zagrożenie jest szczególnie istotne dla firm technologicznych, zespołów DevOps oraz organizacji związanych z rynkiem kryptowalut. Atakujący nie ograniczają się do jednorazowego wdrożenia malware, lecz budują trwały mechanizm infiltracji oparty na zaufaniu do pakietów, repozytoriów i narzędzi developerskich.
W skrócie
Badacze powiązali kampanię PolinRider z operatorami działającymi w interesie Korei Północnej i wskazali, że w jej ramach opublikowano 108 unikalnych złośliwych pakietów oraz rozszerzeń, a także 162 powiązane artefakty wydań. Aktywność objęła wiele środowisk, w tym npm, Composer, Go oraz rozszerzenia przeglądarkowe.
- atak wykorzystuje zaufanie do ekosystemu open source i narzędzi IDE,
- celem są przede wszystkim programiści oraz organizacje technologiczne,
- infekcja może prowadzić do przejęcia tokenów, kluczy API i prywatnych repozytoriów,
- kampania wpisuje się w szerszy wzorzec działań znany jako Contagious Interview.
Kontekst / historia
Kampania Contagious Interview jest znana od co najmniej 2023 roku i od początku opierała się na socjotechnice wymierzonej w deweloperów oraz specjalistów z branży kryptowalut. Typowy scenariusz zakładał podszywanie się pod rekruterów, współpracowników lub partnerów biznesowych, aby nakłonić ofiarę do uruchomienia pozornie nieszkodliwego kodu.
PolinRider rozszerza ten model o wyraźny komponent supply chain. Zamiast polegać wyłącznie na bezpośrednim oszustwie, operatorzy zatruwają pakiety, repozytoria i rozszerzenia wykorzystywane w codziennej pracy. To oznacza przesunięcie z incydentów punktowych w stronę długotrwałej kompromitacji całego ekosystemu deweloperskiego.
W praktyce taki model zwiększa zasięg ataku, ponieważ pojedyncze przejęcie konta maintainera lub repozytorium może doprowadzić do rozprzestrzenienia malware na wielu kolejnych użytkowników i projektach.
Analiza techniczna
W opisanej fali aktywności zidentyfikowano 19 bibliotek npm, 10 pakietów Composer, 61 modułów Go oraz jedno rozszerzenie do Google Chrome. Złośliwe komponenty były publikowane zarówno pod nazwami przypominającymi legalne projekty, jak i w rzeczywistych repozytoriach po przejęciu dostępu do kont maintainerów lub samych zasobów kodu.
Rdzeń kampanii opiera się na zaciemnionych ładunkach JavaScript ukrywanych w plikach wyglądających niegroźnie. Operatorzy stosują między innymi nadmiarowe białe znaki, fałszywe zasoby udające czcionki oraz ukryte ścieżki wykonania kodu, które aktywują się przez mechanizmy automatyzacji używane przez programistów.
Szczególnie niebezpieczny jest mechanizm wykorzystujący pliki zadań środowiska VS Code, zwłaszcza konfiguracje pozwalające na automatyczne uruchomienie po otwarciu katalogu roboczego. Dzięki temu złośliwy kod może zostać wykonany już na etapie otwierania projektu, bez świadomej interakcji użytkownika.
Po uruchomieniu malware przeszukuje system i projekt pod kątem plików konfiguracyjnych charakterystycznych dla współczesnych środowisk JavaScript. Następnie dopisuje do nich dodatkowy kod, co umożliwia utrwalenie infekcji i zwiększa szansę, że złośliwe zmiany trafią do repozytorium lub procesu buildowania.
Atakujący manipulują także historią Git, stosując force push oraz antydatowanie commitów. Takie działania utrudniają analizę incydentu, ponieważ zmiany mogą wyglądać na starsze i mniej podejrzane, a zwykły przegląd historii repozytorium nie zawsze ujawnia rzeczywisty przebieg kompromitacji.
W dalszym etapie loader JavaScript komunikuje się z infrastrukturą opartą o usługi blockchain i pobiera zaszyfrowany drugi etap. Ten może uruchamiać kolejne komponenty, w tym narzędzia do zdalnego dostępu oraz stealer ukierunkowany na kradzież sekretów, danych konfiguracyjnych i poświadczeń.
Konsekwencje / ryzyko
Najpoważniejsze konsekwencje dotyczą kompromitacji stacji roboczych programistów, prywatnych repozytoriów oraz procesów CI/CD. Jeżeli złośliwy pakiet zostanie uruchomiony w zaufanym środowisku, atakujący mogą uzyskać dostęp do tokenów dostępowych, kluczy API, sekretów chmurowych, danych firmowych i portfeli kryptowalutowych.
Drugim poziomem ryzyka jest propagacja infekcji przez legalne projekty. Jeśli malware dopisze własny kod do plików konfiguracyjnych albo utrwali się w repozytorium, może zostać nieświadomie przekazane innym programistom, serwerom buildowym oraz klientom końcowym.
Skuteczność kampanii zwiększa wykorzystanie przejętych kont, wiarygodnie wyglądających projektów oraz ukrywania śladów w historii Git. To sprawia, że organizacje polegające wyłącznie na reputacji pakietów lub ręcznym przeglądzie commitów mogą nie wykryć ataku na czas.
Rekomendacje
Organizacje powinny traktować instalację wskazanych pakietów i rozszerzeń jako potencjalną pełną kompromitację środowiska deweloperskiego. W takiej sytuacji konieczna jest rotacja wszystkich narażonych sekretów z wykorzystaniem czystej, zaufanej stacji roboczej.
Warto również przeprowadzić szczegółowy audyt repozytoriów i konfiguracji projektów, zwłaszcza plików odpowiedzialnych za automatyzację zadań, budowanie aplikacji oraz linting. Szczególną uwagę należy zwrócić na lokalne modyfikacje, nietypowe hooki oraz zmiany, które nie mają jasnego uzasadnienia biznesowego.
- wyłączyć lub ograniczyć automatyczne uruchamianie zadań w IDE, jeśli nie jest niezbędne,
- wymuszać podpisywanie commitów i monitorować force push,
- wdrożyć skanowanie zależności oraz artefaktów buildów pod kątem zachowań złośliwych,
- stosować listy dozwolonych rejestrów, publisherów i pakietów,
- segmentować środowiska deweloperskie i ograniczać dostęp do sekretów,
- używać krótkotrwałych poświadczeń zamiast długowiecznych tokenów,
- monitorować anomalie w repozytoriach i plikach konfiguracyjnych projektu.
Zespoły bezpieczeństwa powinny rozszerzyć procedury reagowania o analizę historii wydań pakietów, aktywności kont maintainerskich oraz zmian dokonywanych lokalnie po instalacji zależności. W tego typu kampaniach tradycyjne wskaźniki kompromitacji często nie wystarczają.
Podsumowanie
PolinRider pokazuje, że współczesne ataki na łańcuch dostaw oprogramowania coraz częściej łączą socjotechnikę, przejęcia kont, zatruwanie repozytoriów i nadużycia funkcji obecnych w narzędziach developerskich. Skala operacji oraz liczba złośliwych pakietów wskazują na dojrzały model działania nastawiony na długoterminową infiltrację i kradzież danych.
Dla organizacji rozwijających oprogramowanie najważniejsza lekcja jest jasna: bezpieczeństwo supply chain nie może ograniczać się do wyszukiwania znanych podatności w bibliotekach. Równie istotne jest monitorowanie zaufania do maintainerów, zmian w repozytoriach, zachowania IDE oraz nietypowych ścieżek wykonania kodu.
Źródła
- The Hacker News — https://thehackernews.com/2026/07/north-korean-hackers-publish-108.html
- Socket — https://socket.dev
- MITRE ATT&CK: Contagious Interview — https://attack.mitre.org
- OpenSourceMalware — https://github.com/OpenSourceMalware
- eSentire — https://www.esentire.com