Sårbarhet i Polkit som gör att du kan eskalera dina privilegier i systemet

En sårbarhet (CVE-2021-3560) har identifierats i Polkit-komponenten, som används i distributioner för att tillåta oprivilegierade användare att utföra åtgärder som kräver förhöjda åtkomsträttigheter (till exempel att montera en USB-enhet), vilket gör att en lokal användare kan få roträttigheter i systemet. Sårbarheten är åtgärdad i Polkit version 0.119.

Problemet har funnits sedan release 0.113, men många distributioner, inklusive RHEL, Ubuntu, Debian och SUSE, har backporterat den påverkade funktionaliteten till paket baserade på äldre Polkit-utgåvor (paketfixar finns redan tillgängliga i distributionerna).

Problemet visar sig i funktionen polkit_system_bus_name_get_creds_sync() som hämtar identifierarna (uid och pid) för processen som begär behörighetshöjning. En process identifieras av Polkit genom att tilldela ett unikt namn i DBus, som sedan används för att verifiera privilegier. Om en process kopplar bort från dbus-daemon precis innan hanteraren polkit_system_bus_name_get_creds_sync startar, får hanteraren en felkod istället för ett unikt namn.

Sårbarheten orsakas av det faktum att den returnerade felkoden inte är korrekt bearbetad och polkit_system_bus_name_get_creds_sync()-funktionen returnerar TRUE istället för FALSE, trots att den inte kan matcha processen med uid/pid och verifiera de privilegier som efterfrågas för processen. Koden från vilken funktionen polkit_system_bus_name_get_creds_sync() anropades förutsätter att kontrollen lyckades och att begäran om att eskalera privilegier kom från root och inte från en oprivilegierad användare, vilket gör det möjligt att utföra privilegierade åtgärder utan ytterligare autentisering och verifiering av autentiseringsuppgifter.

Källa: opennet.ru

Lägg en kommentar