Через уязвимость в 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.