Hulle het 'n kwesbaarheid in RubyGems.org ontdek wat dit moontlik gemaak het om pakkette te vervang

Onlangs het die nuus dit bekend gemaak 'n Kritieke kwesbaarheid is geïdentifiseer in die pakketbewaarplek rubygems.org (die kwesbaarheid is reeds gekatalogiseer onder CVE-2022-29176), wat toelaat sonder behoorlike magtiging, ander mense se pakkette vervang in die bewaarplek deur 'n wettige pakket te ruk en 'n ander lêer met dieselfde naam en weergawenommer in die plek daarvan op te laai.

Daar word genoem dat die kwesbaarheid is te wyte aan 'n fout in die "yank" aksie hanteerder, wat die deel van die naam na die koppelteken as die platformnaam hanteer, wat dit moontlik gemaak het om die verwydering van eksterne pakkette te begin wat ooreenstem met die deel van die naam tot by die koppeltekenkarakter.

In die besonder in die kontroleerderkode van die operasie "ryk", die oproep 'vind_deur!(volle_naam: "#{rubygem.name}-#{slug}")' is gebruik om na pakkette te soek, terwyl die "slug"-parameter aan die pakketeienaar oorgedra is om die weergawe te bepaal wat verwyder moet word.

Die eienaar van die "rails-html"-pakket kon "sanitizer-1.2.3" gespesifiseer het in plaas van die "1.2.3" weergawe, wat sou veroorsaak dat die bewerking op die "rails-html-sanitizer-1.2.3" van toepassing sou wees pakkie ″ van iemand anders. »

’n Sekuriteitsadvies vir Rubygems.org is gister gepubliseer.

Die advies het betrekking op 'n fout wat 'n kwaadwillige gebruiker toegelaat het om sekere edelstene te myn en verskillende lêers met dieselfde naam, weergawenommer en verskillende platform op te laai.

Kom ons kyk dieper om te sien wat verkeerd geloop het terwyl ons deur die onttrekkingsproses gegaan het. As 'n voorwendsel, laat ons ons 'n scenario voorstel waar ons 'n juweel genaamd "rails-html" skep met die bedoeling om ongemagtigde toegang te verkry tot die wyd gebruikte "rails-html-sanitizer" juweel.

Daar word genoem dat drie voorwaardes moet nagekom word, om hierdie kwesbaarheid suksesvol te ontgin:

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

Die probleem is deur 'n sekuriteitsnavorser geïdentifiseer as deel van die HackerOne-bounty-program om sekuriteitskwessies in bekende oopbronprojekte te vind.

Die probleem op 5 Mei by RubyGems.org vasgestel en volgens die ontwikkelaars, het nog nie spore van uitbuiting geïdentifiseer nie van die kwesbaarheid in die logboeke vir die afgelope 18 maande. Terselfdertyd is slegs 'n oppervlakkige oudit tot dusver uitgevoer en 'n meer in-diepte oudit word in die toekoms beplan.

Tans glo ons dat hierdie kwesbaarheid nie uitgebuit is nie.

RubyGems.org stuur 'n e-pos aan alle edelsteeneienaars wanneer 'n edelsteenweergawe vrygestel of verwyder word. Ons het geen ondersteunings-e-posse van edelstene-eienaars ontvang wat sê dat hul edelstene sonder magtiging ontgin is nie.

'n Oudit van edelsteenveranderinge oor die afgelope 18 maande het geen voorbeelde van kwaadwillige gebruik van hierdie kwesbaarheid gevind nie. Verdere ouditering vir enige moontlike gebruik van hierdie uitbuiting het geen geval gevind dat hierdie uitbuiting gebruik is om 'n juweel sonder magtiging oor te neem in die geskiedenis van RubyGems nie. Ons kan nie waarborg dat dit nooit gebeur het nie, maar dit lyk nie waarskynlik nie.

Om jou projekte te verifieer, 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 dieselfde naam en weergawe, of 'n platformverandering (byvoorbeeld wanneer 'n pakket xxx-1.2.3 1.2.3 is opgedateer na xxx-XNUMX-xxx).

As 'n oplossing teen bedrog van verborge pakkette in deurlopende integrasiestelsels of wanneer projekte uitgee word, Ontwikkelaars word aanbeveel om Bundler te gebruik met die opsies “–bevrore” of “–ontplooiing” om afhanklikhede te bevestig.

Ten slotte, as u belangstel om meer daaroor te wete te kom, kan u die besonderhede in die volgende skakel.


Die inhoud van die artikel voldoen aan ons beginsels van redaksionele etiek. Klik op om 'n fout te rapporteer hier.

Wees die eerste om te kommentaar lewer

Laat u kommentaar

Jou e-posadres sal nie gepubliseer word nie.

*

*

  1. Verantwoordelik vir die data: Miguel Ángel Gatón
  2. Doel van die data: Beheer SPAM, bestuur van kommentaar.
  3. Wettiging: U toestemming
  4. Kommunikasie van die data: Die data sal nie aan derde partye oorgedra word nie, behalwe deur wettige verpligtinge.
  5. Datastoor: databasis aangebied deur Occentus Networks (EU)
  6. Regte: U kan u inligting te alle tye beperk, herstel en verwyder.