-15% na nową książkę sekuraka: Wprowadzenie do bezpieczeństwa IT. Przy zamówieniu podaj kod: 10000

Zaskakująca metoda infekcji wielkich (i mniejszych) firm. Wykonali swój kod w systemach: Apple, Netflixa, Shopify, Ubera, PayPala, Microsoftu… końca nie widać!

09 lutego 2021, 19:49 | Aktualności | komentarzy 8

Dla tych, którzy lubią czytać w oryginale – opis całej akcji tutaj.

Dla tych, którzy mają mało czasu – badacze zuploadowali swoje pakiety o odpowiednich nazwach do popularnych repozytoriów (typu npm). W środku rzeczywiście zawarli własny kod, który wykonał się w infrastrukturach firm z tytułu. Wynik działania kodu wysłali do siebie za pomocą odpowiednio skontruowanych zapytań DNS (byli więc w stanie skomunikować się nawet z bardzo głęboko ofajerłolowanych-sieci-dużych-korporacji ™).

Dla tych, którzy mają nieco więcej czasu: badacze nazwali swoją technikę (czy klasę podatności – bądź problemu): dependency confusion. Nie chodzi tutaj o uploadowanie pakietów, które mają podobną nazwę jak te oryginalne i liczenie na pomyłkę developerów. Zobaczmy na przykład na tak zdefiniowane zależności:

Niby wszystko dobrze? No prawie, bo część nazw nie występuje w publicznych repozytoriach. Trick polegałby na tym, żeby zuploadować pakiety o takich właśnie nazwach i liczyć, że jakieś wewnętrzne systemy korporacji-celu je pobiorą. Osiągamy wtedy wykonanie naszego kodu.

Ale… skąd wziąć nazwy pakietów? (przecież są one zdefiniowane w wewnętrznych configach). Okazało się że wystarczy trochę pogrzebać w publicznych plikach .js:

No dobra, samo „grzebanie” nie wystarczyło, trzeba było zapuścić całą armię skryptów realizujących automatyczny recon celów, co badacze opisali tak:

we were able to automatically scan millions of domains belonging to the targeted companies and extract hundreds of additional javascript

Badacze odpalili swój pomysł dla trzech technologii: JavaScript (npm), Pythona oraz Ruby. Efekty?

Po kilku godzinach RCE w systemach Shopify. Bum – nagroda $30 000:

Shopify, whose build system automatically installed a Ruby gem named shopify-cloud only a few hours after I had uploaded it, and then tried to run the code inside it. The Shopify team had a fix ready within a day, and awarded a $30,000 bug bounty for finding the issue.

Apple. Bum – $30 000:

Another $30,000 reward came from Apple, after the code in a Node package which I uploaded to npm in August of 2020 was executed on multiple machines inside its network. The affected projects appeared to be related to Apple’s authentication system, externally known as Apple ID.

PayPal. Bum – wiadomoco:

Oh, and the PayPal names that started it all? Those worked too, resulting in yet another $30k bounty. Actually, the majority of awarded bug bounties were set at the maximum amount allowed by each program’s policy, and sometimes even higher.

Microsoft. Bum+

successfully attacking Microsoft’s own cloud-based Office 365, with the report resulting in Azure’s highest possible reward of $40,000.

Na koniec pytanie – czy wy też ślepo wierzycie publicznym repozytoriom? A może da się tam niepostrzeżenie podrzucić jakiś złośliwy kod? Stawiamy na to, że jeszcze w bardzo wielu miejscach się da…

–Michał Sajdak (@sajdoor)

Spodobał Ci się wpis? Podziel się nim ze znajomymi:



Komentarze

  1. Niezły sposób na zarobienie pieniędzy.

    Odpowiedz
  2. dikamilo

    Pewnie podobna podatność można by zrobić z obrazami docker’a tylko trzeba by tutaj zgadnąć nazwy obrazów.

    Odpowiedz
  3. wikiyu

    Nie tyle „wierzycie w …”, co problemem też może być mnogość źródeł. Gdy mamy w swoim menedżerze więcej niż jedno źródło -> firmowe z pakietami wewnętrznymi + globalne/publiczne.
    Na codzień korzystając z pakietu FIRMA_pakiet1 w naszym wewnętrznym repo, jak ktoś podgra pakiet o tej samej nazwie do globalnego to … jeden menedżer pakietów pokaże info o konflikcie, a inny zassa z tego który uważa za ważniejszy.

    Odpowiedz
  4. zakius

    czy lock nie powinien tego ogarnąć? przynajmniej póki nie aktualizujemy niczego
    a jak aktualizujemy to można zawsze zrobić walidator do locka sprawdzający, czy aby na pewno nasze własne paczki idą z naszych własnych repozytoriów
    albo ustawić we wszystkich środowiskach źródło właśnie na swoje repo i tyle, nasze repo jest pośrednikiem i pobiera z zewnątrz tylko jeśli czegoś nie ma, a nasze paczki przecież ma…

    Odpowiedz
  5. Andrzej

    Kiedyś ktoś zainfekuje aktualizacje Windows. Robal będzie ukryty do godziny zero. Kiedy wyjdzie na jaw, we wszystkich komputerach naraz, zacznie się masakra.

    Odpowiedz
    • Jac

      Przecież Microsoft sam siebie infekuje , mało to ci razy robił bussines stop swoimi aktualizacjami ? Do nich nie potrzeba włamu .

      Odpowiedz
    • nazwa

      Jak, qwa na raz?!?!? Na moim debianie też? Weź rozejrzyj się…
      Nie wszystkie muchy jedzą gunwo.

      Odpowiedz
  6. AJ

    No niestety da się podrzucić kod, kiedyś złapałem w ten sposób minera, nie pamiętam już nazwy, co ciekawe był to miner, który zazwyczaj atakuje kontenery dockera na serwerach, ja go złapałem na localu na szczęście, to zorientowałem się bardzo szybko, głównie po dźwięku :) Komputer zaczął mi się grzać niemiłosiernie i zauważyłem dziwne procesy w top, na całe szczęście dało się go łatwo usunąć, gorzej jakby to się stało na serwerze, wtedy bym się pewnie nie zorientował tak szybko o co chodzi.

    Odpowiedz

Odpowiedz na zakius