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 ovisnosti u aplikacijama koji su razvijeni pomoću internih spremišta paketa. Istraživači koji su identifikovali problem mogli su pokrenuti vaš kod na internim serverima 35 kompanija, uključujući PayPal, Microsoft, Apple, Netflix, Uber, Tesla i Shopify.

Hakanja su izvedena u sklopu programa Bug Bounty, u koordinaciji s napadnutim kompanijama, a počinitelji su već dobili 130.000 dolara bonusa za identificiranje ranjivosti.

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

Problem je u tome što menadžeri paketa poput npm, pipa i dragulja Oni pokušavaju preuzeti interne zavisnosti kompanija, čak i iz javnih spremišta. Za napad, samo definirajte imena paketa s unutarnjim ovisnostima i kreirajte vlastite pakete s istim imenima u javnim spremištima NPM-a, PyPI-a i RubyGems-a.

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

Ideja za predloženu metodu došla je 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 manifestnih datoteka koristi se u internim projektima ili prilikom implementacije proširenih funkcionalnosti. Slični tragovi pronađeni su u JavaScript kodu web usluga, kao i u projektima Node.JS, Python i Ruby mnogih kompanija.

Glavna curenja bila su povezana sa ugrađivanjem sadržaja iz datoteka package.json u javno dostupnom JavaScript kodu tokom procesa izrade, kao i uz upotrebu stvarnih elemenata puta u pozivima require (), koji se mogu koristiti za prosuđivanje imena ovisnosti.

Skeniranjem nekoliko miliona korporativnih domena otkriveno je nekoliko hiljada imena JavaScript paketa koji nisu bili u spremištu NPM-a. Nakon sastavljanja baze podataka internih naziva paketa, istraživač je odlučio provesti eksperiment za hakiranje infrastrukture kompanija koje sudjeluju u programima Bug Bounty. Rezultati su bili iznenađujuće efikasni a istraživač je mogao pokretati svoj kod na mnogim razvojnim računarima i serverima odgovornim za izgradnju ili testiranje na osnovu sistema kontinuirane integracije.

Prilikom preuzimanja zavisnosti, upravitelji paketa npm, pip i gem uglavnom su instalirali pakete iz primarnih javnih spremišta NPM, PyPI i RubyGems, koji su smatrani većim prioritetom.

Prisustvo sličnih paketa s istim imenima u spremištima privatnih kompanija ignorirano je bez pokazivanja upozorenja ili izazivanja rušenja koji bi mogli privući pažnju administratora. U PyPI-ju, na prioritet preuzimanja utjecao je broj verzije (bez obzira na spremište, preuzeta je najnovija verzija paketa). U NPM-u i RubyGems-u prioritet je ovisio samo o spremištu.

Istraživač je smjestio pakete u spremišta NPM-a, PyPI-a i RubyGems-a koji ukrštaju imena pronađenih internih zavisnosti, dodajući kod skripti koja se izvodi prije instalacije (predinstalirana u NPM-u) radi prikupljanja podataka o sistemu i slanja primljenih informacija vanjskom domaćinu.

Da bi se prenijele informacije o uspjehu hakiranja, zaobilazni zaštitni zidovi koji blokiraju vanjski promet, metoda organiziranja tajnih komunikacija putem DNS protokola. Kôd koji se izvodio razriješio je hosta u domini koja napada, pod kontrolom domene koja napada, š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šavanja koda povezano je s preuzimanjem NPM paketa, prvenstveno zbog činjenice da je bilo znatno više internih imena JavaScript modula od naziva zavisnosti Python i Ruby.

Izvor: https://medium.com/


Sadržaj članka pridržava se naših principa urednička etika. Da biste prijavili grešku, kliknite ovdje.

Budite prvi koji komentarišete

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.