Priklausomybės ataka leidžia vykdyti kodus „PayPal“, „Microsoft“, „Apple“, „Netflix“, „Uber“ ir 30 kitų kompanijų

Prieš kelias dienas buvo išleistas stebėtinai paprastas metodas, leidžiantis atakuoti programų priklausomybes kurie kuriami naudojant vidines paketų saugyklas. Tyrėjai, kurie nustatė problemą jie galėjo paleisti jūsų kodą 35 bendrovių, įskaitant „PayPal“, „Microsoft“, „Apple“, „Netflix“, „Uber“, „Tesla“ ir „Shopify“, vidiniuose serveriuose.

Įsilaužimai buvo vykdomi vykdant „Bug Bounty“ programas, bendradarbiaujant su užpultomis įmonėmis, o nusikaltėliai jau gavo 130.000 XNUMX USD premijas už pažeidžiamumų nustatymą.

Metodas pagrįstas tuo, kad daugelis kompanijų savo vidinėse programose naudoja standartines NPM, PyPI ir RubyGems saugyklų priklausomybes, taip pat vidinės priklausomybės, kurios nėra viešai platinamos ar atsisiunčiamos iš jų saugyklų.

Problema ta, kad paketų valdytojai kaip npm, pip and gem Jie bando atsisiųsti įmonių vidines priklausomybes net iš viešųjų saugyklų. Dėl atakos tiesiog apibrėžkite paketų su vidinėmis priklausomybėmis pavadinimus ir sukurkite savo paketus su tais pačiais pavadinimais valstybinėse NPM, PyPI ir „RubyGems“ saugyklose.

Problema nėra būdinga NPM, PyPI ir RubyGems, be to, ji pasireiškia ir kitose sistemose, tokiose kaip „NuGet“, „Maven“ ir „Yarn“.

Siūlomo metodo idėja kilo po to, kai tyrėjas netyčia pastebėjo, kad viešai prieinamame kode, paskelbtame „GitHub“, daugelis bendrovių nepašalina papildomų priklausomybių paminėjimo iš savo manifestų bylų naudojamas vidaus projektuose arba įgyvendinant išplėstines funkcijas. Panašūs pėdsakai buvo rasti „JavaScript“ internetinių paslaugų kode, taip pat daugelio įmonių „Node.JS“, „Python“ ir „Ruby“ projektuose.

Pagrindiniai nutekėjimai buvo susiję su turinio įdėjimu iš „pack.json“ failų viešai prieinamame „JavaScript“ kode kūrimo proceso metu, taip pat naudojant faktinius kelio elementus reikalaujančiuose () skambučiuose, kurie gali būti naudojami vertinant priklausomybės pavadinimus.

Kelių milijonų įmonių domenų nuskaitymas atskleidė kelis tūkstančius „JavaScript“ paketų pavadinimų kurių nebuvo NPM saugykloje. Sukūręs vidinių paketų pavadinimų duomenų bazę, mokslininkas nusprendė atlikti eksperimentą, kad nulaužtų „Bug Bounty“ programose dalyvaujančių įmonių infrastruktūrą. Rezultatai buvo stebėtinai veiksmingi ir tyrėjas sugebėjo paleisti savo kodą daugelyje kūrimo kompiuterių ir serverių, atsakingų už pastovios integracijos sistemų kūrimą ar testavimą.

Atsisiųsdami priklausomybes, paketų valdytojai „npm“, „pip“ ir „gem“ daugiausia įdiegė paketus iš pirminių viešųjų saugyklų „NPM“, „PyPI“ ir „RubyGems“, kurie buvo laikomi didesniu prioritetu.

Panašių paketų su tais pačiais pavadinimais buvimas privačių įmonių saugyklose buvo ignoruojamas neparodžius jokio įspėjimo ir nesukėlus avarijų tai galėtų atkreipti administratorių dėmesį. „PyPI“ atsisiuntimo prioritetui įtakos turėjo versijos numeris (neatsižvelgiant į saugyklą, atsisiųsta naujausia paketo versija). NPM ir „RubyGems“ pirmenybė priklausė tik nuo saugyklos.

Tyrėjas įdėjo paketus į NPM, PyPI ir RubyGems saugyklas, kertančius rastų vidinių priklausomybių pavadinimus, prie scenarijaus, kuris veikia prieš diegiant (iš anksto įdiegtas NPM), pridėjo kodą, kad surinktų informaciją apie sistemą ir išsiųstų gautą informaciją išorinis kompiuteris.

Norėdami perduoti informaciją apie įsilaužimo sėkmę, aplenkite išorinį srautą blokuojančias užkardas, slapto kanalo ryšio per DNS protokolą organizavimo metodą. Vykdomas kodas išsprendė atakuojančio domeno prieglobą prižiūrint puolančiam domenui, o tai leido rinkti informaciją apie sėkmingas operacijas DNS serveryje. Informacija apie pagrindinį kompiuterį, vartotojo vardą ir dabartinį kelią buvo perduota.

75% visų įrašytų kodų vykdymų buvo susieti su NPM paketų atsisiuntimais, visų pirma dėl to, kad vidinių „JavaScript“ modulių pavadinimų buvo žymiai daugiau nei „Python“ ir „Ruby“ priklausomybės pavadinimų.

Fuente: https://medium.com/


Palikite komentarą

Jūsų elektroninio pašto adresas nebus skelbiamas. Privalomi laukai yra pažymėti *

*

*

  1. Atsakingas už duomenis: Miguel Ángel Gatón
  2. Duomenų paskirtis: kontroliuoti šlamštą, komentarų valdymą.
  3. Įteisinimas: jūsų sutikimas
  4. Duomenų perdavimas: Duomenys nebus perduoti trečiosioms šalims, išskyrus teisinius įsipareigojimus.
  5. Duomenų saugojimas: „Occentus Networks“ (ES) talpinama duomenų bazė
  6. Teisės: bet kuriuo metu galite apriboti, atkurti ir ištrinti savo informaciją.