Через уязвимость в sudo можно получить root-права

Утилита Sudo даёт выполнять команды от имени других пользователей. Недавно в ней выявили уязвимость CVE-2019-14287, которая даёт выполнять команды с root-правами при запрете на их запуск.

Как это работает?

Уязвимость работает, если в настройках sudoers правил в секции проверки идентификатора пользователя после слова “ALL” есть запрет запуска с root-правами (“… (ALL, !root) …”). По умолчанию уязвимость никак не проявляется, а работает при редких на практике условиях. Всё работает, если выполнять команду под UID пользователя без 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-правами..

Когда пофиксят?

Уже пофиксили. Проблему устранили в Sudo 1.8.28. Из дистрибутивов уже исправлено в Debian, Arch Linux, SUSE/openSUSE, Ubuntu, Gentoo и FreeBSD.

P.S. А нашли баг ребята из Apple.

Залишити відповідь

Дякуємо, що поділились