Sårbarhed i RubyGems.org, der gør det muligt at erstatte andres pakker

En kritisk sårbarhed (CVE-2022-29176) er blevet identificeret i RubyGems.org-pakkelageret, som tillader, uden behørig autoritet, at erstatte nogle andre personers pakker i lageret ved at starte et ryk i en legitim pakke og indlæse i stedet for en anden fil med samme navn og versionsnummer.

For at kunne udnytte sårbarheden skal tre betingelser være opfyldt:

  • Angrebet kan kun udføres på pakker, der har en bindestreg i deres navn.
  • En angriber skal være i stand til at placere en ædelstenspakke med en del af navnet før bindestregen. For eksempel, hvis angrebet er på "rails-html-sanitizer"-pakken, skal angriberen placere sin egen "rails-html"-pakke i depotet.
  • Pakken, der angribes, skal være oprettet inden for de sidste 30 dage eller ikke opdateret i 100 dage.

Sårbarheden er forårsaget af en fejl i "yank"-handlingsbehandleren, som fortolker den del af navnet efter bindestregen som navnet på platformen, hvilket gjorde det muligt at igangsætte sletningen af ​​udenlandske pakker, der matcher den del af navnet før bindestregen. Især i "yank"-handlerkoden blev "find_by!(fuldt_navn: "#{rubygem.name}-#{slug}")"-kaldet brugt til at finde pakker, mens "slug"-parameteren blev sendt af pakkeejer for at bestemme, hvilken version der skal fjernes. Ejeren af ​​pakken "rails-html" kunne angive "sanitizer-1.2.3" i stedet for version "1.2.3", hvilket ville medføre, at handlingen blev anvendt på en andens pakke "rails-html-sanitizer-1.2.3 ".

Problemet blev identificeret af en sikkerhedsforsker som en del af HackerOnes bounty-program til at finde sikkerhedsproblemer i kendte open source-projekter. Problemet blev rettet i RubyGems.org den 5. maj, og ifølge udviklerne har de endnu ikke identificeret nogen spor af udnyttelse af sårbarheden i logfilerne i løbet af de sidste 18 måneder. Samtidig er der indtil videre kun gennemført en overfladisk revision, og der er planlagt en mere dybdegående revision i fremtiden.

For at tjekke dine projekter anbefales det at analysere operationshistorikken i Gemfile.lock-filen; ondsindet aktivitet kommer til udtryk i tilstedeværelsen af ​​ændringer med bevarelse af navnet og versionen eller en ændring af platformen (f.eks. når gemnavnet -1.2.3-pakken er opdateret til gemname-1.2.3-java). Som en løsning for at beskytte mod skjult pakkesubstitution i kontinuerlige integrationssystemer eller ved udgivelse af projekter anbefales det, at udviklere bruger Bundler med "-frozen" eller "-deployment"-mulighederne til at rette afhængigheder.

Kilde: opennet.ru

Tilføj en kommentar