Popularny pakiet JavaScript zainfekowany

Pakiet npm UAParser.js, zainstalowany na dziesiątkach milionów komputerów na całym świecie, został zainfekowany programem do wykradania haseł i generowania kryptowalut.

Nieznani atakujący włamali się do kilku wersji popularnej biblioteki JavaScript, UAParser.js, poprzez wstrzyknięcie szkodliwego kodu. Według statystyk dostępnych na stronie programistów z biblioteki tej korzysta wiele projektów, a w ciągu tygodnia jest ona pobierana od 6 do 8 milionów razy.

Zhakowane zostały trzy wersje biblioteki: 0.7.29, 0.8.0 i 1.0.0. Wszyscy użytkownicy i administratorzy powinni jak najszybciej zaktualizować je odpowiednio do wersji 0.7.30, 0.8.1 i 1.0.1.

Czym jest biblioteka UAParser.js i dlaczego jest tak popularna

Programiści korzystający z języka JavaScript używają biblioteki UAParser.js do analizowania danych User-Agent wysyłanych przez przeglądarki. Jest ona implementowana na wielu stronach internetowych i wykorzystywana w procesie tworzenia oprogramowania różnych firm, takich jak Facebook, Apple, Amazon, Microsoft, Slack, IBM, HPE, Dell, Oracle czy Mozilla. Co więcej, część programistów używa instrumentów innych firm (np. architektury Karma do testowania kodu), które również są zależne od tej biblioteki, co dodatkowo zwiększa powierzchnię ataku (dodatkowe ogniwo w łańcuchu dostaw).

Sposób umieszczania szkodliwego kodu

Atakujący osadzili szkodliwe skrypty w bibliotece, aby pobrać szkodliwy kod i wykonać go na komputerach ofiar, zarówno w systemie Linux, jak i Windows. Wśród celów modułu było na przykład generowanie kryptowaluty czy (tylko w przypadku systemu Windows) kradzież poufnych informacji, takich jak pliki cookie przeglądarki, hasła i poświadczenia systemu operacyjnego.

Jednak możliwe, że to nie wszystko: zgodnie z ostrzeżeniem wydanym przez amerykańską Agencję ds. Bezpieczeństwa Cybernetycznego i Ochrony Infrastruktury (Cybersecurity and Infrastructure Protection Agency, CISA) zainstalowanie zainfekowanych bibliotek może pozwolić atakującym na przejęcie kontroli nad systemami.

Według użytkowników GitHub to szkodliwe oprogramowanie tworzy pliki binarne: jsextension (w systemie Linux) i jsextension.exe (w systemie Windows). Obecność tych plików jest wyraźnym wskaźnikiem naruszenia bezpieczeństwa systemu.

Jak szkodliwy kod dostaje się do biblioteki UAParser.js

Faisal Salman, twórca projektu UAParser.js, stwierdził, że niezidentyfikowany atakujący uzyskał dostęp do jego konta w repozytorium npm i opublikował trzy szkodliwe wersje biblioteki UAParser.js. Natychmiast dodał on ostrzeżenie do zainfekowanych pakietów i skontaktował się z pomocą techniczną npm, która szybko usunęła niebezpieczne wersje. Jednakże, gdy pakiety były online, mogło je pobrać wiele komputerów.

W internecie były one dostępne przez nieco ponad cztery godziny, od 14:15 do 18:23 w dniu 22 października. Trudno powiedzieć, ile razy ich zainfekowane wersje zostały pobrane w tym czasie, ale nasze produkty kilkaset razy wykryły pliki związane z tym atakiem na całym świecie. Wieczorem programista zauważył nietypową aktywność spamową w swojej skrzynce odbiorczej, dzięki której odkrył główną przyczynę problemu.

Co zrobić, jeśli pobrano zainfekowane biblioteki

Pierwszym krokiem jest sprawdzenie komputerów pod kątem szkodliwego oprogramowania. Wszystkie składniki programu, który został wykorzystany w atakach, są wykrywane przez nasze produkty.

Następnie należy zaktualizować biblioteki do wersji z poprawkami — 0.7.30, 0.8.1 i 1.0.1. To jednak nie wystarczy: zgodnie z tym poradnikiem każdy komputer, na którym zainstalowano lub uruchomiono zainfekowaną wersję biblioteki, należy uznać za całkowicie zagrożony. W związku z tym użytkownicy i administratorzy powinni zmienić wszystkie poświadczenia, które były używane na tych komputerach.

Środowiska programistyczne lub kompilacyjne są wygodnym celem dla atakujących, którzy próbują zorganizować ataki na łańcuch dostaw. Oznacza to, że takie środowiska pilnie wymagają ochrony przed szkodliwym oprogramowaniem.

Porady