Chyba zabezpečení PolKit umožnila získat přístup root na většině distribucí Linuxu

Nedávno Qualy's zveřejnil zprávu, že identifikoval zranitelnost (CVE-2021-4034) en součást systému polkit (dříve PolicyKit), který se používá v distribucích, aby umožnil neprivilegovaným uživatelům provádět akce, které vyžadují zvýšená přístupová práva.

Zranitelnost umožňuje nepřivilegovanému místnímu uživateli povýšit svá oprávnění na uživatele root a získat plnou kontrolu nad systémem. Problém má kódové označení PwnKit a je pozoruhodný tím, že vytváří pracovní exploit, který běží ve výchozím nastavení na většině distribucí Linuxu.

Je to zmíněno problém existuje v obslužném programu pkexec, který je součástí PolKitu, který je dodáván s kořenovým příznakem SUID a je navržen pro spouštění příkazů s oprávněními ostatních uživatelů podle pravidel PolKit.

Kvůli špatnému zacházení s argumenty z příkazového řádku předaný pkexec, a neprivilegovaný uživatel by mohl obejít ověřování a nechat svůj kód spustit jako root, bez ohledu na stanovená pravidla přístupu. Pro útok, bez ohledu na to, jaká nastavení a omezení jsou v PolKitu nastavena, stačí, aby byl u spustitelného souboru pomocí utility pkexec nastaven kořenový atribut SUID.

Pkexec nekontroluje správnost z počtu argumentů příkazového řádku (argc) prodaných při spouštění procesu. Vývojáři pkexec předpokládali, že první položka v poli argv vždy obsahuje název procesu (pkexec) a druhá položka je buď NULL, nebo název příkazu prováděného prostřednictvím pkexec.

Vzhledem k tomu, že počet argumentů nebyl porovnáván se skutečným obsahem pole a předpokládalo se, že je vždy větší než 1, pokud bylo procesu předáno prázdné pole argv, což Linuxová funkce execve umožňuje, pkexec považoval NULL za první argument ( proces name) a další po out of buffer memory, jako další obsah pole.

Problém je v tom, že za polem argv v paměti je pole envp, které obsahuje proměnné prostředí. S prázdným polem argv tedy pkexec extrahuje data o příkazu prováděném se zvýšenými oprávněními z prvního prvku pole s proměnnými prostředí (argv[1] se stal identickým s envp[0]), jehož obsah lze ovládat pomocí útočníka.

Po obdržení hodnoty argv[1] se pkexec pokusí určit úplnou cestu ke spustitelnému souboru pomocí cest k souboru v PATH a zapíše ukazatel na řetězec s úplnou cestou zpět na argv[1], což vede k přepsání hodnoty. také první proměnné prostředí, protože argv[1] je identické s envp[0]. Manipulací s názvem první proměnné prostředí může útočník nahradit jinou proměnnou prostředí v pkexec, například nahradit proměnnou prostředí „LD_PRELOAD“, což není v suid programech povoleno, a nechat proces načíst svou sdílenou knihovnu v procesu. .

Pracovní exploit používá substituci proměnné GCONV_PATH, který se používá k určení cesty ke knihovně překódování symbolů, která se dynamicky načítá při volání funkce g_printerr(), která ve svém kódu používá iconv_open().

Předefinováním cesty v GCONV_PATH se útočníkovi podaří načíst nikoli normální knihovnu iconv, ale svou vlastní knihovnu, jejíž ovladače budou spuštěny během chybové zprávy ve fázi, kdy pkexec stále běží jako root a před ověřením oprávnění ke spuštění.

Je pozorováno, že ačkoli je problém způsoben poškozením paměti, lze jej spolehlivě a opakovaně zneužítbez ohledu na použitou hardwarovou architekturu.

Exploze byla připravena úspěšně testováno na Ubuntu, Debianu, Fedoře a CentOS, ale lze jej použít i na jiných distribucích. Původní exploit zatím není veřejně dostupný, což naznačuje, že je triviální a může být snadno znovu vytvořen jinými výzkumníky, takže je důležité nainstalovat aktualizaci hotfix co nejdříve na systémy pro více uživatelů.

Polkit je také dostupný pro systémy BSD a Solaris, ale nebyl prozkoumán pro využití. Je známo, že útok nelze provést na OpenBSD, protože jádro OpenBSD neumožňuje předání hodnoty null argc při volání execve().

Problém trvá od května 2009, kdy byl přidán příkaz pkexec. Oprava chyby zabezpečení v PolKitu je stále k dispozici jako oprava (verze opravy nebyla vytvořena), ale protože vývojáři distribuce byli na problém upozorněni předem, většina distribucí vydala aktualizaci ve stejnou dobu. informací o zranitelnosti.

Konečně pokud máte zájem o tom vědět více, můžete zkontrolovat podrobnosti v následující odkaz.


Zanechte svůj komentář

Vaše e-mailová adresa nebude zveřejněna. Povinné položky jsou označeny *

*

*

  1. Odpovědný za údaje: Miguel Ángel Gatón
  2. Účel údajů: Ovládací SPAM, správa komentářů.
  3. Legitimace: Váš souhlas
  4. Sdělování údajů: Údaje nebudou sděleny třetím osobám, s výjimkou zákonných povinností.
  5. Úložiště dat: Databáze hostovaná společností Occentus Networks (EU)
  6. Práva: Vaše údaje můžete kdykoli omezit, obnovit a odstranit.