In den Paketmanagern GNU Guix, Nix und Lix wurden Schwachstellen (Nix, Guix, Lix) festgestellt, die es ermöglichen, Code mit den Rechten der Benutzer auszuführen, unter denen die Build-Jobs laufen (zum Beispiel nixbld* in Nix/Lix). Dies kann genutzt werden, um eigene Daten in die Build-Umgebung zu schreiben und Änderungen im Build-Prozess vorzunehmen. Die Probleme treten in den Hintergrundprozessen guix-daemon und nix-daemon auf, die verwendet werden, um unprivilegierten Benutzern den Zugriff auf die Build-Vorgänge zu ermöglichen.
Die Schwachstellen entstehen, weil bei der Ausführung bestimmter Operationen für den Zugriff auf temporäre Build-Verzeichnisse nicht die Deskriptoren dirfd, sondern vollständige Dateipfade verwendet wurden. Dies ermöglichte es, das Build-Verzeichnis, das sich in der Hierarchie /tmp befindet (zum Beispiel „/tmp/guix-build-PACKAGE-X.Y.drv-0“), zu manipulieren. Die falsche Verwendung von dirfd in der Funktion des rekursiven Löschens führte zu einer Race Condition, durch die ein Angreifer eine symbolische Verknüpfung zwischen der Erstellung und der Änderung des Eigentümers des Build-Verzeichnisses einfügen konnte. Bei einem erfolgreichen Angriff änderte guix-daemon/nix-daemon anstelle des Wechsels des Benutzers für das Build-Verzeichnis den Eigentümer der Datei, die durch die symbolische Verknüpfung adressiert wurde.
Die Schwachstellen wurden in den Updates Lix 2.93, Nix 2.29 und Guix 1.4.0-38.0e79d5b behoben. Um die Schwachstellen auszunutzen, muss der Angreifer in der Lage sein, beliebige Build-Jobs auszuführen. Für den Angriff über die Schwachstelle CVE-2025-46415 genügt es, Dateien im Verzeichnis /tmp auf der Build-Maschine erstellen zu können. Für die Schwachstelle CVE-2025-46416 ist es erforderlich, Code im Kontext des Hauptbenutzernamensraums (pid namespace) und des Netzwerknamensraums (network namespace) auszuführen.
Quelle: opennet.ru
