Ata zbuluan një dobësi në RubyGems.org që lejonte zëvendësimin e paketave

Kohët e fundit u njoftua se një dobësi kritike u identifikua në depon e paketave RubyGems.org (dobësia është kataloguar tashmë nën CVE-2022-29176), e cila lejon , pa autorizimin e duhur, zëvendësimin e paketave të personave të tjerë në depo duke filluar tërheqjen (tërheqjen) e një pakete legjitime dhe duke ngarkuar një skedar tjetër me të njëjtin emër dhe numër versioni në vend të saj.

Përmendet se dobësia është për shkak të një gabimi në trajtuesin e veprimit "yank" , i cili e trajton pjesën e emrit pas vizës ndarëse si emrin e platformës, duke bërë të mundur fillimin e heqjes së paketave të jashtme që përputhen në pjesën e emrit deri në karakterin e vizës ndarëse.

Në veçanti, në kodin e trajtuesit të operacionit "yank", thirrja 'find_by!(full_name: "#{rubygem.name}-#{slug}")' u përdor për të kërkuar paketa, ndërsa parametri "slug" iu kalua pronarit të paketës për të përcaktuar versionin që do të hiqej.

Pronari i paketës "rails-html" mund të kishte specifikuar "sanitizer-1.2.3" në vend të versionit "1.2.3", gjë që do të bënte që operacioni të zbatohej në "rails-html-sanitizer-1.2.3" paketë ″ nga dikush tjetër. »

Një këshillë sigurie për Rubygems.org u publikua dje.

Këshillimi kishte të bënte me një gabim që lejonte një përdorues keqdashës të minonte disa gurë të çmuar dhe të ngarkonte skedarë të ndryshëm me të njëjtin emër, numër versioni dhe platformë të ndryshme.

Le të hedhim një vështrim më të thellë për të parë se çfarë shkoi keq gjatë procesit të nxjerrjes. Si pretekst, le të imagjinojmë një skenar ku krijojmë një gur të çmuar të quajtur "rails-html" me synimin për të fituar akses të paautorizuar në perlë të përdorur gjerësisht "rails-html-sanitizer".

Përmendet se duhet të përmbushen tre kushte për të shfrytëzuar me sukses këtë dobësi:

  • Sulmi mund të kryhet vetëm në pako që kanë një karakter vizë në emrin e tyre.
  • Një sulmues duhet të jetë në gjendje të vendosë një paketë gurësh të çmuar me një pjesë të emrit deri në karakterin e vizës. Për shembull, nëse sulmi është kundër paketës "rails-html-sanitizer", sulmuesi duhet të vendosë paketën e tij "rails-html" në depo.
  • Paketa e sulmuar duhet të jetë krijuar në 30 ditët e fundit ose të mos përditësohet për 100 ditë.

Problemi u identifikua nga një studiues sigurie si pjesë e programit të shpërblimeve të HackerOne për të gjetur probleme sigurie në projekte të njohura me burim të hapur.

Problemi u rregullua në RubyGems.org më 5 maj dhe, sipas zhvilluesve, ata ende nuk kanë identifikuar ndonjë gjurmë shfrytëzimi të cenueshmërisë në regjistrat gjatë 18 muajve të fundit. Megjithatë, deri më tani është kryer vetëm një audit sipërfaqësor dhe një audit më i thelluar është planifikuar për të ardhmen.

Aktualisht, ne besojmë se kjo dobësi nuk është shfrytëzuar.

RubyGems.org u dërgon një email të gjithë pronarëve të gurëve të çmuar kur lëshohet ose hiqet një version i gurëve të çmuar. Ne nuk kemi marrë asnjë email mbështetës nga pronarët e gurëve të çmuar që tregojnë se perlë e tyre është nxjerrë pa autorizim.

Një auditim i ndryshimeve të gurëve të çmuar gjatë 18 muajve të fundit nuk gjeti shembuj të përdorimit me qëllim të keq të kësaj dobësie. Auditimi i mëtejshëm për çdo përdorim të mundshëm të këtij shfrytëzimi nuk gjeti asnjë rast të përdorimit të këtij shfrytëzimi për të marrë përsipër një gur të çmuar pa autorizim në historinë e RubyGems. Nuk mund të garantojmë se nuk ka ndodhur kurrë, por nuk duket e mundshme.

Për të verifikuar projektet tuaja, rekomandohet të analizoni historinë e operacioneve në skedarin Gemfile.lock Aktiviteti keqdashës shprehet në prani të ndryshimeve me të njëjtin emër dhe version, ose një ndryshim platforme (për shembull, kur një paketë xxx-1.2.3 1.2.3 është përditësuar në xxx-XNUMX-xxx).

Si zgjidhje kundër imitimit të paketave të fshehura në sistemet e integrimit të vazhdueshëm ose gjatë publikimit të projekteve, zhvilluesve u këshillohet të përdorin Bundler me opsionet "--frozen" ose "--deployment" për të konfirmuar varësitë.

Së fundmi, nëse jeni të interesuar të mësoni më shumë rreth kësaj , mund t'i gjeni detajet në lidhjen e mëposhtme.


Shto si burim të preferuar në Google