Уязвимост в sudo, позволяваща повишаване на правата при използване на специфични правила

В утилитата Sudo, използвана за организиране на изпълнението на команди от името на други потребители, е открита уязвимост (CVE-2019-14287), която позволява изпълнение на команди с права root, при наличие в настройките sudoers правила, в които в секцията за проверка идентификатора на потребителя след разрешителното ключово слово «ALL» има явна забрана за стартиране с права root («… (ALL, !root) …»). В конфигурациите по подразбиране в дистрибутивите уязвимостта не се проявява.

При наличие в sudoers на допустими, но много рядко срещащи се на практика правила, разрешаващи изпълнението на определена команда под UID-идентификатор на всеки потребител, освен root, атакуващият, имащ правомощия да изпълнява тази команда, може да заобиколи установеното ограничение и да изпълни командата с права root. За заобикалянето на ограничението е достатъчно да се опита да се изпълни указаната в настройките команда с UID «-1» или «4294967295», което ще доведе до нейното изпълнение с UID 0.

Например, ако в настройките има правило, което позволява на всеки потребител правото да изпълнява програмата /usr/bin/id под всякакъв UID:

myhost ALL = (ALL, !root) /usr/bin/id

или вариант, който разрешава изпълнението само на конкретния потребител bob:

myhost bob = (ALL, !root) /usr/bin/id

Потребителят може да изпълни «sudo -u ‘#-1’ id» и утилитата /usr/bin/id ще бъде стартирана с права root, въпреки явната забрана в настройките. Проблемът е причинен от пренебрегването на специалните стойности «-1» или «4294967295», които не довеждат до смяна на UID, но тъй като самото sudo вече се изпълнява под root, без смяна на UID и целевата команда също се стартира с права root.

В дистрибутивите SUSE и openSUSE без указание в правилото «NOPASSWD» уязвимостта не е експлоатируема, тъй като в sudoers по подразбиране е включен режим «Defaults targetpw», при който се извършва проверка на UID по база пароли с извеждане на запитване за въвеждане на парола на целевия потребител. За подобни системи атаката може да бъде извършена само при наличие на правила от вида:

myhost ALL = (ALL, !root) NOPASSWD: /usr/bin/id

Проблемът е решен в изданието Sudo 1.8.28. Поправката е достъпна и под формата на пач. В дистрибутивите уязвимостта вече е отстранена в Debian, Arch Linux, SUSE/openSUSE, Ubuntu, Gentoo и FreeBSD. В момента на написването на новината проблемът остава неизправен в RHEL и Fedora. Уязвимостта е установена от изследователи на сигурността от компанията Apple.

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

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