A Polkit komponensében, amelyet a disztribúciók a nem privilégiumos felhasználók által végrehajtandó, fokozott jogosultságokat igénylő műveletek (például USB-meghajtó csatlakoztatás) kezelésére használnak, egy sebezőséget (CVE-2021-3560) azonosítottak, amely lehetővé teszi a helyi felhasználók számára, hogy root jogokat szerezzenek a rendszerben. A sebezőséget a Polkit 0.119-es verziójában javították.
A probléma a 0.113-as verzió kiadásától kezdve jelentkezik, de sok disztribúció, beleértve a RHEL-t, az Ubuntut, a Debiant és a SUSE-t, hátrafelé kompatibilis funkciókat adtak a régebbi Polkit kiadások alapú csomagokhoz (a csomagjavítások már elérhetők a disztribúciókban).
A probléma a polkit_system_bus_name_get_creds_sync() függvényben jelentkezik, amely a megnövelt privilégiumokat kérő folyamat azonosítóit (uid és pid) szerzi meg. A folyamatot a Polkit egy egyedi név hozzárendelésével azonosítja a DBus-on, amelyet ezután a privilégiumok ellenőrzésére használnak. Ha a folyamat leválik a dbus-daemon-ról közvetlenül a polkit_system_bus_name_get_creds_sync kezelője elé, akkor a kezelő az egyedi név helyett hiba kódot kap.
A sebezőség abból adódik, hogy a visszaadott hiba kódot nem dolgozzák fel megfelelően, és a polkit_system_bus_name_get_creds_sync() függvény TRUE értéket ad vissza a FALSE helyett, annak ellenére, hogy nem tudta párosítani a folyamatot a uid/pid-jével és ellenőrizni a folyamathoz kért privilégiumokat. Az a kód, amelyből a polkit_system_bus_name_get_creds_sync() függvényt hívták, azt feltételezi, hogy az ellenőrzés sikeresen megtörtént, és a privilégiumemelés kérése a root-tól érkezett, nem pedig egy nem privilégióval rendelkező felhasználótól, ami lehetőséget ad a privilégiumos műveletek végrehajtására további hitelesítés és jogosultságok megerősítése nélkül.
Forrás: opennet.ru
