Opublikowano analizator, który zidentyfikował 200 szkodliwych pakietów w NPM i PyPI

OpenSSF (Open Source Security Foundation), utworzona przez Linux Foundation i mająca na celu poprawę bezpieczeństwa oprogramowania open source, wprowadziła otwarty projekt Package Analysis, który rozwija system analizy obecności złośliwego kodu w pakietach. Kod projektu napisany jest w Go i rozpowszechniany na licencji Apache 2.0. Wstępne skanowanie repozytoriów NPM i PyPI przy użyciu proponowanych narzędzi pozwoliło nam zidentyfikować ponad 200 niewykrytych wcześniej szkodliwych pakietów.

Większość zidentyfikowanych problematycznych pakietów manipuluje przecięciem nazw z wewnętrznymi, niepublicznymi zależnościami projektów (atak polegający na pomyleniu zależności) lub wykorzystuje metody typosquattingu (przypisywanie nazw podobnych do nazw popularnych bibliotek), a także wywołuje skrypty uzyskujące dostęp do hostów zewnętrznych podczas proces instalacji. Według twórców Package Analysis większość zidentyfikowanych problematycznych pakietów została najprawdopodobniej stworzona przez badaczy bezpieczeństwa uczestniczących w programach bug bounty, ponieważ przesyłane dane ograniczają się do nazwy użytkownika i systemu, a działania są wykonywane jawnie, bez prób ukryć swoje zachowanie.

Pakiety zawierające złośliwą aktywność obejmują:

  • Pakiet PyPI discordcmd, który rejestruje wysyłanie nietypowych żądań do raw.githubusercontent.com, Discord API i ipinfo.io. Określony pakiet pobrał kod backdoora z GitHuba i zainstalował go w katalogu klienta Discord Windows, po czym rozpoczął proces wyszukiwania tokenów Discord w systemie plików i wysyłania ich na zewnętrzny serwer Discord kontrolowany przez atakujących.
  • Pakiet Colorss NPM próbował również wysłać tokeny z konta Discord na serwer zewnętrzny.
  • Pakiet NPM @roku-web-core/ajax - podczas procesu instalacji wysłał dane o systemie i uruchomił procedurę obsługi (odwrotną powłokę), która akceptowała połączenia zewnętrzne i uruchamiała polecenia.
  • Pakiet PyPI secrevthree - uruchamia odwrotną powłokę podczas importowania określonego modułu.
  • Pakiet NPM random-vouchercode-generator - po zaimportowaniu biblioteki wysłał żądanie do zewnętrznego serwera, który zwrócił polecenie i czas, w którym należy je uruchomić.

Praca analizy pakietów sprowadza się do analizowania pakietów kodu w kodzie źródłowym w celu nawiązywania połączeń sieciowych, uzyskiwania dostępu do plików i uruchamiania poleceń. Dodatkowo monitorowane są zmiany stanu pakietów w celu wykrycia dodania szkodliwych wstawek w jednej z wersji początkowo nieszkodliwego oprogramowania. Do monitorowania pojawiania się nowych pakietów w repozytoriach oraz wprowadzania zmian we wcześniej opublikowanych pakietach wykorzystywany jest pakiet Package Feeds, który ujednolica pracę z repozytoriami NPM, PyPI, Go, RubyGems, Packagist, NuGet i Crate.

Analiza pakietów obejmuje trzy podstawowe komponenty, które można stosować zarówno w połączeniu, jak i osobno:

  • Harmonogram uruchamiania analizy pakietów na podstawie danych z Package Feeds.
  • Analizator, który bezpośrednio bada paczkę i ocenia jej zachowanie przy użyciu technik analizy statycznej i dynamicznego śledzenia. Test przeprowadza się w izolowanym środowisku.
  • Moduł ładujący, który umieszcza wyniki testów w magazynie BigQuery.

Źródło: opennet.ru

Dodaj komentarz