In de Polkit-component, die wordt gebruikt in distributies om niet-bevoorrechte gebruikers in staat te stellen acties uit te voeren die verhoogde toegangsrechten vereisen (zoals het monteren van USB-opslag), is een kwetsbaarheid (CVE-2021-3560) ontdekt die een lokale gebruiker in staat stelt rootrechten in het systeem te verkrijgen. De kwetsbaarheid is verholpen in versie Polkit 0.119.
Het probleem doet zich voor vanaf release 0.113, maar veel distributies, waaronder RHEL, Ubuntu, Debian en SUSE, hebben de kwetsbare functionaliteit gebackporteerd naar pakketten op basis van oudere releases van Polkit (de patches zijn al beschikbaar in de distributies).
Het probleem doet zich voor in de functie polkit_system_bus_name_get_creds_sync(), die de identificatoren (uid en pid) van het proces ophaalt dat om verhoogde bevoegdheden vraagt. Het proces wordt door Polkit geĆÆdentificeerd via een unieke naam die aan DBus is toegekend, die vervolgens wordt gebruikt voor het controleren van bevoegdheden. Als het proces zich voor de daadwerkelijke uitvoering van de polkit_system_bus_name_get_creds_sync-handler loskoppelt van de dbus-daemon, ontvangt de handler in plaats van de unieke naam een foutcode.
De kwetsbaarheid wordt veroorzaakt doordat de geretourneerde foutcode niet goed wordt afgehandeld en de functie polkit_system_bus_name_get_creds_sync() de waarde TRUE retourneert in plaats van FALSE, ondanks dat het niet in staat was het proces te koppelen aan uid/pid en de voor het proces aangevraagde bevoegdheden te verifiƫren. De code vanuit waar de functie polkit_system_bus_name_get_creds_sync() werd aangeroepen, denkt dat de controle succesvol is uitgevoerd en dat het verzoek om verhoogde bevoegdheden van root kwam, en niet van een niet-bevoorrechtte gebruiker, wat de mogelijkheid biedt om bevoegde acties uit te voeren zonder aanvullende authenticatie en bevestiging van bevoegdheden.
Bron: opennet.ru
