Napad zavisnosti omogućava izvršavanje koda u PayPalu, Microsoftu, Appleu, Netflixu, Uberu i još 30 kompanija

Prije nekoliko dana Objavljena je iznenađujuće jednostavna metoda koja omogućava napad na zavisnosti u aplikacijama koji su razvijeni korištenjem internih spremišta paketa. Istraživači koji su identifikovali problem jesu li mogli pokrenuti svoj kod na internim serverima 35 kompanija, uključujući PayPal, Microsoft, Apple, Netflix, Uber, Tesla i Shopify.

Hakovi su izvedeni u okviru Bug Bounty programa, u koordinaciji sa napadnutim kompanijama, a autorima je već obezbeđeno 130.000 dolara bonusa za identifikaciju ranjivosti.

Metoda se zasniva na činjenici da mnoge kompanije koriste zavisnosti od standardnih NPM, PyPI i RubyGems spremišta u svojim internim aplikacijama, kao i interne zavisnosti koje se ne distribuiraju javno ili preuzimaju iz vlastitih spremišta.

Problem je što menadžeri paketa kao npm, pip i gem Pokušavaju preuzeti interne zavisnosti kompanija, čak i iz javnih spremišta. Za napad, samo definišite imena paketa sa internim zavisnostima i kreirajte sopstvene pakete sa istim imenima u javnim repozitorijumima NPM, PyPI i RubyGems.

Problem nije specifičan za NPM, PyPI i RubyGems, a manifestuje se i u drugim sistemima kao što su NuGet, Maven i Yarn.

Ideja o predloženoj metodi pojavila se nakon što je istraživač slučajno primijetio da u javno dostupnom kodu objavljenom na GitHub-u, mnoge kompanije ne uklanjaju spominjanje dodatnih zavisnosti iz svojih datoteka manifesta koristi se u internim projektima ili prilikom implementacije proširenih funkcionalnosti. Slični tragovi pronađeni su u JavaScript kodu web servisa, kao iu Node.JS, Python i Ruby projektima mnogih kompanija.

Glavna curenja su se odnosila na ugrađivanje sadržaja package.json fajlova u javno dostupnom JavaScript kodu tokom procesa izgradnje, kao i uz korišćenje stvarnih elemenata putanje u pozivima require(), koji se mogu koristiti za procenu imena zavisnosti.

Skeniranje nekoliko miliona korporativnih domena otkrilo je nekoliko hiljada imena JavaScript paketa koji nisu bili u NPM repozitoriju. Nakon što je prikupio bazu podataka internih naziva paketa, istraživač je odlučio provesti eksperiment kako bi hakovao infrastrukturu kompanija koje učestvuju u Bug Bounty programima. Rezultati su bili iznenađujuće efikasni. a istraživač je bio u mogućnosti da pokrene svoj kod na mnogim razvojnim računarima i serverima odgovornim za izgradnju ili testiranje zasnovano na sistemima kontinuirane integracije.

Prilikom preuzimanja zavisnosti, menadžeri paketa npm, pip i gem prvenstveno su instalirali pakete iz primarnih javnih spremišta NPM, PyPI i RubyGems, koji su se smatrali višim prioritetom.

Prisustvo sličnih paketa sa istim imenima u privatnim repozitorijumima kompanije ignorisano je bez prikazivanja ikakvih upozorenja ili izazivanja padova to bi moglo privući pažnju administratora. U PyPI, prioritet preuzimanja je bio pod uticajem broja verzije (bez obzira na spremište, preuzeta je najnovija verzija paketa). U NPM-u i RubyGemsu, prioritet je zavisio samo od spremišta.

Istraživač je smjestio pakete u NPM, PyPI i RubyGems spremišta koja se ukrštaju s imenima pronađenih internih ovisnosti, dodajući kod skripti koja se izvodi prije instalacije (preinstaliran u NPM) za prikupljanje informacija o sistemu i slanje primljenih informacija vanjskom hostu.

Da biste prenijeli informacije o uspješnosti hakovanja, zaobiđite vatrozide koji blokiraju vanjski promet, metod organiziranja tajnih komunikacija kanala preko DNS protokola. Izvršeni kod je razriješio host u napadačkom domenu pod kontrolom napadačkog domena, što je omogućilo prikupljanje informacija o uspješnim operacijama na DNS serveru. Proslijeđene su informacije o hostu, korisničkom imenu i trenutnoj putanji.

75% svih zabilježenih izvršenja koda bilo je povezano sa preuzimanjima NPM paketa, prvenstveno zbog činjenice da je bilo znatno više internih imena JavaScript modula nego imena zavisnosti u Python-u i Ruby-u.

Izvor: https://medium.com/


Ostavite komentar

Vaša e-mail adresa neće biti objavljena. Obavezna polja su označena sa *

*

*

  1. Za podatke odgovoran: Miguel Ángel Gatón
  2. Svrha podataka: Kontrola neželjene pošte, upravljanje komentarima.
  3. Legitimacija: Vaš pristanak
  4. Komunikacija podataka: Podaci se neće dostavljati trećim stranama, osim po zakonskoj obavezi.
  5. Pohrana podataka: Baza podataka koju hostuje Occentus Networks (EU)
  6. Prava: U bilo kojem trenutku možete ograničiti, oporaviti i izbrisati svoje podatke.