Schwachstellen in Pagure und OBS, die eine Kompromittierung von Paketen in den Repositories von Fedora und openSUSE ermöglichten.

Sicherheitsforscher von Fenrisk haben Schwachstellen in den Tools Pagure und OBS (Open Build Service) aufgedeckt, die es ermöglichten, die Infrastruktur zur Erstellung von Paketen für die Distributionen Fedora und openSUSE zu kompromittieren. Die Forscher demonstrierten die Möglichkeit, eine Attacke auszuführen, um willkürlichen Code auf Servern mit Pagure und OBS auszuführen, was verwendet werden konnte, um Änderungen in den Paketen in den Repositories von Fedora und openSUSE einzuschleusen.

In der Pagure-Plattform, die in Fedora für die Zusammenarbeit mit Code und Metadaten von Paketen verwendet wird, wurden 4 Schwachstellen entdeckt. Um die identifizierten Probleme auszunutzen, ist ein Benutzerkonto im Pagure-Dienst erforderlich, das sich jeder Interessierte erstellen kann (derzeit sind 24899 Benutzer in Pagure.io registriert). Drei der Probleme ermöglichen den Zugriff auf Dateien im System, und eines erlaubt die Ausführung von eigenem Code auf Server. Die Probleme wurden am 1. Januar 2024 entdeckt, am 25. April 2024 über bugzilla.redhat.com gemeldet und innerhalb von 3 Stunden in Pagure behoben.

  • Die Schwachstellen CVE-2024-4981 und CVE-2024-47515 resultieren aus einer fehlerhaften Verarbeitung von symbolischen Links in den Funktionen zur Aktualisierung von Dateien und zur Erstellung von Archiven. Diese Schwachstellen ermöglichen es, den Inhalt lokaler Dateien auf dem Server zu lesen, beispielsweise können die Inhalte der Datei mit den Sitzungseinstellungen des Administrators von Pagure eingesehen werden, wodurch ein Zugriff mit dessen Rechten möglich wird. Die Ausnutzung der Schwachstelle in der Funktion _update_file_in_git() besteht darin, ein Repository in Pagure zu erstellen; einen Commit hinzuzufügen, der eine neue Datei enthält, die als symbolischer Link auf die gewünschte Systemdatei erstellt wurde; sowie diese Datei zur Bearbeitung im Webinterface zu öffnen.
  • Die Schwachstelle (CVE-2024-4982) in der Funktion view_issue_raw_file() ermöglicht ein Verlassen des Basisverzeichnisses durch Angabe der Zeichen „/..“ in den Parametern des angeforderten Issues. Das Problem erlaubt es, Dateien im System zu lesen, abhängig von den Berechtigungen des Prozesses, unter dem das Webinterface ausgeführt wird. Um beispielsweise die Datei /etc/passwd anzuzeigen, kann die Seite „http://pagure.local:5000/your-repository/issue/raw/../../../../../../etc/passwd“ aufgerufen werden.
  • Die Schwachstelle (CVE-2024-47516) in der Funktion PagureRepo.log() ermöglicht es, eigene Befehle einzuschleusen und Code auf dem Server auszuführen. Das Problem entsteht, da beim Abrufen der Dateihistorie über die Web-Oberfläche der Befehl „git“ mit der Übergabe der Branch-ID in der Kommandozeile aufgerufen wird (z. B. „/usr/bin/git —pretty=oneline —abbrev-commit — README.md“). Die Gültigkeit der ID wird nicht überprüft, sodass stattdessen jede beliebige Kommandozeilenoption übergeben werden kann, zum Beispiel „—output=/tmp/foo.bar“, um die Ausgabe in eine Datei umzuleiten. Ein Angreifer kann eine Datei im System überschreiben, indem er eine Anfrage des folgenden Formats sendet: http://pagure.local:5000/test/history/README.md?identifier=—output=/tmp/foo.bar

    Pagure wird unter dem Benutzer git ausgeführt, daher können nur die Dateien dieses Benutzers überschrieben werden. Um die Ausführung Ihres Codes auf dem Server zu organisieren, können Sie den Dienst für den Zugriff auf das Repository über SSH nutzen. Dabei wird der Befehl „bash -c /usr/libexec/pagure/aclchecker.py“ ausgeführt. Ein Angreifer kann die Schwachstelle ausnutzen, um die Datei „/srv/git/.bashrc“ zu überschreiben, und diese Datei wird beim Zugriff auf das Repository über SSH vom Bash-Interpreter ausgeführt.

    Der Angriff besteht darin, sich im Pagure-System zu registrieren, ein Repository zu erstellen, eine README.md-Datei mit einer Commit-Nachricht in der Form „|| /bin/bash“ hinzuzufügen und die Anfrage „http://pagure.local:5000/test/history/README.md?identifier=—output=/srv/git/.bashrc“ zu senden. In diesen Schritten wird die Zeile „34а5с43 || /bin/bash“ in die Datei „/srv/git/.bashrc“ geschrieben. Um die erstellte Datei „/srv/git/.bashrc“ auszuführen, genügt es, sich unter Ihrem Benutzerkonto per SSH mit dem Repository zu verbinden. Die Ausführung des Codes mit den Rechten des Benutzers git auf dem Pagure-Server ermöglicht die Kontrolle über alle Inhalte der Repositories mit Paketen.

Auf der OBS-Plattform (Open Build Service), die in openSUSE und einigen anderen Distributionen zur Paketgenerierung verwendet wird, wurde eine Schwachstelle (CVE-2024-22033) entdeckt, die es ermöglicht, eigenen Code auf dem Server auszuführen. Die Schwachstelle wurde am 27. Juni 2024 identifiziert, dem openSUSE-Projekt am 29. Juni gemeldet und am 10. Juli behoben.

Die Schwachstelle befindet sich im Dienst „obs-service-download_url“, bei dem eine ordnungsgemäße Überprüfung der URL fehlt, die beim Ausführen des wget-Tools aus einem Skript verwendet wird, das den Quellcode in OBS herunterlädt. Ein Angreifer kann im OBS-Dienst die Konfiguration des zu erstellenden Pakets angeben, in der anstelle der URL zum Herunterladen des Codes eine Befehlszeilenoption für wget angegeben wird, zum Beispiel: --output-document=/tmp/test tempfile

Um den Fehler zu umgehen, der beim Versuch auftritt, wget ohne URL auszuführen, wurde im Beispiel die Option „download-manifest“ angegeben, die es ermöglicht, eine Liste von URLs in einer separaten Datei anzugeben. Das obige Beispiel führt zu folgender Befehlsausführung: /usr/bin/wget -i /srv/obs/service/XXXXX/src/tempfile -4 --output-document=/tmp/test

Die Angreifermethode ermöglicht es, den Inhalt, der über einen Link in der Datei /srv/obs/service/XXXXX/src/tempfile geladen wurde, in die Datei /tmp/test zu schreiben. Dies geschieht über den Code, den ein Angreifer über die beliebig registrierbare Schnittstelle build.opensuse.org in OBS hochlädt. Neben der Möglichkeit, eine Datei auf dem Server zu überschreiben, kann der Angreifer auch eine beliebige Datei anfordern, indem er anstelle von „—output-document“ die Option „—post-file“ angibt, z. B. „—post-file=/etc/passwd“. Dadurch kann der Angreifer je nach Zugriffsrechten, unter denen der OBS-Dienst ausgeführt wird, Dateien auf dem Server lesen und schreiben.

Um die Möglichkeit der Datei-Schreibung in die Ausführung von Code auf dem Server umzuwandeln, haben Forscher eine Methode in zwei Schritten vorgeschlagen. Diese beiden Schritte sind notwendig, da der Angreifer eine Datei „.wgetrc“ mit Einstellungen für wget erstellen kann, jedoch dies nicht ausreicht, um Befehle auszuführen. Über „.wgetrc“ können Bedingungen geschaffen werden, um ein beliebiges Programm im System auszuführen, jedoch ohne Argumente zu übergeben. Für die Ausführung beliebigen Codes wurde vorgeschlagen, das Programm „prove“ zu verwenden, das die Konfigurationsdatei „.proverc“ auswertet, bei der die Option „—exec“ für die Ausführung beliebigen Codes angegeben werden kann.

Im ersten Schritt wird durch die oben beschriebenen Manipulationen mit "download-manifest" im Home-Verzeichnis des Benutzers "obsservicerun" eine Datei ".proverc" erstellt, die Befehle enthält, die beim Start des Prozesses "prove" ausgeführt werden. Im zweiten Schritt wird die Datei ".wgetrc" mit dem Parameter "use-askpass=\/usr\/bin\/prove" erstellt, was den Aufruf von "prove" zur Folge hat. Nach dem Erscheinen dieser Dateien genügt es, Bedingungen zu schaffen, um beliebige Daten mit wget herunterzuladen, und dies führt dazu, dass der Code des Angreifers mit den Rechten des Benutzers "obsservicerun" auf dem Server ausgeführt wird. Die Rechte des Benutzers "obsservicerun" sind ausreichend, um Schlüssel aus den Repositories zu extrahieren, die von OBS-Benutzern zur Signierung von Paketen verwendet werden.

Zusatz: Das Team von SUSE Product Security ist der Meinung, dass die Gefährdung durch die Schwachstelle im OBS überbewertet ist. Die Aussage der Forscher, dass das Problem dazu führt, dass alle Pakete im openSUSE-Distribution gefährdet sind, entspricht nicht der Realität. Es wird darauf hingewiesen, dass die Dienste in der Infrastruktur von build.opensuse.org in isolierten Containern ausgeführt werden, die neu erstellt werden und keine kritischen Informationen enthalten. Die identifizierte Schwachstelle wird als gefährlich eingestuft, reicht jedoch nicht aus, um die Build-Infrastruktur von openSUSE und die erzeugten Pakete zu kompromittieren. Außerdem wird erwähnt, dass die im Angriffsszenario beschriebenen Aktionen im OBS-Interface nur in der lokal auf der Arbeitsstation des Entwicklers installierten Version von OBS durchgeführt werden konnten.

Quelle: opennet.ru

Zuverlässiges Webhosting mit DDoS-Schutz, VPS- und VDS-Server kaufen 🔥 Zuverlässiges Webhosting mit DDoS-Schutz, VPS- und VDS-Server kaufen | ProHoster