Kwetsbaarheid in Polkit waardoor u uw privileges in het systeem kunt escaleren

Er is een kwetsbaarheid (CVE-2021-3560) geïdentificeerd in de Polkit-component, die in distributies wordt gebruikt om gebruikers zonder rechten in staat te stellen acties uit te voeren waarvoor verhoogde toegangsrechten nodig zijn (bijvoorbeeld het koppelen van een USB-station), waardoor een lokale gebruiker rootrechten in het systeem verkrijgen. Het beveiligingslek is opgelost in Polkit versie 0.119.

Het probleem is aanwezig sinds release 0.113, maar veel distributies, waaronder RHEL, Ubuntu, Debian en SUSE, hebben de getroffen functionaliteit teruggezet in pakketten die zijn gebaseerd op oudere Polkit-releases (pakketoplossingen zijn al beschikbaar in de distributies).

Het probleem manifesteert zich in de functie polkit_system_bus_name_get_creds_sync(), die de identificatiegegevens (uid en pid) verkrijgt van het proces dat om uitbreiding van bevoegdheden vraagt. Een proces wordt door Polkit geïdentificeerd door een unieke naam toe te wijzen in DBus, die vervolgens wordt gebruikt om bevoegdheden te verifiëren. Als een proces de verbinding met dbus-daemon verbreekt net voordat de handler polkit_system_bus_name_get_creds_sync start, ontvangt de handler een foutcode in plaats van een unieke naam.

Het beveiligingslek wordt veroorzaakt door het feit dat de geretourneerde foutcode niet correct wordt verwerkt en de functie polkit_system_bus_name_get_creds_sync() TRUE retourneert in plaats van FALSE, ondanks dat het proces niet aan de uid/pid kan worden gekoppeld en de voor het proces gevraagde rechten kunnen worden geverifieerd. De code waaruit de functie polkit_system_bus_name_get_creds_sync() werd aangeroepen, gaat ervan uit dat de controle succesvol was en dat het verzoek om bevoegdheden te escaleren afkomstig was van de root en niet van een gebruiker zonder rechten, wat het mogelijk maakt om bevoorrechte acties uit te voeren zonder aanvullende authenticatie en verificatie van inloggegevens.

Bron: opennet.ru

Voeg een reactie