Эксперт Apple Information Security Джо Венникс обнаружил в sudo уязвимость, которой был присвоен идентификатор CVE-2019-14287. К счастью, проблема не проявляется при стандартных настройках конфигурации, то есть большинство пользователей Linux-систем в безопасности.
Объяснить суть проблемы проще всего на примере. Баг связан с использованием правил /etc/sudoers, которые разрешают выполнение определенной команды от лица любого другого пользователя (используя его UID), кроме root. К примеру, пользователь bob как sudoer на сервере mybox может запускать текстовый редактор Vi от имени любого пользователя, кроме root:
mybox bob = (ALL, !root) /usr/bin/vi
Однако если воображаемый Боб воспользуется -u#-1, он сможет обойти это ограничение и запустит Vi от имени root :
sudo -u#-1 vi
По сути, для эксплуатации проблемы нужно попытаться выполнить команду с UID «-1» или «4294967295», что приведет к ее выполнению с UID 0. Дело в том, что применением -u#-1 не приводит к смене UID. Так как sudo уже выполняется как root, вместо смены UID целевая команда тоже запускается с правами root.
Венникс рекомендует пользователям обновить sudo до версии 1.8.28, выпущенной на этой неделе, где значение «-1» уже не принимается. Патч для этой проблемы уже доступен, и уязвимость устранена во всех основных дистрибутивах, включая Debian, Arch Linux, SUSE/openSUSE, Ubuntu, Gentoo и FreeBSD.