Sicherheitsanfälligkeit in Firejail, die Root-Zugriff auf das System ermöglicht

In dem Tool zur isolierten Ausführung von Anwendungen Firejail wurde eine Sicherheitsanfälligkeit (CVE-2022-31214) festgestellt, die es einem lokalen Benutzer ermöglicht, Root-Rechte im Hauptsystem zu erlangen. Ein funktionierender Exploit ist öffentlich verfügbar und wurde in aktuellen Versionen von openSUSE, Debian, Arch, Gentoo und Fedora mit installierter Firejail-Utility getestet. Das Problem wurde in der Version 0.9.70 von Firejail behoben. Als Sicherheitsumgehung können in den Einstellungen (\/etc\/firejail\/firejail.config) die Parameter „join no“ und „force-nonewprivs yes“ festgelegt werden.

Firejail verwendet zur Isolation den Mechanismus der Namespaces, AppArmor und die Filterung von Systemaufrufen (seccomp-bpf) in Linux, benötigt jedoch zur Konfiguration des isolierten Starts erhöhte Rechte, die es durch Anbindung an die SUID-Root-Utility oder durch die Verwendung von sudo erhält. Die Sicherheitsanfälligkeit wird durch einen Fehler in der Logik der Option „—join=“ verursacht, die für den Anschluss an eine bereits laufende isolierte Umgebung vorgesehen ist (analog zum Befehl login für Sandbox-Umgebungen) und die Umgebung anhand der Prozess-ID (PID) erkennt. Vor dem Zurücksetzen der Privilegien ermittelt Firejail die Privilegien des angegebenen Prozesses und wendet diese auf den neuen Prozess an, der über die Option „—join“ an die Umgebung angeschlossen wird.

Vor dem Anschluss wird überprüft, ob der angegebene Prozess in der Firejail-Umgebung ausgeführt wird. Diese Überprüfung bewertet das Vorhandensein der Datei \/run\/firejail\/mnt\/join. Um die Schwachstelle auszunutzen, kann der Angreifer eine fiktive, nicht isolierte Firejail-Umgebung simulieren, indem er den Mount-Namespace verwendet, und sich dann über die Option „—join“ anschließen. Wenn in den Einstellungen der Modus zur Verhinderung des Erhalts zusätzlicher Privilegien in neuen Prozessen (prctl NO_NEW_PRIVS) nicht aktiviert ist, wird Firejail den Benutzer mit der fiktiven Umgebung verbinden und versuchen, die Konfiguration des Nutzer-ID-Namespace des Init-Prozesses (PID 1) anzuwenden.

Schließlich wird der über «firejail —join» verbundene Prozess im ursprünglichen Namensraum des Benutzers mit unveränderten Rechten erscheinen, jedoch in einem anderen Dateisystembereich, der vollständig vom Angreifer kontrolliert wird. Der Angreifer kann auch setuid-root-Programme in diesem von ihm erstellten Dateisystembereich ausführen, was es ihm beispielsweise ermöglicht, die Einstellungen von /etc/sudoers oder die PAM-Parameter in seiner Dateihierarchie zu ändern und die Möglichkeit zu erhalten, Befehle mit root-Rechten über die Tools sudo oder su auszuführen.

Quelle: opennet.ru

60GB SSD 8Gb DDR4