Lỗ hổng trong sudo cho phép leo thang đặc quyền khi sử dụng các quy tắc cụ thể

Trong tiện ích Sudo, được sử dụng để tổ chức thực hiện các lệnh thay mặt cho người dùng khác, xác định sự dễ bị tổn thương (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.

Nguồn: opennet.ru

Thêm một lời nhận xét