Hiljuti teatati, et RubyGems.org paketihoidlas tuvastati kriitiline haavatavus (haavatavus on juba kataloogitud CVE-2022-29176 all), mis võimaldab ilma korraliku volituseta asendada hoidlas teiste inimeste pakette, algatades legitiimse paketi eemaldamise (jank) ja laadides selle asemele üles sama nime ja versiooninumbriga faili.
Mainitakse, et haavatavus tuleneb veast toimingukäitlejas "yank" , mis käsitleb sidekriipsujärgset nimeosa platvormi nimena, võimaldades algatada selliste väliste pakettide eemaldamise, mis vastavad nime osale kuni sidekriipsuni.
Täpsemalt öeldes kasutati "yank" operatsioonikäitleja koodis pakettide otsimiseks käsku 'find_by!(full_name: "#{rubygem.name}-#{slug}")' , samas kui paketi omanikule edastati parameeter "slug", et määrata eemaldatav versioon.
Paketi "rails-html" omanik oleks võinud versiooni "1.2.3" asemel määrata "sanitizer-1.2.3", mis paneks toimingu rakenduma "rails-html-sanitizer-1.2.3" pakett ″ kelleltki teiselt. »
Eile avaldati Rubygems.org turvateatis.
Nõuanne puudutas viga, mis võimaldas pahatahtlikul kasutajal kaevandada teatud kalliskive ja laadida üles erinevaid faile sama nime, versiooninumbri ja erineva platvormiga.
Vaatame põhjalikumalt, et näha, mis kaevandamisprotsessi ajal valesti läks. Ettekäändena kujutame ette stsenaariumi, kus loome pärli nimega "rails-html", eesmärgiga saada volitamata juurdepääs laialdaselt kasutatavale kalliskivile "rails-html-sanitizer".
Mainitakse, et selle haavatavuse edukaks ärakasutamiseks peavad olema täidetud kolm tingimust :
- RĂĽnnaku saab sooritada ainult pakettidele, mille nimes on sidekriips.
- Ründaja peaks suutma paigutada kalliskivipaki koos osa nimest kuni sidekriipsuni. Näiteks kui rünnak on paketi "rails-html-sanitizer" vastu, peab ründaja hoidlasse panema oma "rails-html" paketi.
- Rünnatud pakett peab olema loodud viimase 30 päeva jooksul või seda ei ole värskendatud 100 päeva jooksul.
Probleemi tuvastas turvauurija HackerOne'i pearahaprogrammi osana, mille eesmärk on leida turvaprobleeme tuntud avatud lähtekoodiga projektides.
Probleem parandati RubyGems.org-is 5. mail ja arendajate sõnul pole nad viimase 18 kuu logides haavatavuse ärakasutamise jälgi tuvastanud. Seni on aga läbi viidud vaid pealiskaudne audit ning tulevikus on plaanis põhjalikum audit.
Praegu usume, et seda haavatavust ei ole ära kasutatud.
RubyGems.org saadab kõigile kalliskiviomanikele meili, kui kalliskivi versioon avaldatakse või eemaldatakse. Me ei ole saanud kalliskiviomanikelt tugimeile, mis viitaksid sellele, et nende kalliskivi on kaevandatud ilma loata.
Viimase 18 kuu jooksul tehtud kalliskivide muudatuste auditis ei leitud ühtegi näidet selle haavatavuse pahatahtlikust kasutamisest. Edasine auditeerimine selle ärakasutamise võimaliku kasutamise osas ei leidnud RubyGemsi ajaloos ühtegi juhtumit, kus seda ärakasutamist oleks kasutatud kalliskivi ilma loata ülevõtmiseks. Me ei saa garanteerida, et seda pole kunagi juhtunud, kuid see ei tundu tõenäoline.
Projektide kontrollimiseks on soovitatav analüüsida toimingute ajalugu failis Gemfile.lock. Pahatahtlikku tegevust väljendatakse sama nime ja versiooniga muudatuste või platvormi muutmise korral (näiteks kui pakett xxx-1.2.3 1.2.3 on värskendatud versioonile xxx-XNUMX-xxx).
Peidetud pakettide jäljendamise vastu pideva integratsiooni süsteemides või projektide avaldamisel on arendajatel soovitatav kasutada Bundlerit koos valikutega "--frozen" või "--deployment" sõltuvuste kinnitamiseks.
Lõpuks, kui olete huvitatud selle kohta rohkem teada saamast , leiate üksikasjad järgmiselt lingilt.