Atak na zależności umożliwia wykonanie kodu w firmach PayPal, Microsoft, Apple, Netflix, Uber i 30 innych

Kilka dni temu wydano zaskakująco prostą metodę, która umożliwia atakowanie zależności w aplikacjach które są tworzone przy użyciu wewnętrznych repozytoriów pakietów. Badacze, którzy zidentyfikowali problem byli w stanie uruchomić Twój kod na wewnętrznych serwerach 35 firm, w tym PayPal, Microsoft, Apple, Netflix, Uber, Tesla i Shopify.

Włamania zostały przeprowadzone w ramach programów Bug Bounty, we współpracy z zaatakowanymi firmami, a sprawcy otrzymali już 130.000 XNUMX dolarów premii za zidentyfikowanie luk w zabezpieczeniach.

Metoda opiera się na tym wiele firm korzysta ze standardowych zależności repozytoriów NPM, PyPI i RubyGems w swoich wewnętrznych aplikacjach, a także zależności wewnętrzne, które nie są publicznie rozpowszechniane ani pobierane z ich własnych repozytoriów.

Problem w tym, że menedżerowie pakietów jak npm, pip i gem próbują pobrać wewnętrzne zależności firm, nawet z publicznych repozytoriów. Do ataku wystarczy zdefiniować nazwy pakietów z wewnętrznymi zależnościami i utworzyć własne pakiety o takich samych nazwach w publicznych repozytoriach NPM, PyPI i RubyGems.

Problem nie jest specyficzny dla NPM, PyPI i RubyGems, a także objawia się w innych systemach, takich jak NuGet, Maven i Yarn.

Pomysł na proponowaną metodę zrodził się po tym, jak badacz przypadkowo zauważył, że w publicznie dostępnym kodzie zamieszczonym na GitHubie wiele firm nie usuwa wzmianek o dodatkowych zależnościach ze swoich plików manifestu wykorzystywane w projektach wewnętrznych lub przy wdrażaniu rozszerzonych funkcjonalności. Podobne ślady znaleziono w kodzie JavaScript dla usług internetowych, a także w projektach Node.JS, Python i Ruby wielu firm.

Główne przecieki dotyczyły osadzania treści z plików package.json w publicznie dostępnym kodzie JavaScript podczas procesu budowania, a także z wykorzystaniem rzeczywistych elementów ścieżki w wywołaniach require (), które mogą służyć do oceny nazw zależności.

Skanowanie kilku milionów domen korporacyjnych ujawniło kilka tysięcy nazw pakietów JavaScript których nie było w repozytorium NPM. Po sporządzeniu bazy nazw wewnętrznych pakietów badacz postanowił przeprowadzić eksperyment hakowania infrastruktury firm uczestniczących w programach Bug Bounty. Wyniki były zaskakująco skuteczne a badacz mógł uruchomić swój kod na wielu komputerach programistycznych i serwerach odpowiedzialnych za budowanie lub testowanie w oparciu o systemy ciągłej integracji.

Podczas pobierania zależności menedżerowie pakietów npm, pip i gem głównie instalowali pakiety z głównych repozytoriów publicznych NPM, PyPI i RubyGems, które uważano za mające wyższy priorytet.

Obecność podobnych pakietów o tych samych nazwach w repozytoriach prywatnych firm została zignorowana bez wyświetlania żadnych ostrzeżeń ani powodowania awarii które mogłyby przyciągnąć uwagę administratorów. W PyPI na priorytet pobierania miał wpływ numer wersji (niezależnie od repozytorium pobrano najnowszą wersję pakietu). W NPM i RubyGems priorytet był zależny tylko od repozytorium.

Badacz umieścił pakiety w repozytoriach NPM, PyPI i RubyGems, które przecinają się z nazwami znalezionych wewnętrznych zależności, dodając kod do skryptu uruchamianego przed instalacją (preinstalowany w NPM) w celu zebrania informacji o systemie i przesłania informacji odebrane do hosta zewnętrznego.

Aby przekazać informacje o powodzeniu włamania, omiń zapory sieciowe blokujące ruch zewnętrzny, metodę organizowania komunikacji w ukrytych kanałach za pośrednictwem protokołu DNS. Uruchomiony kod rozwiązał hosta w atakującej domenie pod kontrolą atakującej domeny, co umożliwiło zebranie informacji o udanych operacjach na serwerze DNS. Przekazano informacje o hoście, nazwie użytkownika i aktualnej ścieżce.

75% wszystkich zarejestrowanych wykonań kodu było związanych z pobieraniem pakietów NPM, głównie ze względu na fakt, że w JavaScript było znacznie więcej wewnętrznych nazw modułów niż nazw zależności w Pythonie i Ruby.

źródło: https://medium.com/


Treść artykułu jest zgodna z naszymi zasadami etyka redakcyjna. Aby zgłosić błąd, kliknij tutaj.

Bądź pierwszym który skomentuje

Zostaw swój komentarz

Twój adres e-mail nie zostanie opublikowany. Wymagane pola są oznaczone *

*

*

  1. Odpowiedzialny za dane: Miguel Ángel Gatón
  2. Cel danych: kontrola spamu, zarządzanie komentarzami.
  3. Legitymacja: Twoja zgoda
  4. Przekazywanie danych: Dane nie będą przekazywane stronom trzecim, z wyjątkiem obowiązku prawnego.
  5. Przechowywanie danych: baza danych hostowana przez Occentus Networks (UE)
  6. Prawa: w dowolnym momencie możesz ograniczyć, odzyskać i usunąć swoje dane.