Polkit ievainojamība, kas ļauj palielināt savas privilēģijas sistēmā

Ievainojamība (CVE-2021-3560) ir identificēta komponentā Polkit, kas tiek izmantots izplatījumos, lai ļautu nepievilcīgiem lietotājiem veikt darbības, kurām nepieciešamas paaugstinātas piekļuves tiesības (piemēram, USB diska pievienošana), kas ļauj vietējam lietotājam iegūt saknes tiesības sistēmā. Ievainojamība ir novērsta Polkit versijā 0.119.

Problēma pastāv kopš izlaiduma 0.113, taču daudzi izplatījumi, tostarp RHEL, Ubuntu, Debian un SUSE, ir pārveduši ietekmēto funkcionalitāti pakotnēs, kuru pamatā ir vecāki Polkit laidieni (izplatījumos jau ir pieejami pakotņu labojumi).

Problēma izpaužas funkcijā polkit_system_bus_name_get_creds_sync(), kas iegūst privilēģiju palielināšanas pieprasījuma procesa identifikatorus (uid un pid). Polkit identificē procesu, DBus piešķirot unikālu nosaukumu, ko pēc tam izmanto privilēģiju pārbaudei. Ja process atvienojas no dbus-daemon tieši pirms polkit_system_bus_name_get_creds_sync apdarinātāja palaišanas, apdarinātājs saņem kļūdas kodu, nevis unikālu nosaukumu.

Ievainojamību izraisa fakts, ka atgrieztais kļūdas kods nav pareizi apstrādāts un funkcija polkit_system_bus_name_get_creds_sync() atgriež TRUE, nevis FALSE, lai gan tā nevar saskaņot procesu ar uid/pid un pārbaudīt procesam pieprasītās privilēģijas. Kodā, no kura tika izsaukta funkcija polkit_system_bus_name_get_creds_sync(), tiek pieņemts, ka pārbaude bija veiksmīga un pieprasījums par privilēģiju eskalāciju nāca no root, nevis no nepriviliģēta lietotāja, kas ļauj veikt priviliģētas darbības bez papildu autentifikācijas un akreditācijas datu pārbaudes.

Avots: opennet.ru

Pievieno komentāru