Isang pag-atake sa NPM na nagpapahintulot sa iyo na matukoy ang pagkakaroon ng mga pakete sa mga pribadong repositoryo

Natukoy ang isang bug sa NPM na nagbibigay-daan sa iyong matukoy ang pagkakaroon ng mga pakete sa mga pribadong repositoryo. Ang problema ay sanhi ng iba't ibang oras ng pagtugon kapag humihiling ng umiiral at hindi umiiral na package ng isang third party na user na walang access sa repositoryo. Kung walang access para sa anumang mga pakete sa mga pribadong repositoryo, ang registry.npmjs.org server ay nagbabalik ng isang error na may code na "404", ngunit kung ang isang pakete na may hiniling na pangalan ay umiiral, ang error ay ibibigay na may kapansin-pansing pagkaantala. Maaaring gamitin ng isang attacker ang feature na ito upang matukoy ang presensya ng isang package sa pamamagitan ng paghahanap ng mga pangalan ng package mula sa mga diksyunaryo.

Ang pagtukoy ng mga pangalan ng package sa mga pribadong repository ay maaaring kailanganin upang magsagawa ng pag-atake ng dependency mixing na nagmamanipula sa intersection ng mga pangalan ng dependency sa mga pampubliko at panloob na mga repositoryo. Dahil alam kung aling mga panloob na pakete ng NPM ang nasa mga corporate repository, maaaring maglagay ang isang attacker ng mga package na may parehong mga pangalan at mas bagong numero ng bersyon sa isang pampublikong imbakan ng NPM. Kung, kapag nagtatayo, ang mga panloob na aklatan ay hindi tahasang naka-link sa mga setting sa kanilang repositoryo, isasaalang-alang ng npm package manager ang pampublikong repositoryo bilang isang priyoridad at ida-download ang package na inihanda ng umaatake.

Naabisuhan ang GitHub tungkol sa isyu noong Marso, ngunit tumanggi na magdagdag ng proteksyon laban sa pag-atake, na binabanggit ang mga limitasyon sa arkitektura. Ang mga kumpanyang gumagamit ng mga pribadong repositoryo ay pinapayuhan na pana-panahong suriin kung may magkakapatong na mga pangalan sa pampublikong repositoryo, o gumawa ng mga stub para sa kanila na may mga pangalang duplicate ang mga pangalan ng mga pakete sa mga pribadong repositoryo upang hindi mailagay ng mga umaatake ang kanilang mga pakete na may magkakapatong na mga pangalan.

Pinagmulan: opennet.ru

Magdagdag ng komento