In der Komponente Polkit, die in Distributionen verwendet wird, um es privilegierten Nutzern zu ermöglichen, Aktionen auszufĂŒhren, die erhöhte Zugriffsrechte erfordern (z. B. das Einbinden von USB-Speichermedien), wurde eine Schwachstelle (CVE-2021-3560) entdeckt, die es einem lokalen Nutzer ermöglicht, Root-Rechte im System zu erlangen. Die Schwachstelle wurde in der Version Polkit 0.119 behoben.
Das Problem tritt seit der Version 0.113 auf, aber viele Distributionen, einschlieĂlich RHEL, Ubuntu, Debian und SUSE, haben die anfĂ€llige FunktionalitĂ€t in Pakete, die auf Ă€lteren Versionen von Polkit basieren, zurĂŒckportiert (Paketfixes sind bereits in den Distributionen verfĂŒgbar).
Das Problem tritt in der Funktion polkit_system_bus_name_get_creds_sync() auf, die die IDs (uid und pid) des Prozesses abruft, der die Erhöhung der Berechtigungen anfordert. Der Prozess wird von Polkit ĂŒber die Zuweisung eines einzigartigen Namens im DBus identifiziert, der spĂ€ter zur ĂberprĂŒfung der Berechtigungen verwendet wird. Wenn der Prozess sich vor dem Start des Handlers polkit_system_bus_name_get_creds_sync vom dbus-daemon trennt, erhĂ€lt der Handler anstelle des einzigartigen Namens einen Fehlercode.
Die Schwachstelle wird dadurch verursacht, dass der zurĂŒckgegebene Fehlercode nicht ordnungsgemÀà verarbeitet wird und die Funktion polkit_system_bus_name_get_creds_sync() TRUE anstelle von FALSE zurĂŒckgibt, obwohl sie den Prozess nicht mit uid/pid abgleichen und die angeforderten Berechtigungen ĂŒberprĂŒfen konnte. Der Code, von dem die Funktion polkit_system_bus_name_get_creds_sync() aufgerufen wurde, geht davon aus, dass die ĂberprĂŒfung erfolgreich war und die Anfrage zur Erhöhung der Berechtigungen von root und nicht von einem privilegierten Nutzer kam, was es ermöglicht, privilegierte Aktionen ohne zusĂ€tzliche Authentifizierung und BestĂ€tigung der Berechtigungen auszufĂŒhren.
Quelle: opennet.ru
