Sårbarhed i RubyGems.org, der tillader substitution af andres pakker

I RubyGems.org-pakkeopbevaringen er der blevet identificeret en kritisk sårbarhed (CVE-2022-29176), der uden de nødvendige beføjelser tillader substitution af visse andres pakker i opbevaringen ved at igangsætte et tilbagetræk (yank) af en legitim pakke og uploade en anden fil med samme navn og versionsnummer.

For at udnytte sårbarheden kræves tre betingelser:

  • Angrebet kan kun udføres på pakker, hvis navn indeholder bindestreg.
  • Angriberen skal have mulighed for at uploade en gem-pakke med en del af navnet før bindestregen. For eksempel, hvis angrebet bliver udført på pakken «rails-html-sanitizer», skal angriberen uploade sin egen pakke i opbevaringen «rails-html».
  • Den pakke, der bliver angrebet, skal være oprettet inden for de sidste 30 dage, eller ikke være blevet opdateret i 100 dage.

Sårbarheden skyldes en fejl i handleren for handlingen «yank», der tolker delen af navnet efter bindestregen som platformens navn, hvilket gjorde det muligt at igangsætte sletning af andres pakker, der overlapper med delen af navnet før bindestregen. I koden for yank-handleren blev der brugt kaldet ‘find_by!(full_name: «#{rubygem.name}-#{slug}»)’ for at finde pakker, mens parameteren «slug» blev sendt af pakkens ejer for at bestemme den version, der skulle slettes. Ejer af pakken «rails-html» kunne i stedet for version «1.2.3» angive «sanitizer-1.2.3», hvilket ville føre til, at operationen blev anvendt på pakken «rails-html-sanitizer-1.2.3».

Problemet blev identificeret af en sikkerhedsforsker som en del af det eksisterende program på HackerOne, der belønner for at finde sikkerhedsproblemer i kendte open source-projekter. Problemet blev løst i RubyGems.org den 5. maj, og ifølge udviklerne er der ikke fundet tegn på udnyttelse af sårbarheden i loggene i de sidste 18 måneder. Der er imidlertid kun blevet gennemført en overfladisk audit, og der planlægges en mere grundig kontrol i fremtiden.

For checking your projects, it is recommended to analyze the operation history in the Gemfile.lock file. Malicious activity is indicated by the presence of changes that retain the name and version or involve a platform shift (for example, when the gem gemname-1.2.3 is updated to gemname-1.2.3-java). As a workaround to protect against hidden package substitution in continuous integration systems or when publishing projects, developers are advised to use Bundler with the options "--frozen" or "--deployment" to lock dependencies.

Kilde: opennet.ru

Køb pålidelig webhosting med DDoS-beskyttelse, VPS VDS-servere 🔥 Køb pålidelig webhosting med DDoS-beskyttelse, VPS VDS-servere | ProHoster