Bregusrwydd yn RubyGems.org, gan ganiatΓ‘u i gymryd lle pecynnau pobl eraill

Mae bregusrwydd critigol (CVE-2022-29176) wedi'i nodi yn ystorfa becynnau RubyGems.org, sy'n caniatΓ‘u, heb awdurdod priodol, i ddisodli pecynnau rhai pobl eraill yn yr ystorfa trwy gychwyn yank o becyn cyfreithlon a llwytho yn ei le ffeil arall gyda'r un enw a rhif fersiwn.

Er mwyn manteisio ar y bregusrwydd yn llwyddiannus, rhaid bodloni tri amod:

  • Dim ond ar becynnau sydd Γ’ chysylltnod yn eu henw y gellir cynnal yr ymosodiad.
  • Rhaid i ymosodwr allu gosod pecyn gem gyda rhan o'r enw cyn y nod cysylltnod. Er enghraifft, os yw'r ymosodiad ar y pecyn "rails-html-sanitizer", rhaid i'r ymosodwr osod ei becyn "rails-html" ei hun yn y storfa.
  • Rhaid bod y pecyn yr ymosodir arno wedi'i greu o fewn y 30 diwrnod diwethaf neu heb ei ddiweddaru am 100 diwrnod.

Mae'r bregusrwydd yn cael ei achosi gan wall yn y triniwr gweithredu "yank", sy'n dehongli'r rhan o'r enw ar Γ΄l y cysylltnod fel enw'r platfform, a wnaeth hi'n bosibl cychwyn dileu pecynnau tramor sy'n cyd-fynd Γ’ rhan yr enw cyn y cysylltnod. Yn benodol, yn y cod triniwr "yank", defnyddiwyd yr alwad 'find_by! (full_name: "#{rubygem.name} -#{slug}")" i ddod o hyd i becynnau, tra bod y paramedr "slug" yn cael ei basio gan y perchennog pecyn i bennu'r fersiwn i'w dileu. Gallai perchennog y pecyn "rails-html" nodi "sanitizer-1.2.3" yn lle fersiwn "1.2.3", a fyddai'n achosi i'r gweithrediad gael ei gymhwyso i becyn rhywun arall "rails-html-sanitizer-1.2.3 " .

Nodwyd y mater gan ymchwilydd diogelwch fel rhan o raglen bounty HackerOne ar gyfer dod o hyd i faterion diogelwch mewn prosiectau ffynhonnell agored hysbys. Cafodd y broblem ei datrys yn RubyGems.org ar Fai 5 ac yn Γ΄l y datblygwyr, nid ydynt eto wedi nodi unrhyw olion o ecsbloetio bregusrwydd yn y boncyffion dros y 18 mis diwethaf. Ar yr un pryd, dim ond archwiliad arwynebol sydd wedi'i wneud hyd yn hyn ac mae archwiliad manylach wedi'i gynllunio yn y dyfodol.

I wirio'ch prosiectau, argymhellir dadansoddi hanes gweithrediadau yn y ffeil Gemfile.lock; mynegir gweithgaredd maleisus ym mhresenoldeb newidiadau gyda chadwraeth yr enw a'r fersiwn neu newid platfform (er enghraifft, pan fydd yr enw gem -1.2.3 pecyn yn cael ei ddiweddaru i gemname-1.2.3-java). Fel ateb i amddiffyn rhag amnewid pecynnau cudd mewn systemau integreiddio parhaus neu wrth gyhoeddi prosiectau, argymhellir bod datblygwyr yn defnyddio Bundler gyda'r opsiynau β€œ-frozen” neu β€œ-deployment” i drwsio dibyniaethau.

Ffynhonnell: opennet.ru

Ychwanegu sylw