Zraniteľnosť PolKit umožnila získať prístup root na väčšine distribúcií Linuxu

Nedávno Qualy's zverejnil správu, že identifikovala zraniteľnosť (CVE-2021-4034) en systémový komponent polkit (predtým PolicyKit), ktorý sa používa v distribúciách, aby umožnil neprivilegovaným používateľom vykonávať akcie vyžadujúce zvýšené prístupové práva.

Zraniteľnosť umožňuje neprivilegovanému lokálnemu užívateľovi povýšiť svoje privilégiá na užívateľa root a získať plnú kontrolu nad systémom. Problém má kódové označenie PwnKit a je pozoruhodný tým, že produkuje pracovný exploit, ktorý beží v predvolených nastaveniach na väčšine distribúcií Linuxu.

Je to spomenuté problém existuje v obslužnom programe pkexec, ktorý je súčasťou PolKitu, ktorý sa dodáva s koreňovým príznakom SUID a je určený na vykonávanie príkazov s oprávneniami iných používateľov podľa pravidiel PolKit.

Kvôli nesprávnemu spracovaniu argumentov z príkazového riadku odovzdaný do pkexec, a neprivilegovaný používateľ by mohol obísť autentifikáciu a spustiť váš kód ako rootbez ohľadu na stanovené pravidlá prístupu. Pre útok, bez ohľadu na to, aké nastavenia a obmedzenia sú v PolKite nastavené, stačí, aby bol pomocou utility pkexec nastavený koreňový atribút SUID pre spustiteľný súbor.

Pkexec nekontroluje správnosť z počtu argumentov príkazového riadka (argc) odovzdaných pri spustení procesu. Vývojári pkexec predpokladali, že prvá položka v poli argv vždy obsahuje názov procesu (pkexec) a druhá položka je buď NULL alebo názov príkazu vykonávaného cez pkexec.

Keďže počet argumentov sa neporovnával so skutočným obsahom poľa a predpokladalo sa, že je vždy väčší ako 1, ak procesu bolo odovzdané prázdne pole argv, čo funkcia Linux execve umožňuje, pkexec považoval NULL za prvý argument ( proces názov) a nasledujúci po out of buffer memory, ako ďalší obsah poľa.

Problém je v tom, že po poli argv v pamäti je pole envp, ktoré obsahuje premenné prostredia. Pri prázdnom poli argv teda pkexec extrahuje údaje o príkaze, ktorý sa vykonáva so zvýšenými oprávneniami, z prvého prvku poľa s premennými prostredia (argv[1] sa stal identickým s envp[0]), ktorého obsah možno ovládať útočník.

Po prijatí hodnoty argv[1] sa pkexec pokúsi určiť úplnú cestu k spustiteľnému súboru pomocou ciest k súboru v PATH a zapíše ukazovateľ na reťazec s úplnou cestou späť na argv[1], čo vedie k prepísaniu hodnoty. aj prvej premennej prostredia, pretože argv[1] je identické s envp[0]. Manipuláciou s názvom prvej premennej prostredia môže útočník nahradiť inú premennú prostredia v pkexec, napríklad nahradiť premennú prostredia „LD_PRELOAD“, ktorá nie je povolená v suid programoch, a nechať proces načítať svoju zdieľanú knižnicu v procese. .

Pracovný exploit používa substitúciu premennej GCONV_PATH, ktorý sa používa na určenie cesty ku knižnici transkódovania symbolov, ktorá sa dynamicky načítava pri volaní funkcie g_printerr(), ktorá vo svojom kóde používa iconv_open().

Predefinovaním cesty v GCONV_PATH sa útočníkovi podarí načítať nie normálnu knižnicu iconv, ale svoju vlastnú knižnicu, ktorej ovládače sa spustia počas chybového hlásenia vo fáze, keď pkexec stále beží ako root a pred overením povolení na spustenie.

Poznamenáva sa, že hoci problém je spôsobený poškodením pamäte, dá sa spoľahlivo a opakovane zneužiťbez ohľadu na použitú hardvérovú architektúru.

Využitie pripravené úspešne testované na Ubuntu, Debiane, Fedore a CentOS, ale dá sa použiť aj na iných distribúciách. Pôvodný exploit ešte nie je verejne dostupný, čo naznačuje, že je triviálny a iní výskumníci ho môžu ľahko znovu vytvoriť, takže je dôležité čo najskôr nainštalovať aktualizáciu rýchlej opravy na systémy s viacerými používateľmi.

Polkit je dostupný aj pre systémy BSD a Solaris, ale jeho využitie nebolo preskúmané. Je známe, že útok nemožno vykonať na OpenBSD, pretože jadro OpenBSD neumožňuje odovzdanie hodnoty null argc pri volaní execve().

Problém je od mája 2009, keď bol pridaný príkaz pkexec. Oprava zraniteľnosti v PolKite je stále dostupná ako oprava (verzia opravy nebola vytvorená), ale keďže vývojári distribúcie boli na problém upozornení vopred, väčšina distribúcií vydala aktualizáciu súčasne. informácií o zraniteľnosti.

Konečne ak máte záujem dozvedieť sa o tom viac, môžete skontrolovať podrobnosti v nasledujúci odkaz.


Zanechajte svoj komentár

Vaša e-mailová adresa nebude zverejnená. Povinné položky sú označené *

*

*

  1. Zodpovedný za údaje: Miguel Ángel Gatón
  2. Účel údajov: Kontrolný SPAM, správa komentárov.
  3. Legitimácia: Váš súhlas
  4. Oznamovanie údajov: Údaje nebudú poskytnuté tretím stranám, iba ak to vyplýva zo zákona.
  5. Ukladanie dát: Databáza hostená spoločnosťou Occentus Networks (EU)
  6. Práva: Svoje údaje môžete kedykoľvek obmedziť, obnoviť a vymazať.