Kwesbaarheid in RubyGems.org, wat toelaat om ander mense se pakkette te vervang

'n Kritieke kwesbaarheid (CVE-2022-29176) is in die RubyGems.org-pakketbewaarplek geïdentifiseer, wat dit moontlik maak om, sonder behoorlike magtiging, sommige ander mense se pakkette in die bewaarplek te vervang deur 'n regmatige pakket te begin ruk en in die plek daarvan te laai 'n ander lêer met dieselfde naam en weergawenommer.

Om die kwesbaarheid suksesvol te ontgin, moet aan drie voorwaardes voldoen word:

  • Die aanval kan slegs uitgevoer word op pakkies wat 'n koppelteken in hul naam het.
  • 'n Aanvaller moet 'n edelsteenpakket kan plaas met 'n deel van die naam voor die koppelteken. Byvoorbeeld, as die aanval op die "rails-html-sanitizer"-pakket is, moet die aanvaller sy eie "rails-html"-pakket in die bewaarplek plaas.
  • Die pakket wat aangeval word, moes binne die afgelope 30 dae geskep gewees het of vir 100 dae nie opgedateer nie.

Die kwesbaarheid word veroorsaak deur 'n fout in die "yank" aksie hanteerder, wat die deel van die naam na die koppelteken interpreteer as die naam van die platform, wat dit moontlik gemaak het om die verwydering van buitelandse pakkette wat ooreenstem met die deel van die naam te begin. voor die koppelteken. In die besonder, in die "yank"-hanteerderkode, is die 'find_by!(full_name: "#{rubygem.name}-#{slug}")"-oproep gebruik om pakkette te vind, terwyl die "slug"-parameter deur die pakketeienaar om vas te stel watter weergawe verwyder moet word. Die eienaar van die pakket "rails-html" kan "sanitizer-1.2.3" spesifiseer in plaas van weergawe "1.2.3", wat sal veroorsaak dat die bewerking op iemand anders se pakket "rails-html-sanitizer-1.2.3 toegepas word" ".

Die probleem is deur 'n sekuriteitsnavorser geïdentifiseer as deel van HackerOne se oorvloedprogram om sekuriteitskwessies in bekende oopbronprojekte te vind. Die probleem is op 5 Mei in RubyGems.org opgelos en volgens die ontwikkelaars het hulle nog geen spore van uitbuiting van die kwesbaarheid in die logboeke oor die afgelope 18 maande geïdentifiseer nie. Terselfdertyd is slegs 'n oppervlakkige oudit tot dusver uitgevoer en 'n meer in-diepte oudit word in die toekoms beplan.

Om jou projekte na te gaan, word dit aanbeveel om die geskiedenis van bedrywighede in die Gemfile.lock-lêer te ontleed; kwaadwillige aktiwiteit word uitgedruk in die teenwoordigheid van veranderinge met die behoud van die naam en weergawe of 'n verandering van platform (byvoorbeeld wanneer die gemnaam -1.2.3-pakket is opgedateer na gemname-1.2.3-java). As 'n oplossing om te beskerm teen versteekte pakketvervanging in deurlopende integrasiestelsels of wanneer projekte gepubliseer word, word ontwikkelaars aanbeveel om Bundler te gebruik met die "-bevrore" of "-ontplooiing" opsies om afhanklikhede reg te stel.

Bron: opennet.ru

Voeg 'n opmerking