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

版本中修復的問題 須藤 1.8.28. Исправление также доступно в форме 修補. В дистрибутивах уязвимость уже устранена в Debian, Arch Linux, SUSE/開放SUSE, Ubuntu, Gentoo的 и FreeBSD的. На момент написания новости проблема остаётся неисправленной в RHEL и Fedora. Уязвимость выявлена исследователями безопасности из компании Apple.

來源: opennet.ru

添加評論