Fundacja OpenSSF (Open Source Security Foundation), utworzona przez organizację Linux Foundation i mająca na celu poprawę bezpieczeństwa oprogramowania open source, zaprezentowała otwarty projekt Package Analysis, rozwijający system analizy obecności złośliwego kodu w pakietach. Kod projektu napisany jest w języku Go i udostępniony na licencji Apache 2.0. Wstępne skanowanie repozytoriów NPM i PyPI za pomocą zaproponowanych narzędzi pozwoliło wykryć ponad 200 wcześniej niezauważonych złośliwych pakietów.
Większość zidentyfikowanych problematycznych pakietów manipulowało nazwami, wprowadzając niepubliczne zależności projektów (atak dependency confusion) lub używało technik typosquattingu (nadając nazwy podobne do popularnych bibliotek), a także uruchamiało w trakcie instalacji skrypty, które łączyły się z zewnętrznymi hostami. Według deweloperów Package Analysis, większość zidentyfikowanych problematycznych pakietów została prawdopodobnie stworzona przez badaczy bezpieczeństwa uczestniczących w programach wynagradzania za wykrywanie luk w zabezpieczeniach (bug bounty), ponieważ przekazywane dane ograniczają się do nazwy użytkownika i systemu, a działania są wykonywane jawnie, bez próby ukrycia swojego zachowania.
W pakietach wykazujących złośliwą aktywność wyróżniają się:
- Pakiet PyPI discordcmd, w którym zarejestrowano nietypowe żądania do raw.githubusercontent.com, Discord API oraz ipinfo.io. Wskazany pakiet pobierał kod backdoora z GitHub i instalował go w katalogu Windows klienta Discord, po czym uruchamiał proces poszukiwania tokenów Discord w systemie plików i przesyłał je na zewnętrzny serwer Discord, kontrolowany przez atakujących.
- Pakiet NPM colorsss, który również próbował przesyłać na zewnątrz serwer tokeny konta Discord.
- Pakiet NPM @roku-web-core/ajax — w trakcie instalacji przesyłał dane o systemie i uruchamiał handler (reverse shell), przyjmujący połączenia z zewnątrz i wykonujący polecenia.
- Pakiet PyPI secrevthree — uruchamiał reverse shell przy imporcie określonego modułu.
- Pakiet NPM random-vouchercode-generator — po zaimportowaniu biblioteki przesyłał żądanie do zewnętrznego serwera, który zwracał polecenie oraz czas jego uruchomienia.
Praca Package Analysis polega na analizie kodów źródłowych pakietów do nawiązywania połączeń sieciowych, dostępu do plików i uruchamiania poleceń. Dodatkowo śledzone jest zmienianie stanu pakietów w celu określenia dodawania złośliwych elementów do wydania pierwotnie nieszkodliwego oprogramowania. Do monitorowania pojawiania się nowych pakietów w repozytoriach i wprowadzania zmian w wcześniej umieszczonych pakietach stosowane są narzędzia Package Feeds, które ujednolica pracę z repozytoriami NPM, PyPI, Go, RubyGems, Packagist, NuGet i Crate.
Package Analysis obejmuje trzy podstawowe komponenty, które mogą być używane zarówno razem, jak i osobno:
- Harmonogram uruchamiania prac analizy pakietów na podstawie danych z Package Feeds.
- Analizator, który bezpośrednio sprawdza pakiet i ocenia jego zachowanie za pomocą metod analizy statycznej i dynamicznego śledzenia. Sprawdzenie odbywa się w izolowanym środowisku.
- Loader, który umieszcza wyniki sprawdzenia w magazynie BigQuery.
Źródło: opennet.ru
