Sicherheitsanfälligkeit im Paketmanager Guix, die die remote Ausführung von Code im System ermöglicht

Im Paketmanager Guix wurden Schwachstellen (CVE nicht zugeordnet) in der Implementierung des internen Befehls „guix substitute“ festgestellt, der automatisch durch den Hintergrundprozess guix-daemon beim Ausführen von Paketinstallationen aufgerufen wird. Dieser Befehl wird verwendet, um bereits kompilierte Binärpakete von externen Servern herunterzuladen und deren Integrität mittels digitaler Signatur zu überprüfen. Die gefährlichste Schwachstelle ermöglicht es Angreifern, aus der Ferne die Ausführung von Code auf dem System des Benutzers mit den Rechten, unter denen der Hintergrundprozess guix-daemon ausgeführt wird, zu organisieren.

Das Problem betrifft alle Konfigurationen mit dem Prozess guix-daemon, unabhängig davon, ob er mit Root-Rechten oder unter einem nicht privilegierten Benutzer ausgeführt wird. Um die Schwachstelle auszunutzen, genügt es, einen beliebigen Versuch zu unternehmen, fertige Binärpakete von Server, die unter der Kontrolle des Angreifers stehen. Dabei wird schädlicher der Server muss nicht zwingend explizit in den Benutzereinstellungen ausgewählt oder angegeben werden – er kann durch die Option „—discover“ bestimmt werden, was eine Platzierung des Servers während eines MITM-Angriffs ermöglicht. In Konfigurationen, in denen der guix-daemon mit erhöhten Rechten läuft, kann ein lokaler Benutzer einen Angriff durchführen, wenn er die Möglichkeit hat, eine Verbindung zu dem Hintergrundprozess über einen Unix-Socket herzustellen (standardmäßig für alle Benutzer zugänglich).

Die Schwachstelle besteht im Handler „restore-file“, der verwendet wird, um während des Paketladens zu entpacken, ohne auf den vollständigen Lade- und Verifizierungsprozess des heruntergeladenen Archivs durch die digitale Signatur zu warten. Das Problem entsteht durch das Fehlen einer Überprüfung auf die Zeichen „.“, „/“ und „..“ in den in dem Archiv enthaltenen Dateipfaden. Durch das Einfügen inkorrekter Dateinamen in das Archiv kann ein Angreifer erreichen, dass eine beliebige Datei in jeden Bereich des Dateisystems geschrieben wird, abhängig von den Rechten, unter denen der Hintergrundprozess guix-daemon läuft.

Um die Ausführung Ihres Codes im System zu organisieren, können Sie beispielsweise ein Autostart-Skript wie «~/.bashrc» oder «~/.profile» hinzufügen oder die Datei «~/.ssh/authorized_keys» mit SSH-Schlüsseln ändern. Wenn der guix-daemon in einem Mehrbenutzersystem unter dem Benutzer root ausgeführt wird, könnte ein Angreifer die Datei mit den Passwörtern oder Systemskripten überschreiben.

Die Möglichkeit, gefälschte Server für die Verbreitung bösartiger Pakete zu erstellen, resultiert daraus, dass das Verfahren zum Abrufen der Metadaten (narinfo) über verfügbare Binärpakete (fetch-narinfos) die Serverzertifikate nicht überprüfte und sich darauf verließ, dass der Großteil der Metadaten durch eine digitale Signatur validiert wird. Wie sich herausstellte, umfasste die Signatur nicht die URL zum Herunterladen des Pakets, was es ermöglichte, diese zu ändern, ohne die Integrität der Metadaten zu verletzen. Letztendlich würde das gefälschte Paket aufgrund des Scheiterns der Hash-Prüfung, die durch die digitale Signatur validiert wurde, abgelehnt werden, jedoch wurde diese Prüfung erst nach dem Entpackungsprozess durchgeführt, bei dem das Problem mit speziellen Zeichen in den Dateinamen auftrat.

Neben dem Befehl „guix substitute“ wurde der anfällige Handler „restore-file“ auch in den Befehlen „guix offload“, „guix archive —extract“ und „guix challenge“ verwendet, über die die Schwachstelle ebenfalls ausgenutzt werden kann. Um die Verletzung zu umgehen, wird empfohlen, die Option „—no-substitutes“ ausdrücklich in allen guix-Befehlen anzugeben. Die Behebung der Schwachstelle wurde in den Guix-Code übernommen. Benutzern wird geraten, die von den Entwicklern bereitgestellten Updates für guix und guix-daemon umgehend zu installieren.

Neben dem genannten Problem wurden in Guix zusätzlich drei weitere Sicherheitsanfälligkeiten behoben:

  • Die Möglichkeit, Binärpakete zu manipulieren, aufgrund fehlender Überprüfung der Übereinstimmung zwischen dem angeforderten Paket und den zurückgegebenen Metadaten im Handler fetch-narinfos. Die Schwachstelle kann verwendet werden, um eine veraltete Version des angeforderten Pakets bereitzustellen, die anfällig ist.
  • Die Definition des Inhalts der ersten Zeile beliebiger Dateien im System erfolgt durch die Übermittlung einer Anfrage eines lokalen Benutzers mit der URI „file://“ („—substitute-urls file:///etc/shadow“). Wenn der guix-daemon mit Root-Rechten ausgeführt wird, liest er die angeforderte Datei, erkennt, dass sie keine Metadaten enthält, und gibt einen Fehler aus, in dem die nicht lesbare Zeile erwähnt wird.
  • Das Angeben eines speziell formatierten Namens eines externen Repositories („../../../newfile“) bei der Ausführung der Befehle „guix pull“ und „guix time-machine“ ermöglicht es, Daten mit den Informationen zum Commit in eine beliebige bestehende Datei im Dateisystem zu schreiben, sofern ihr Inhalt einer Liste von Zeilen in der Programmiersprache Scheme ähnelt. Diese Sicherheitsanfälligkeit kann für DoS-Angriffe ausgenutzt werden, jedoch besteht die Möglichkeit, durch geschickte Manipulationen mit dem Pseudo-Dateisystem /proc gefährlichere Manipulationen am System durchzuführen.

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