Dzisiejszy tekst poświęcimy obserwowanej aktualnie interesującej kampanii malware, która skierowana jest przeciwko programistom npm (paczek JavaScript). Opiera się na podrzucaniu setek wersji różnych sfałszowanych paczek do pobrania, w których nazwach lub adresach URL używane są nierzucające się w oczy literówki. Celem ataków jest próba oszukania deweloperów i nakłonienia ich do uruchomienia złośliwego systemu międzyplatformowego.
Zgodnie z ustaleniami Socket opublikowanymi kilka dni temu atak wyróżnia się wykorzystaniem inteligentnych kontraktów (ang. smart contracts) Ethereum do dystrybucji adresów serwerów command-and-control (C2).
Aktywność została zauważona 30 października 2024 r., chociaż mówi się, iż mogła wówczas trwać już od tygodnia. W rejestrze pakietów npm zostało opublikowanych co najmniej 287 złośliwych pakietów z literówkami.
Pakiety zawierają zaciemniony kod JavaScript, który jest wykonywany podczas lub po instalacji, co ostatecznie prowadzi do pobrania pliku binarnego następnego etapu ze zdalnego serwera. Plik binarny ustanawia trwałość i eksfiltruje poufne informacje związane z zainfekowaną maszyną z powrotem na ten sam serwer.
Ciekawym aspektem ataku jest kod JavaScript, który wchodzi w interakcję z inteligentnym kontraktem Ethereum, używając biblioteki ethers.js, aby pobrać adres IP serwera C2. Warto tutaj wspomnieć, iż kampania o nazwie EtherHiding wykorzystała podobną taktykę, używając kontraktów Smart Chain Binance (BSC), by przejść do następnej fazy łańcucha ataku.
Zdecentralizowana natura blockchain oznacza, iż trudniej jest zablokować kampanię, ponieważ adresy IP obsługiwane przez kontrakt mogą być aktualizowane w locie przez osobę atakującą, co pozwala złośliwemu oprogramowaniu na bezproblemowe łączenie się z nowymi adresami IP, gdy starsze są blokowane lub usuwane.
Wykorzystując blockchain w ten sposób, atakujący zyskują dwie najważniejsze korzyści: ich infrastruktura staje się praktycznie niemożliwa do zniszczenia ze względu na niezmienną naturę blockchain, a zdecentralizowana architektura sprawia, iż blokowanie połączeń sieciowo jest niezwykle trudne.
Obecnie nie jest jasne, kto stoi za kampanią, chociaż zespół ds. badań nad zagrożeniami Socket Threat Research Team twierdzi, iż zidentyfikował komunikaty o błędach napisane w języku rosyjskim w celu obsługi wyjątków i rejestrowania, co sugeruje, iż sprawcą zagrożenia może być osoba posługująca się tym językiem.
Kampania ujawniła kolejny sposób atakujących na zatruwanie ekosystemu open source, co podkreśla potrzebę zachowania czujności podczas pobierania przez programistów pakietów z repozytoriów oprogramowania.