Kwetsbaarheid in RubyGems.org, waardoor pakketten van andere mensen kunnen worden vervangen

Er is een kritieke kwetsbaarheid (CVE-2022-29176) geïdentificeerd in de pakketrepository van RubyGems.org, die het mogelijk maakt, zonder de juiste toestemming, de pakketten van andere mensen in de repository te vervangen door een ruk van een legitiem pakket te initiëren en op zijn plaats te laden een ander bestand met dezelfde naam en versienummer.

Om de kwetsbaarheid succesvol te kunnen misbruiken, moet aan drie voorwaarden worden voldaan:

  • De aanval kan alleen worden uitgevoerd op pakketten die een koppelteken in hun naam hebben.
  • Een aanvaller moet een edelstenenpakket met een deel van de naam vóór het koppelteken kunnen plaatsen. Als de aanval bijvoorbeeld op het pakket "rails-html-sanitizer" plaatsvindt, moet de aanvaller zijn eigen pakket "rails-html" in de repository plaatsen.
  • Het pakket dat wordt aangevallen, moet in de afgelopen 30 dagen zijn gemaakt of gedurende 100 dagen niet zijn bijgewerkt.

De kwetsbaarheid wordt veroorzaakt door een fout in de actie-handler “yank”, die het deel van de naam na het koppelteken interpreteert als de naam van het platform, waardoor het mogelijk werd om buitenlandse pakketten te verwijderen die overeenkomen met het deel van de naam vóór het koppelteken. In het bijzonder werd in de handlercode "yank" de aanroep 'find_by!(full_name: "#{rubygem.name}-#{slug}")" gebruikt om pakketten te vinden, terwijl de parameter "slug" werd doorgegeven door de pakketeigenaar om te bepalen welke versie moet worden verwijderd. De eigenaar van het pakket "rails-html" zou "sanitizer-1.2.3" kunnen specificeren in plaats van versie "1.2.3", waardoor de bewerking zou worden toegepast op het pakket van iemand anders "rails-html-sanitizer-1.2.3 ".

Het probleem werd door een beveiligingsonderzoeker geïdentificeerd als onderdeel van HackerOne's premieprogramma voor het vinden van beveiligingsproblemen in bekende open-sourceprojecten. Het probleem is op 5 mei opgelost in RubyGems.org en volgens de ontwikkelaars hebben ze in de logs van de afgelopen 18 maanden nog geen sporen van misbruik van de kwetsbaarheid geïdentificeerd. Tegelijkertijd is er tot nu toe slechts een oppervlakkige audit uitgevoerd en staat er in de toekomst een diepgaandere audit gepland.

Om uw projecten te controleren, wordt aanbevolen om de geschiedenis van de bewerkingen in het Gemfile.lock-bestand te analyseren; kwaadaardige activiteit komt tot uiting in de aanwezigheid van wijzigingen met behoud van de naam en versie of een wijziging van het platform (bijvoorbeeld wanneer de gemnaam -1.2.3-pakket is bijgewerkt naar gemname-1.2.3-java). Als tijdelijke oplossing om te beschermen tegen verborgen pakketvervanging in continue integratiesystemen of bij het publiceren van projecten, wordt ontwikkelaars aanbevolen om Bundler te gebruiken met de “-frozen” of “-deployment” opties om afhankelijkheden op te lossen.

Bron: opennet.ru

Voeg een reactie