JA_NPM

Studium przypadku powodzi spowodowanej przez NPM: „W głąb króliczej nory w poszukiwaniu herbaty”

At XygeniW ciągu ostatniego roku pracowaliśmy nad wdrożeniem kompleksowego systemu monitorującego publiczne rejestry pakietów open source w poszukiwaniu podejrzanej aktywności lub złośliwego kodu.

Ta infrastruktura pozwala nam analizować w czasie rzeczywistym wszystkie pakiety publikowane codziennie. Pozwala nam również monitorować nietypowe zachowania użytkowników.

Chociaż obecność złośliwego kodu w rejestrach pakietów jest powszechnie znanaIstnieją również inne dziwne lub nietypowe zachowania, które pozostają całkowicie niezauważone przez stałych użytkowników tych rejestrów. Nawet tym z nas, którzy uważnie je śledzą, trudno jest znaleźć przyczynę lub wyjaśnienie takiego zachowania.

Cechą charakterystyczną zespołu Xygeni jest wytrwałość w rozwiązywaniu problemów, więc postanowiliśmy się nad nimi głębiej zastanowić.

Wszystko zaczęło się od skoku statystyk

Jak wspomniałem wcześniej, w ramach naszej infrastruktury monitorujemy wiele wskaźników aktywności w publicznych rejestrach pakietów open-source.

W ostatnich dniach marca moja koleżanka z pracy Carmen podniosła alarm. Zaczęliśmy obserwować znaczne odchylenie w liczba pakietów opublikowanych w NPM. Po wstępnej analizie ustaliliśmy, że ta różnica wynikała przede wszystkim ze stosunkowo niewielkiej liczby użytkowników, których szybkość publikacji pakietów nagle wzrosła.

To skłoniło nas do przeanalizowania naszego procesu i powiązanych z nim danych na platformie. Na szczęście nasza analiza wykazała, że ​​dane wydają się być poprawne, ale było to również nieco zastanawiające!

Po dalszej analizie odkryliśmy, że pakiety te mają kilka wspólnych cech:

  • Wydawcami byli nowi użytkownicy, mający nie więcej niż jeden, dwa miesiące.
  • Pakiety miały pozornie losowe nazwy, prawdopodobnie wygenerowane za pomocą słownika. Możemy znaleźć nazwy pakietów o dziwnych nazwach, takich jak huge_mite-smiletea, erick-mangut94-sukiwir, egzotyczny_gad-appteadev or evident_tuna-appteadev. Dołączymy załącznik z przykładami zasobów, które znaleźliśmy.
  • Zawartość tych paczek była bardzo podobna, często taka sama.

W tym kontekście zauważyliśmy, że jeden z pakietów zawierał skrypt w Pythonie, prawdopodobnie przez przypadek, który najprawdopodobniej służy do automatycznego publikowania pakietów.

Npm

Rozplątywanie sieci

Działalność wydawnicza niektórych z tych wydawców w ostatnim miesiącu przebiegała zgodnie z poniższym wykresem chronologicznym:

 

atak npm

Oto pełne statystyki dotyczące tego wydarzenia, którymi możemy się podzielić:

sprawdzenie npm

Nie znaleźliśmy żadnych istotnych informacji w indywidualnej analizie niektórych pakietów powiązanych z tymi użytkownikami. To skłoniło nas do przeanalizowania ogólnego obrazu wszystkich z nich, poszukując wzorców, które mogłyby stanowić wskazówkę co do tego sukcesu.

W końcu mamy do przeanalizowania całkiem sporą garść pakietów:

atak npm 2

Oto najważniejsze punkty, które możemy wyróżnić na podstawie analizy:

  • Wiele pakietów NPM jest ze sobą powiązanych. Niektóre z nich są odwoływane jako zależności innych.
  • Choć to dziwne pakiety i prawdopodobnie nikt nie wie o ich istnieniu, niektóre z nich są pobierane wielokrotnie co tydzień. Trudno uwierzyć, że zwykły użytkownik może chcieć pobrać pakiety takie jak… 0mc03esisd. 
  • Niektóre z nich mają powiązane repozytoria. Czasami właściciele tych repozytoriów wydają się być kontami fikcyjnymi, podobnymi do tych na npm.

Uwaga: Użytkownicy przesyłają dodatkowe pakiety falami, więc dostarczone dane mogą się nieznacznie różnić.

atak npm 2

To przykład jednego z powiązanych repozytoriów. Zawiera kod niektórych opublikowanych pakietów. Znajdują się tam również inne pliki, takie jak herbata.yaml plik.

Spotkanie z aktorem(ami)

Trudno ustalić, czy jest to dzieło jednego autora, czy wielu współpracowników. Mamy jednak pewne dowody, które pozwalają zawęzić pochodzenie tej działalności:

  • Język: Niektóre komentarze w kodzie są w języku indonezyjskim.
atak npm 3
  • Lokalizacja: Niektórzy właściciele powiązanych repozytoriów podają swoją lokalizację w Indonezji.
  • Lokalizacja, którą możemy zidentyfikować za pomocą metadanych aktywności w serwisie GitHub, również wskazuje na Indonezję.
NPM_JA

Herbata o piątej

Biorąc pod uwagę, że Indonezja była kolonią brytyjską, idealnie pasowałoby tu miejsce na herbatę. Jednak w tym przypadku jest to dość specyficzny rodzaj herbaty.

Czy pamiętasz herbata.yaml Pliki, które widzieliśmy na początku? Wtedy nie pokazywaliśmy ich zawartości, ale wyglądały tak:

atak npm 4

Pliki te wydają się być powiązane z Protokół herbaty. Ale co to właściwie jest? Dotarliśmy https://tea.xyz/blog/250k-grant-for-open-source-developers, który mówi o celu:

Tea wstrząsa światem cyfrowym, rozwiązując długotrwały problem niewystarczającego wynagrodzenia dla programistów open source. Rozwiązanie tego problemu jest pilniejsze niż kiedykolwiek, dlatego zdecydowaliśmy się przeznaczyć 250 tys. dolarów na granty przed uruchomieniem protokołu. Ten wstępny etap ma na celu wsparcie opiekunów projektów open source, którzy mają istotny wpływ na ekosystem oprogramowania open source i mają rangę teaRank powyżej 30 przed testnetem Tea Protocol Incentivized Testnet.

Zgodnie z dokumentacją protokołu herbacianego: 

„Aby projekt mógł zostać zarejestrowany w protokole tea, wymagany jest plik tea.yaml, który stanowi statut projektu i określa liczbę jego uczestników oraz liczbę głosów wymaganych do wykonania określonych działań”.

 

Po uzyskaniu dostępu do sieci herbacianej próbowaliśmy znaleźć jeden z pakietów, który naszym zdaniem zawyża swoją reputację. Znaleźliśmy go:

To zdaje się wyjaśniać, o co tu chodzi: niektórzy użytkownicy podbijają popularność swoich projektów open source, fikcyjnie podsycając ją, aby przejąć teaRank i uzyskać korzyści oferowane przez stowarzyszenie herbaciane. W końcu pieniądze, obok seksu, są najstarszą siłą napędową. 

Wnioski i końcowe przemyślenia

Chociaż w tych pakietach NPM nie znaleziono śladów złośliwego kodu i prawdopodobnie nie były one przeznaczone do wykorzystania przez kogokolwiek, mogą one potencjalnie naruszać kilka Warunków Korzystania z Usług (TOS) NPM, GitHub lub stowarzyszenia Tea Association. Wykracza to jednak poza zakres naszej działalności (zostali jednak o tym powiadomieni i podejmą działania, które uznają za stosowne). Nadużycia związane z tymi platformami w jakiś sposób wpłyną na nas i nasze organizacje.

Jasne jest, że każdy pozornie niegroźny pakiet typu open-source może zawierać zachowania trudne do zrozumienia bez pełnych informacji kontekstowych.

Jako programista, ręczne kontrolowanie wszystkich pakietów open source używanych w aplikacjach, które tworzymy i utrzymujemy, z zachowaniem pewnego poziomu bezpieczeństwa, jest dla mnie wyzwaniem. Bez narzędzia automatyzującego tę kontrolę, zadanie to mogłoby pochłonąć niezliczone godziny pracy naszych zespołów.

Zawsze można odwrócić wzrok i uwierzyć, że światy open source to bezpieczne miejsca. Na szczęście uważam, że takie podejście nie jest dziś zbyt powszechne; ten przypadek był praktycznie niegroźny, ale ostatnio mieliśmy do czynienia ze znacznie poważniejszym incydentem z… Tylne drzwi XZi nie było tylko jeden.

Jeśli dotarłeś do tego miejsca, mam nadzieję, że spodobały Ci się wszystkie zawiłości tego ciekawego wydarzenia. Nie zapomnij poświęcić kilku minut na omówienie tego, co Xygeni może wnieść do bezpieczeństwa Twojej organizacji.

Załącznik: Lista powiązanych zasobów, które należy uwzględnić w ostatecznym artykule

Bardziej odpowiedni użytkownicy NPM na podstawie liczby opublikowanych pakietów: vndra, wanzaty, artknight404, seblakkuah, Mikrositer, kellyman17

Oto mała próbka powiązanych z nimi pakietów: mikrositer, Cryndex, arts-dao, seblakkuah, vndrabnb, vndrave, depfif, depsik, depeit, depnin, Dopon, kellymanteasproject.

Niektóre z powiązanych repozytoriów GitHub zawierających pliki tea.yml:

sca-tools-oprogramowanie-narzędzia-analizy-kompozycji
Określ priorytety, rozwiąż problemy i zabezpiecz zagrożenia związane z oprogramowaniem
Załóż darmowe konto.
Nie wymagamy karty kredytowej.

Zabezpiecz rozwój i dostarczanie oprogramowania

z pakietem produktów Xygeni