A Polkit sebezhetősége, amely lehetővé teszi jogosultságai kiterjesztését a rendszerben

Sebezhetőséget (CVE-2021-3560) azonosítottak a Polkit összetevőben, amelyet a disztribúciókban használnak, hogy lehetővé tegyék a jogosulatlan felhasználók számára olyan műveletek végrehajtását, amelyek magasabb szintű hozzáférési jogokat igényelnek (például USB-meghajtó csatlakoztatása), amely lehetővé teszi a helyi felhasználók számára root jogokat szerezni a rendszerben. A sérülékenységet a Polkit 0.119-es verziója javította.

A probléma a 0.113-as kiadás óta fennáll, de sok disztribúció, köztük az RHEL, az Ubuntu, a Debian és a SUSE, az érintett funkciókat a régebbi Polkit-kiadásokon alapuló csomagokba vitte vissza (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 nyilvánul meg, amely beszerzi a jogosultságemelést kérő folyamat azonosítóit (uid és pid). A Polkit úgy azonosítja a folyamatot, hogy egyedi nevet rendel a DBus-ban, amelyet azután a jogosultságok ellenőrzésére használ. Ha egy folyamat közvetlenül a polkit_system_bus_name_get_creds_sync kezelő indulása előtt szakad meg a dbus-démontól, akkor a kezelő egyedi név helyett hibakódot kap.

A sérülékenységet az okozza, hogy a visszaküldött hibakód feldolgozása nem megfelelő, és a polkit_system_bus_name_get_creds_sync() függvény FALSE helyett TRUE értéket ad vissza, annak ellenére, hogy nem sikerült a folyamatot az uid/pid-hez illeszteni, és nem ellenőrizni a folyamathoz kért jogosultságokat. A kód, amelyből a polkit_system_bus_name_get_creds_sync() függvény meghívásra került, feltételezi, hogy az ellenőrzés sikeres volt, és a jogosultságok kiterjesztésére irányuló kérés a root-tól érkezett, nem pedig egy jogosultság nélküli felhasználótól, ami lehetővé teszi, hogy kiváltságos műveleteket hajtsanak végre további hitelesítés és hitelesítési adatok ellenőrzése nélkül.

Forrás: opennet.ru

Hozzászólás