Riippuvuushyökkäys sallii koodin suorittamisen PayPalilla, Microsoftilla, Applella, Netflixillä, Uberilla ja 30 muulla yrityksellä

Muutama päivä sitten julkaistiin yllättävän yksinkertainen menetelmä, joka sallii riippuvuuksien hyökkäämisen sovelluksissa jotka on kehitetty sisäisten pakettivarastojen avulla. Tutkijat, jotka tunnistivat ongelman he pystyivät suorittamaan koodisi 35 yrityksen sisäisillä palvelimilla, mukaan lukien PayPal, Microsoft, Apple, Netflix, Uber, Tesla ja Shopify.

Hakkerit tehtiin osana Bug Bounty -ohjelmia, yhdessä hyökkäyksen kohteena olevien yritysten kanssa, ja tekijät ovat jo saaneet 130.000 XNUMX dollaria bonuksia haavoittuvuuksien tunnistamisesta.

Menetelmä perustuu siihen, että monet yritykset käyttävät NPM: n, PyPI: n ja RubyGemsien tavanomaisia ​​arkistoeriippuvuuksia sisäisissä sovelluksissaan, samoin kuin sisäiset riippuvuudet, joita ei julkisesti jaeta tai ladata omista arkistoistaan.

Ongelmana on, että pakettien hallinta kuten npm, pip ja helmi He yrittävät ladata yritysten sisäisiä riippuvuuksia jopa julkisista arkistoista. Hyökkäystä varten määritä vain pakettien nimet, joilla on sisäisiä riippuvuuksia, ja luo omat paketit samoilla nimillä NPM: n, PyPI: n ja RubyGemsin julkisissa arkistoissa.

Ongelma ei ole ominaista NPM: lle, PyPI: lle ja RubyGemeille, ja se ilmenee myös muissa järjestelmissä, kuten NuGet, Maven ja Lanka.

Ajatus ehdotetusta menetelmästä tuli sen jälkeen, kun tutkija huomasi vahingossa, että GitHubiin julkaistussa julkisesti saatavilla olevassa koodissa monet yritykset eivät poista ylimääräisten riippuvuuksien mainintaa luetteloistaan käytetään sisäisissä projekteissa tai laajennettujen toimintojen toteuttamisessa. Samanlaisia ​​jälkiä on löydetty verkkopalveluiden JavaScript-koodista sekä monien yritysten Node.JS-, Python- ja Ruby-projekteista.

Tärkeimmät vuodot liittyivät sisällön upottamiseen pack.json-tiedostoista yleisesti saatavilla olevassa JavaScript-koodissa rakennusprosessin aikana sekä käytettäessä todellisia polkuelementtejä need () -puheluissa, joita voidaan käyttää riippuvuusnimien arvioimiseen.

Useiden miljoonien yritysverkkotunnusten skannaus paljasti useita tuhansia JavaScript-pakettien nimiä joita ei ollut NPM-arkistossa. Koottuaan tietokannan sisäisistä pakettien nimistä tutkija päätti tehdä kokeen Bug Bounty -ohjelmiin osallistuvien yritysten infrastruktuurin hakkeroimiseksi. Tulokset olivat yllättävän tehokkaita ja tutkija pystyi suorittamaan koodinsa monilla kehitystietokoneilla ja palvelimilla, jotka vastaavat jatkuvaan integrointiin perustuvien järjestelmien rakentamisesta tai testaamisesta.

Kun lataat riippuvuuksia, pakettien hallinta npm, pip ja gem asensivat paketit pääasiassa ensisijaisista julkisista arkistoista NPM, PyPI ja RubyGems, joita pidettiin tärkeämpinä.

Samankaltaisten samannimisten pakettien läsnäolo yksityisyritysten tietovarastoissa jätettiin huomioimatta varoittamatta tai aiheuttamatta kaatumisia mikä voisi herättää järjestelmänvalvojien huomion. PyPI: ssä lataus prioriteettiin vaikutti versionumero (arkistosta riippumatta paketin viimeisin versio ladattiin). NPM: ssä ja RubyGemsissä prioriteetti riippui vain arkistosta.

Tutkija on sijoittanut paketteja NPM-, PyPI- ja RubyGems-arkistoihin, jotka ylittävät löydettyjen sisäisten riippuvuuksien nimet, lisäämällä koodin ennen asennusta suoritettavaan komentosarjaan (esiasennettuna NPM: ään) järjestelmän tietojen keräämiseksi ja vastaanotettujen tietojen lähettämiseksi ulkoinen isäntä.

Välittää tietoa hakkeroinnin onnistumisesta ohittamalla ulkoista liikennettä estävät palomuurit, menetelmä piilokanavaviestinnän järjestämiseksi DNS-protokollan kautta. Suoritettava koodi ratkaisi hyökkäävän toimialueen isännän hyökkäävän toimialueen hallinnassa, mikä mahdollisti tietojen keräämisen onnistuneista toimista DNS-palvelimella. Tiedot isännästä, käyttäjänimestä ja nykyisestä polusta välitettiin.

75% kaikista tallennetuista kooditoteutuksista liittyi NPM-pakettien lataamiseen, lähinnä siitä, että sisäisiä JavaScript-moduulien nimiä oli huomattavasti enemmän kuin Python- ja Ruby-riippuvuusnimiä.

lähde: https://medium.com/


Ole ensimmäinen kommentti

Jätä kommentti

Sähköpostiosoitettasi ei julkaista. Pakolliset kentät on merkitty *

*

*

  1. Vastuussa tiedoista: Miguel Ángel Gatón
  2. Tietojen tarkoitus: Roskapostin hallinta, kommenttien hallinta.
  3. Laillistaminen: Suostumuksesi
  4. Tietojen välittäminen: Tietoja ei luovuteta kolmansille osapuolille muutoin kuin lain nojalla.
  5. Tietojen varastointi: Occentus Networks (EU) isännöi tietokantaa
  6. Oikeudet: Voit milloin tahansa rajoittaa, palauttaa ja poistaa tietojasi.