В утилитата , използвана за организиране на изпълнението на команди от името на други потребители, (), която позволява изпълнение на команди с права 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
Проблемът е решен в изданието . Поправката е достъпна и под формата на . В дистрибутивите уязвимостта вече е отстранена в , , , , и . В момента на написването на новината проблемът остава неизправен в и . Уязвимостта е установена от изследователи на сигурността от компанията Apple.
Източник: opennet.ru
