Polkit-haavoittuvuus, jonka avulla voit laajentaa oikeuksiasi järjestelmässä

Haavoittuvuus (CVE-2021-3560) on tunnistettu Polkit-komponentissa, jota käytetään jakeluissa sallimaan etuoikeutettujen käyttäjien suorittaa toimintoja, jotka edellyttävät korotettuja käyttöoikeuksia (esimerkiksi USB-aseman asentaminen), mikä mahdollistaa paikallisen käyttäjän saada pääoikeudet järjestelmään. Haavoittuvuus on korjattu Polkit-versiossa 0.119.

Ongelma on esiintynyt julkaisusta 0.113 lähtien, mutta monet jakelut, mukaan lukien RHEL, Ubuntu, Debian ja SUSE, ovat siirtäneet ongelmalliset toiminnot paketteihin, jotka perustuvat vanhempiin Polkit-julkaisuihin (pakettien korjaukset ovat jo saatavilla jakeluissa).

Ongelma ilmenee polkit_system_bus_name_get_creds_sync()-funktiossa, joka hankkii käyttöoikeuksien korotusta pyytävän prosessin tunnisteet (uid ja pid). Polkit tunnistaa prosessin antamalla DBusissa yksilöllisen nimen, jota käytetään sitten oikeuksien tarkistamiseen. Jos prosessi katkaisee yhteyden dbus-daemoniin juuri ennen kuin polkit_system_bus_name_get_creds_sync-käsittelijä käynnistyy, käsittelijä saa virhekoodin yksilöllisen nimen sijaan.

Haavoittuvuus johtuu siitä, että palautettua virhekoodia ei ole käsitelty oikein ja funktio polkit_system_bus_name_get_creds_sync() palauttaa arvon TRUE FALSE:n sijaan, vaikka prosessia ei ole sovitettu uid/pid-arvoon ja että prosessille pyydettyjä oikeuksia ei ole voitu vahvistaa. Koodi, josta polkit_system_bus_name_get_creds_sync()-funktio kutsuttiin, olettaa, että tarkistus onnistui ja pyyntö oikeuksien eskaloimiseksi tuli pääkäyttäjältä, ei oikeudettomalta käyttäjältä, mikä mahdollistaa etuoikeutettujen toimien suorittamisen ilman lisätodennusta ja valtuustietojen tarkistamista.

Lähde: opennet.ru

Lisää kommentti