Root уязвимост в sudo, засягаща Linux Mint и Elementary OS

В утилитата sudo, използвана за организиране на изпълнението на команди от името на други потребители, е открита уязвимост (CVE-2019-18634), позволяваща да повишите привилегиите си в системата до потребител root. Проблемът се проявява от версия sudo 1.7.1 само при използване на опцията „pwfeedback“ във файла \/etc\/sudoers, която е деактивирана по подразбиране, но активирана в някои дистрибуции, като Linux Mint и Elementary OS. Проблемът е отстранен в издаването sudo 1.8.31, публикувано преди няколко часа. В дистрибуциите уязвимостта все още остава неизправена.

Опцията „pwfeedback“ включва показването на символа „*“ след всеки въведен символ при въвеждане на парола. Поради грешка в реализацията на функцията getln(), дефинирана в файла tgetpass.c, предадената през стандартния входен поток (stdin) твърде голяма стринг с паролата при определени условия може да не се побере в отделения буфер и да запише други данни в стека. Препълването се появява по време на изпълнението на кода sudo с права root.

Същността на проблема е, че при използването на специален символ ^U (изчистване на реда) по време на въвеждане и при сбой в операцията на запис, кодът, отговарящ за изчистването на показаните символи „*“, нулира информацията за наличния размер на буфера, но не връща в първоначалната стойност указателя на текущата позиция в буфера. Друг фактор, допринасящ за експлоатацията, е липсата на автоматично деактивиране на режима „pwfeedback“ при получаване на данни не от терминала, а през входния поток (тази недостатъчност позволява създаването на условия за възникване на записна грешка, например, в системи с еднопосочни безимени канали грешката възниква при опит за запис над края на канала за четене).

Тъй като атакуващият може изцяло да контролира перезаписването на данни в стека, не представлява трудност създаването на експлоит, позволяващ повишаване на привилегиите до потребител root. Проблемът може да бъде експлоатиран от всеки потребител, независимо от правата за използване на sudo и наличието на специфични за потребителя настройки в sudoers. За блокиране на проблема следва да се уверите, че в \/etc\/sudoers не е настроена опцията „pwfeedback“ и при необходимост да я деактивирате („Defaults !pwfeedback“). За проверка на наличието на проблема може да се изпълни код:

$ perl -e 'print(("A" x 100 . "\x{00}") x 50)' | sudo -S id
Парола: Сегментационна грешка

Източник: opennet.ru

Купете надежден хостинг за сайтове със защита от DDoS, VPS и VDS сървъри 🔥 Купете надежден хостинг за сайтове със защита от DDoS, VPS и VDS сървъри | ProHoster