Recientemente zraniteľnosť bola odhalená v obslužnom programe sudo (používa sa na organizovanie udeľovania administračných práv k jednému programu alebo na vykonávanie príkazov v mene iných používateľov), katalogizované ako „CVE-2019 18634,", , ktorý vám umožní zvýšiť vaše privilégiá v systéme pre užívateľa root.
Problém bol zistený od vydania sudo verzie 1.7.1 až do verzie 1.8.29 ktorá dá sa to zneužiť iba pri použití možnosti „pwfeedback“ v súbore / etc / sudoers, ktorý je v novších verziách sudo predvolene zakázaný, ale je aktivovaný v niektorých distribúciách, ako sú Linux Mint a Elementary OS.
Voľba „pwfeedback“ umožňuje zobraziť znak „*“ po zadaní každého znaku pri zadávaní hesla.
Z dôvodu chyby pri implementácii funkcie getln () definované v súbore tgetpass.c pod štandardnou vstupnou sekvenciou (stdin), príliš dlhý riadok s heslom sa nemusí zmestiť do pridelenej medzipamäte a prepísať ďalšie údaje v zásobníku. K pretečeniu dochádza pri spustení sudo kódu s oprávneniami root.
Podstata problému je, že keď sa používa špeciálny znak ^ U počas procesu zadávania (vymazanie riadku) a keď operácia zápisu zlyhá, kód zodpovedný za vymazanie výstupných znakov „*“ vynuluje údaje o veľkosti dostupnej vyrovnávacej pamäte, ale nevráti ukazovateľ na pôvodnú hodnotu aktuálnej polohy vo vyrovnávacej pamäti.
Ďalším faktorom, ktorý prispieva k prevádzke, je chýbajúce automatické vypnutie režimu pwfeedback. keď dáta nie sú prijímané z terminálu, ale cez vstupný tok (táto chyba umožňuje vytvoriť podmienky pre chybu záznamu, napríklad v systémoch s nepomenovanými jednosmernými kanálmi sa vyskytne chyba pri pokuse o zaznamenanie konca kanálu na čítanie).
vzhľadom na to, že útočník môže plne ovládať prepisovanie údajov v zásobníku, nie je ťažké vytvoriť exploit, ktorý vám umožní zvýšiť vaše oprávnenie pre užívateľa root.
Problém môže využiť každý používateľ, bez ohľadu na práva na používanie sudo a prítomnosť používateľských nastavení v sudoers.
Užívateľ s oprávnením sudo môže skontrolovať, či «pwfeedback»Je povolené spustením:
sudo -l
Áno "pwfeedback»Zobrazí sa vo výstupe« Zodpovedajúce vstupy predvolených hodnôt », konfigurácia sudoers vyzerá dotknuto. V nasledujúcom príklade je konfigurácia sudoers je zraniteľný:
sudo -l Matching Defaults entries for “USER” on linux-build: insults, pwfeedback, mail_badpass, mailerpath=/usr/sbin/sendmail
Používateľ USER môže v systéme linux-build spustiť nasledujúce príkazy:
(ALL: ALL) ALL
O chybe sa vysvetľuje, že chybu je možné zneužiť bez potreby povolení sudo, vyžaduje to iba to pwfeedback je umožnené. Chyba sa dá reprodukovať prechodom veľkého vstupu do sudo potrubím, keď žiada o heslo.
Napríklad:
perl -e 'print(("A" x 100 . "\x{00}") x 50)' | sudo -S id Password: Segmentation faultK tejto zraniteľnosti prispievajú dve chyby:
-
Voľba „pwfeedback“ nie je ignorovaná, ako by mala byť, pri čítaní z iného zdroja ako z koncového zariadenia. Kvôli nedostatku terminálu zostáva uložená verzia znaku na vymazanie riadku na svojej inicializovanej hodnote 0.
-
Kód, ktorý vymaže riadok s hviezdičkami, neresetuje správne polohu medzipamäte, ak dôjde k chybe pri zápise, ale resetuje zostávajúcu dĺžku medzipamäte. Vo výsledku môže funkcia getln () písať za koniec medzipamäte.
konečne, problém je údajne opravený vo verzii sudo 1.8.31, zverejnené pred pár hodinami. Aj keď ide o distribúcie, zraniteľnosť zostáva neopravená tak to sú požiadaní používatelia postihnutých distribúcií alebo že zistia, že konfigurácia pwfeedback je v spise / Etc / sudoers, aktualizovať na novú verziu sudo.
Je to spomenuté blokovať problém, najdôležitejšia vec je, že musíte overiť, či konfigurácia /pwfeedback nie v / Etc / sudoers a ak je to potrebné, musí sa deaktivovať.
Fuente: https://www.openwall.com