RubyGems.org pakettirepositooriumis tuvastati kriitiline haavatavus (CVE-2022-29176), mis vĂ”imaldab ilma vajalike volitusteta asendada mĂ”ned teised paketid reposis, algatades kehtiva paketi âyankâ eemaldamise ja laadides selle asemel ĂŒles teise faili sama nime ja versiooninumbriga.
Haavatavuse edukaks Àra kasutamiseks on vajalik kolm tingimust:
- RĂŒnnakut saab teostada ainult pakettide puhul, mille nimes on miinusmĂ€rk.
- RĂŒndajal peab olema vĂ”imalus paigutada gem-pakett, mille nimi sisaldab osa enne miinusmĂ€rki. NĂ€iteks, kui rĂŒnnak suunatakse paketile ârails-html-sanitizerâ, peab rĂŒndaja paigutama reposse oma paketi ârails-htmlâ.
- RĂŒnnaku sihtpakett peab olema loodud viimase 30 pĂ€eva jooksul vĂ”i mitte olema uuendatud 100 pĂ€eva jooksul.
Haavatavus tuleneb veast âyankâ toimingu töötlejas, mis tĂ”lgendas nime osa pĂ€rast miinusmĂ€rki platvormi nimeks, mis vĂ”imaldas algatada teiste pakettide eemaldamise, mille nimed kattusid miinusmĂ€rgini. EelkĂ”ige oli âyankâ toimingu töötleja koodis pakettide leidmiseks kasutatud kutsungit âfind_by!(full_name: â#{rubygem.name}-#{slug}â)â, samas kui parameetrit âslugâ edastas paketi omanik eemaldatava versiooni mÀÀramiseks. Paketi ârails-htmlâ omanik sai versiooni â1.2.3â asemel mĂ€rkida âsanitizer-1.2.3â, mis oleks viinud toimingu rakendamiseni teise paketi ârails-html-sanitizer-1.2.3â suhtes.
Probleem tuvastati turvauurija poolt HackerOne'i raames kÀimasoleva turvarikkumiste otsimise kaebuste preemia programmi raames tuntud avatud projektide jaoks. Probleem lahendati RubyGems.org-is 5. mail ja arendajate vÀitel ei ole nad seni avastanud jÀlgi haavatavuse Àrakasutamisest viimase 18 kuu logides. Siiski on lÀbi viidud ainult pindmine audit ja edasine pÔhjalikum kontroll on plaanis.
Oma projektide kontrollimiseks on soovitatav analĂŒĂŒsida Gemfile.lock failis tehtud toimingute ajalugu; pahatahtlik tegevus avaldub muudatuste tegemises, mis sĂ€ilitavad nime ja versiooni vĂ”i platvormi muutmise vormis (nĂ€iteks kui pakett gemname-1.2.3 on uuendatud gemname-1.2.3-java versiooniks). Kaitstes end varjatud pakettide asendamise eest pideva integreerimise sĂŒsteemides vĂ”i arendajate projektide avaldamisel, soovitatakse kasutada Bundlerit koos ââfrozenâ vĂ”i ââdeploymentâ valikutega sĂ”ltuvuste fikseerimiseks.
Allikas: opennet.ru
