45

Уязвимость в 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. На момент написания новости проблема остаётся неисправленной в RHEL, Fedora, и FreeBSD. Уязвимость выявлена исследователями безопасности из компании Apple.

Дубликаты не найдены

+6

sudo make me a sandwich

раскрыть ветку 6
+3

Compilation error

раскрыть ветку 1
+1
-4

[слышится хруст костей ApteryxHaastii из которого делают сендвич]

Английский - он такой, падежей не имеет :)
раскрыть ветку 3
+4
Иллюстрация к комментарию
0

Автор штуки, в отличие от тебя, знал английский.

И падежи в английском есть, местами.

раскрыть ветку 1
0

не знал что sudo такая глючная


с 1999 года 432 версии +- было выпущено

Иллюстрация к комментарию
0

Так это фича)

А гента и не такое позволяет, если сам собрал)))
раскрыть ветку 6
0

Еще как позволяет!

Собирал САМ!

Версия sudo 1.8.27-r1

Иллюстрация к комментарию
раскрыть ветку 5
+1

Я, думал, я один ебанутый.

раскрыть ветку 4
0

Так где говорите не исправлена? Спасибо за подробное описание ))

раскрыть ветку 1
0
Иллюстрация к комментарию
-1

Баян вчерашний! Было в oss-security

-3

Что-то мне подсказывает, уязвимость позволяет зайти под любого пользователя, не только под рута. Грубо говоря, не требует этого крайне редкого правила, ей достаточно любого отрицания в правиле. А чтобы посмотреть правило, достаточно как раз таки умолчания, по-дефолту наверняка файл с правилами даёт право на чтение всем (никогда не понимал этого дефолта).

Похожие посты
Похожие посты не найдены. Возможно, вас заинтересуют другие посты по тегам: