In den Paketmanagern Nix und Lix wurde eine Sicherheitsanfälligkeit festgestellt, die es ermöglicht, Code mit den Rechten eines Hintergrundprozesses auszuführen, der in NixOS und Mehrbenutzerinstallationen unter dem Benutzer root läuft. Das Problem (CVE-Nummer nicht zugewiesen) tritt im Hintergrundprozess nix-daemon auf, der dazu dient, unprivilegierten Benutzern den Zugang zu Build-Operationen und zum Paketarchiv zu ermöglichen.
Die Schwachstelle entsteht durch das Fehlen einer Begrenzung für die rekursive Verarbeitung von Verzeichnissen im Code zur Analyse von NAR-Archiven (Nix Archive), was ausgenutzt werden kann, um einen Stapelüberlauf zu initiieren und den Haufen (heap), der sich nach dem Stapel befindet, ohne Schutzseiten zu überschreiben. Das Problem kann von jedem Benutzer ausgenutzt werden, der Verbindungen zum nix-daemon herstellen kann. Standardmäßig haben alle Benutzer diese Möglichkeit, was es ihnen erlaubt, ihre Privilegien in Mehrbenutzerinstallationen von Nix auf den Benutzer root anzuheben.
Das Problem wurde durch die Beschränkung der Rekursionstiefe auf 64 verschachtelte Verzeichnisse, die Hinzufügung von Wächtern im Speicher zwischen dem Stack und dem Heap sowie die Implementierung zusätzlicher Überprüfungen von symbolischen Links in NAR behoben. In Nix tritt die Schwachstelle ab Version 2.24.4 auf und wurde in den Versionen 2.34.7, 2.33.6, 2.32.8, 2.31.5, 2.30.5, 2.29.4, 2.28.7 behoben. In Lix trat die Schwachstelle in Version 2.93.0 auf und wurde in den Updates 2.93.4, 2.94.2 und 2.95.2 behoben. Der Paketmanager Guix ist von dieser Schwachstelle nicht betroffen.
Darüber hinaus wurde in den veröffentlichten Updates von Nix eine weitere Schwachstelle behoben (CVE vorhanden), die als mittel gefährlich eingestuft wird (4.3 von 10). Das Problem tritt ab der Version Nix 2.24.7 auf und ermöglicht das Schreiben von Dateien in einen Bereich außerhalb des Root-Verzeichnisses, in das das Archiv entpackt wird. Die Schwachstelle wird durch die Erstellung von Elementen mit absoluten Dateipfaden in tar-Dateien ausgenutzt. Beim Entpacken solcher Archive mit dem Befehl „nix-prefetch-url —unpack“ oder „nix store prefetch-file —unpack“ werden Dateien mit absoluten Pfaden unverändert extrahiert, ohne sie in relative Pfade umzuwandeln.
Quelle: opennet.ru
