Pinapayagan ng isang pag-atake sa dependency ang pagpapatupad ng code sa PayPal, Microsoft, Apple, Netflix, Uber at 30 iba pang mga kumpanya

Ilang araw na ang nakakalipas isang nakakagulat na simpleng pamamaraan ay inilabas na nagpapahintulot sa pag-atake ng mga dependency sa mga application na binuo gamit ang panloob na mga repository ng package. Ang mga mananaliksik na nakilala ang problema nagawa nilang patakbuhin ang iyong code sa mga panloob na server ng 35 mga kumpanya, kabilang ang PayPal, Microsoft, Apple, Netflix, Uber, Tesla, at Shopify.

Ang mga pag-hack ay isinasagawa bilang bahagi ng mga programa ng Bug Bounty, sa koordinasyon sa mga inaatake na kumpanya, at ang mga salarin ay nakatanggap na ng $ 130.000 na mga bonus para sa pagkilala sa mga kahinaan.

Ang pamamaraan ay batay sa katotohanan na maraming mga kumpanya ang gumagamit ng karaniwang mga dependency sa pag-iimbak ng NPM, PyPI at RubyGems sa kanilang panloob na mga aplikasyon, pati na rin ang mga panloob na pagtitiwala na hindi pampublikong ipinamamahagi o na-download mula sa kanilang sariling mga repository.

Ang problema ay ang mga manager ng package tulad ng npm, pip at gem sinusubukan nilang i-download ang panloob na mga dependency ng mga kumpanya, kahit na mula sa mga pampublikong repository. Para sa isang atake, tukuyin lamang ang mga pangalan ng mga pakete na may panloob na mga dependency at lumikha ng iyong sariling mga pakete na may parehong mga pangalan sa mga pampublikong repository ng NPM, PyPI at RubyGems.

Ang problema ay hindi tukoy sa NPM, PyPI, at RubyGems, at nagpapakita rin ito ng sarili sa iba pang mga system tulad ng NuGet, Maven, at Yarn.

Ang ideya para sa ipinanukalang pamamaraan ay dumating matapos aksidenteng napansin ng isang mananaliksik na sa magagamit na code na publiko na nai-post sa GitHub, maraming mga kumpanya ang hindi nag-aalis ng pagbanggit ng mga karagdagang dependency mula sa kanilang mga manifest file ginamit sa panloob na mga proyekto o kapag nagpapatupad ng pinalawig na pagpapaandar. Ang mga katulad na bakas ay natagpuan sa JavaScript code para sa mga serbisyo sa web, pati na rin sa maraming mga kumpanya na Node.JS, Python, at Ruby na mga proyekto.

Ang mga pangunahing paglabas ay nauugnay sa pag-embed ng nilalaman mula sa mga file ng package.json sa magagamit na pampublikong code ng JavaScript sa panahon ng proseso ng pagbuo, pati na rin sa paggamit ng mga aktwal na elemento ng path na nangangailangan ng () mga tawag, na maaaring magamit upang hatulan ang mga pangalan ng pagpapakandili.

Ang pag-scan ng ilang milyong mga domain ng korporasyon ay nagsiwalat ng libu-libong mga pangalan ng package ng JavaScript na wala sa repository ng NPM. Ang pagkakaroon ng naipong isang database ng mga panloob na pangalan ng package, nagpasya ang mananaliksik na magsagawa ng isang eksperimento upang i-hack ang imprastraktura ng mga kumpanya na lumahok sa mga programa ng Bug Bounty. Ang mga resulta ay nakakagulat na epektibo at pinatakbo ng mananaliksik ang kanyang code sa maraming mga computer sa pag-unlad at mga server na responsable para sa pagbuo o pagsubok batay sa tuluy-tuloy na mga system ng pagsasama.

Kapag nagda-download ng mga dependency, ang mga tagapamahala ng package na npm, pip, at gem ay higit sa lahat na naka-install na mga pakete mula sa pangunahing mga repositoryang pampubliko na NPM, PyPI, at RubyGems, na itinuring na mas mataas ang priyoridad.

Ang pagkakaroon ng mga katulad na mga pakete na may parehong mga pangalan sa mga repository ng mga pribadong kumpanya ay hindi pinansin nang hindi nagpapakita ng anumang babala o nagdulot ng mga pag-crash na maaaring makaakit ng pansin ng mga tagapangasiwa. Sa PyPI, ang priyoridad sa pag-download ay naiimpluwensyahan ng numero ng bersyon (anuman ang imbakan, ang pinakabagong bersyon ng package ay na-download). Sa NPM at RubyGems, ang priyoridad ay nakasalalay lamang sa repository.

Ang mananaliksik ay naglagay ng mga pakete sa mga repositoryang NPM, PyPI at RubyGems na tumatawid sa mga pangalan ng nahanap na panloob na mga dependency, pagdaragdag ng code sa script na tumatakbo bago i-install (paunang naka-install sa NPM) upang makalikom ng impormasyon tungkol sa system at maipadala ang impormasyong natanggap sa ang panlabas na host.

Upang maiparating ang impormasyon sa tagumpay ng pag-hack, i-bypass ang mga firewall na humahadlang sa panlabas na trapiko, ang paraan ng pag-aayos ng mga komunikasyon ng tagong channel sa DNS protocol. Ang code na tumatakbo ay nalutas ang host sa umaatak na domain sa ilalim ng kontrol ng umaatak na domain, na naging posible upang mangolekta ng impormasyon tungkol sa matagumpay na pagpapatakbo sa DNS server. Ang impormasyon tungkol sa host, username at kasalukuyang path ay naipasa.

75% ng lahat ng naitala na pagpapatupad ng code ay naiugnay sa mga pag-download ng package ng NPM, pangunahin dahil sa ang katunayan na mayroong higit na higit pang mga panloob na pangalan ng module sa JavaScript kaysa sa mga pangalan ng dependency sa Python at Ruby.

Fuente: https://medium.com/


Iwanan ang iyong puna

Ang iyong email address ay hindi nai-publish. Mga kinakailangang patlang ay minarkahan ng *

*

*

  1. Responsable para sa data: Miguel Ángel Gatón
  2. Layunin ng data: Kontrolin ang SPAM, pamamahala ng komento.
  3. Legitimation: Ang iyong pahintulot
  4. Komunikasyon ng data: Ang data ay hindi maiparating sa mga third party maliban sa ligal na obligasyon.
  5. Imbakan ng data: Ang database na naka-host ng Occentus Networks (EU)
  6. Mga Karapatan: Sa anumang oras maaari mong limitahan, mabawi at tanggalin ang iyong impormasyon.