zranitelnost sudo root ovlivňující Linux Mint a Elementary OS

V obslužném programu sudo, který se používá k organizaci provádění příkazů jménem jiných uživatelů, identifikované zranitelnost (CVE-2019-18634), což vám umožní zvýšit vaše oprávnění v systému pro uživatele root. Problém se objevuje pouze od vydání sudo 1.7.1 při použití možnosti „pwfeedback“ v souboru /etc/sudoers, která je ve výchozím nastavení zakázána, ale povolena na některých distribucích, jako je Linux Mint a Elementary OS. Problém opraven ve vydání sudo 1.8.31, zveřejněné před několika hodinami. Tato chyba zabezpečení zůstává v distribučních sadách neopravena.

Možnost „pwfeedback“ umožňuje zobrazení znaku „*“ za každým zadaným znakem při zadávání hesla. Kvůli Chyby Při implementaci funkce getln() definované v souboru tgetpass.c se příliš velký řetězec hesel předaný standardním vstupním proudem (stdin) za určitých podmínek nemusí vejít do přidělené vyrovnávací paměti a přepsat jiná data v zásobníku. K přetečení dochází při spuštění kódu sudo jako root.

Podstatou problému je, že při použití speciálního znaku ^U (vymazání řádku) během vstupu a pokud operace zápisu selže, kód zodpovědný za vymazání výstupních znaků „*“ resetuje data o dostupné velikosti vyrovnávací paměti, ale ne vraťte ukazatel na aktuální pozici počáteční hodnoty ve vyrovnávací paměti. Dalším faktorem přispívajícím k využití je absence automatického vypnutí režimu „pwfeedback“, když data nepřicházejí z terminálu, ale prostřednictvím vstupního toku (tato chyba umožňuje vytvářet podmínky pro to, aby došlo k chybě záznamu, například na systémech s jednosměrný nepojmenované kanály dojde k chybě při pokusu o zápis na konec čteného kanálu).

Vzhledem k tomu, že útočník má úplnou kontrolu nad přepisováním dat na zásobníku, není obtížné vytvořit exploit, který mu umožní eskalovat jeho oprávnění na root. Problém může zneužít kterýkoli uživatel, bez ohledu na oprávnění sudo nebo nastavení specifická pro uživatele v sudoers. Chcete-li problém zablokovat, měli byste se ujistit, že v /etc/sudoers není žádné nastavení „pwfeedback“, a pokud je to nutné, zakázat jej („Výchozí !pwfeedback“). Chcete-li zkontrolovat, zda došlo k problému, můžete spustit kód:

$ perl -e 'print(("A" x 100 . "\x{00}") x 50)' | sudo -S id
Heslo: Chyba segmentace

Zdroj: opennet.ru

Přidat komentář