Sie entdeckten eine Schwachstelle in RubyGems.org, die es ermöglichte, Pakete zu ersetzen

Kürzlich haben die Nachrichten das verbreitet Eine kritische Schwachstelle wurde in identifiziert das Paket-Repository rubygems.org (die Schwachstelle ist bereits unter CVE-2022-29176 katalogisiert), die ermöglicht ohne ordnungsgemäße Berechtigung, ersetzen Sie die Pakete anderer Leute im Repository, indem Sie ein legitimes Paket ziehen und an seiner Stelle eine andere Datei mit demselben Namen und derselben Versionsnummer hochladen.

Es wird das erwähnt Die Sicherheitsanfälligkeit beruht auf einem Fehler im Aktionshandler "Yank"., das den Namensteil nach dem Bindestrich als Plattformnamen behandelt, wodurch es möglich wurde, das Entfernen externer Pakete einzuleiten, die mit dem Namensteil bis zum Bindestrich übereinstimmen.

Insbesondere, im Controller-Code der Operation "Ruck", der Ruf 'find_by!(full_name: "#{rubygem.name}-#{slug}")' wurde verwendet, um nach Paketen zu suchen, während der "slug"-Parameter an den Paketbesitzer weitergegeben wurde, um die zu entfernende Version zu bestimmen.

Der Eigentümer des Pakets „rails-html“ hätte „sanitizer-1.2.3“ anstelle der Version „1.2.3“ angeben können, was dazu führen würde, dass die Operation auf „rails-html-sanitizer-1.2.3“ angewendet wird. Paket ″ von jemand anderem. »

Gestern wurde ein Sicherheitshinweis für Rubygems.org veröffentlicht.

Die Empfehlung betraf einen Fehler, der es einem böswilligen Benutzer ermöglichte, bestimmte Juwelen zu schürfen und verschiedene Dateien mit demselben Namen, derselben Versionsnummer und unterschiedlicher Plattform hochzuladen.

Werfen wir einen genaueren Blick darauf, was beim Extrahieren schief gelaufen ist. Stellen wir uns als Vorwand ein Szenario vor, in dem wir ein Gem namens „rails-html“ mit der Absicht erstellen, unbefugten Zugriff auf das weit verbreitete Gem „rails-html-sanitizer“ zu erhalten.

Es wird das erwähnt drei Bedingungen müssen erfüllt sein, um diese Schwachstelle erfolgreich auszunutzen:

  • Der Angriff kann nur auf Pakete ausgeführt werden, deren Name einen Bindestrich enthält.
  • Ein Angreifer sollte in der Lage sein, eine Edelsteinpackung mit einem Teil des Namens bis zum Bindestrich zu platzieren. Wenn sich der Angriff beispielsweise gegen das Paket „rails-html-sanitizer“ richtet, muss der Angreifer sein eigenes Paket „rails-html“ in das Repository stellen.
  • Das angegriffene Paket muss in den letzten 30 Tagen erstellt oder seit 100 Tagen nicht aktualisiert worden sein.

Das Problem wurde von einem Sicherheitsforscher identifiziert als Teil des HackerOne Bounty-Programms, um Sicherheitsprobleme in bekannten Open-Source-Projekten zu finden.

Das Problem bei RubyGems.org am 5. Mai behoben und laut den Entwicklern noch keine Spuren der Ausbeutung festgestellt der Schwachstelle in den Protokollen der letzten 18 Monate. Gleichzeitig wurde bisher nur eine oberflächliche Prüfung durchgeführt, für die Zukunft ist eine vertiefte Prüfung geplant.

Derzeit gehen wir davon aus, dass diese Schwachstelle nicht ausgenutzt wurde.

RubyGems.org sendet eine E-Mail an alle Gem-Besitzer, wenn eine Gem-Version veröffentlicht oder entfernt wird. Wir haben keine Support-E-Mails von Edelsteinbesitzern erhalten, die darauf hinweisen, dass ihr Edelstein ohne Genehmigung abgebaut wurde.

Eine Prüfung der Gem-Änderungen in den letzten 18 Monaten hat keine Beispiele für eine böswillige Nutzung dieser Schwachstelle gefunden. Eine weitere Prüfung auf eine mögliche Verwendung dieses Exploits ergab in der Geschichte von RubyGems keinen Fall, in dem dieser Exploit dazu verwendet wurde, ein Juwel ohne Genehmigung zu übernehmen. Wir können nicht garantieren, dass es nie passiert ist, aber es scheint nicht wahrscheinlich.

Um Ihre Projekte zu überprüfen, wird empfohlen, den Verlauf der Vorgänge in der Datei Gemfile.lock zu analysieren. Böswillige Aktivitäten äußern sich in Anwesenheit von Änderungen mit demselben Namen und derselben Version oder einer Plattformänderung (z. B. wenn ein Paket xxx-1.2.3 .1.2.3 wird auf xxx-XNUMX-xxx aktualisiert).

Als Lösung gegen Spoofing von versteckten Paketen in Continuous-Integration-Systemen oder beim Veröffentlichen von Projekten, Entwicklern wird empfohlen, Bundler zu verwenden mit den Optionen „–frozen“ oder „–deployment“ Abhängigkeiten zu bestätigen.

Schließlich wenn Sie mehr darüber wissen möchtenkönnen Sie die Details in der überprüfen folgenden Link


Hinterlasse einen Kommentar

Ihre E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind markiert mit *

*

*

  1. Verantwortlich für die Daten: Miguel Ángel Gatón
  2. Zweck der Daten: Kontrolle von SPAM, Kommentarverwaltung.
  3. Legitimation: Ihre Zustimmung
  4. Übermittlung der Daten: Die Daten werden nur durch gesetzliche Verpflichtung an Dritte weitergegeben.
  5. Datenspeicherung: Von Occentus Networks (EU) gehostete Datenbank
  6. Rechte: Sie können Ihre Informationen jederzeit einschränken, wiederherstellen und löschen.