LINUX.ORG.RU

Уязвимость в sudo

 , ,


4

2

Ошибка в sudo позволяет выполнить от пользователя root любой исполняемый файл, если в /etc/sudoers разрешено его выполнение от других пользователей и запрещено для root.

Эксплуатация ошибки очень простая:

sudo -u#-1 id -u <command>

или:

sudo -u#4294967295 id -u <command>

Ошибка присутствует во всех версиях sudo до 1.8.28

Подробности:

https://thehackernews.com/2019/10/linux-sudo-run-as-root-flaw.html

https://www.sudo.ws/alerts/minus_1_uid.html

>>> Подробности

★★

Проверено: alexferman ()
Последнее исправление: cetjs2 (всего исправлений: 4)
Ответ на: комментарий от zabbal

каюсь, оригинал новости не прочел.. да, тут как-то сумбурно изложено.

aol ★★★★★
()
Ответ на: комментарий от crutch_master

Cмысл-то дырки в том, что пользователь которому разрешено сделать какую-то команду от имени другого пользователя при указании #-1 вместо этого пользователя делает эту команду от рута.
То есть пользователю должно быть разрешено sudo.

Юзер, которому можно делать sudo получает рут.

Так и есть. Неуязвимая версия ругается на отсутствие юзера #-1.

Юзер, который не может сделать через обычное sudo без -u#-1 рут не получает.

Так и должно быть.

Создал юзера test - не работает. Добавил строчку в sudores - не работает.

/etc/sudoers, файл называется sudoers, а не sudores
Может потому и не работает?

imul ★★★★★
()

Спасибо, что предупредили. Обновил бубен.

Desmond_Hume ★★★★★
()

В Дебиан уязвимость уже закрыли. Вчера обнова прилетела.

Odalist ★★★★★
()
Ответ на: комментарий от vertexua

Представь что ты не просто добавляешь себя в группу docker, а говоришь, «через sudo я могу временно становиться docker». А тут сюрприз, ты еще можешь становиться root

Нет. Если добавить ALL=(docker) ALL, то этого не хватит. Надо именно «через sudo я могу временно становиться кем угодно, кроме root».

monk ★★★★★
()
Ответ на: комментарий от imul

Cмысл-то дырки в том, что пользователь которому разрешено сделать какую-то команду от имени другого пользователя при указании #-1 вместо этого пользователя делает эту команду от рута.

Ещё хуже. Надо, чтобы разрешено было сделать эту команду от ЛЮБОГО юзера КРОМЕ рута. Только в этом случае #-1 подходит под условие «любой юзер», а потом по факту оказывается, что это тоже рут.

На практике такой конфигурации нет вообще ни у кого, так что уязвимость, увы, или к счастью, неэкплуатируема.

anonymous
()
Ответ на: комментарий от imul

У дырочки оказалась расширенная функциональность.

Наоборот - очень узкая. Настолько, что я на практике таких конфигураций вообще не видел.

zabbal ★★★★★
()
Ответ на: комментарий от sunjob

и это «мини-новость»?!!

Это - говно безграмотное и позорное. А вот оригинальное сообщение, которое тут чудовищно переврали, именно что на мини-новость и тянет.

zabbal ★★★★★
()
Ответ на: комментарий от aol

Ты в курсе, что -u whoami надо перед командой id писать? И да, для этого пользователю whoami должны быть даны права на выполнение команды id.

Кажется, есть повод посмеяться над пользователями отечественных дистрибутивов.

kawaii_neko ★★★★
()
me@~: sudo
bash: /usr/bin/sudo: Нет такого файла или каталога
gnu_linux
()
Ответ на: комментарий от imul

В /etc/sudoers

test	ALL=(ALL:!root) /usr/bin/vim
От юзера test:
$ sudo -u#-1 whoami
Пользователю test запрещено выполнять '/usr/bin/whoami' с правами #-1 на localhost
Не работает. Если поменять на /usr/bin/whoami - выдаст root. Ну как-бы да, но это маленько не

выполнить от пользователя root любой исполняемый файл
любой

Что я не так делаю?

crutch_master ★★★★★
()
Последнее исправление: crutch_master (всего исправлений: 1)
Ответ на: комментарий от zabbal

Под «расширенной» я имел в виду то, что проэксплуатировать можно и без !root. Хотя, это мало влияет на вектор атаки.

imul ★★★★★
()
Ответ на: комментарий от anonymous

Надо, чтобы разрешено было сделать эту команду от ЛЮБОГО юзера КРОМЕ рута.

Хм, вот мои эксперименты в убунте показали, что достаточно группы, то есть конфиг по умолчанию. И условия «кроме рута» там не было.
PS: хотя не исключено, что в убунте были ещё какие-то правки, усугубившие ситуацию. Поскольку у камрада с центосем не сработало то, что сработало у меня.

imul ★★★★★
()
Последнее исправление: imul (всего исправлений: 1)
Ответ на: комментарий от imul

Хм, вот мои эксперименты в убунте показали, что достаточно группы, то есть конфиг по умолчанию.

Ты там и так может получить рута без всяких хаков. Какой смысл в -u#-1 ?

crutch_master ★★★★★
()
Ответ на: комментарий от crutch_master

Если поменять на /usr/bin/whoami - выдаст root. Ну как-бы да, но это маленько не выполнить от пользователя root любой исполняемый файл

Посмотри оригинальную новость на английском. Возможно на русский перевели не очень корректно. Я уже везде пофиксил, куда смог дотянуться. Даже там где экспериментировал.

imul ★★★★★
()
Ответ на: комментарий от crutch_master

Ты там и так может получить рута без всяких хаков.

Могу и что? Смысл-то в том, что я могу получить рута там, где не должен его получить, а именно при указании -uнерут, то есть -u#-1. Причём пользователя с таким id даже в системе не надо иметь.

Какой смысл в -u#-1 ?

Мне уже никакого. Просто обнаружилось ещё одно проявление этого бага, помимо описанного. Багом оно от этого быть не перестаёт.

imul ★★★★★
()
Ответ на: комментарий от imul

что проэксплуатировать можно и без !root

Это как? Там ведь ошибка с парсингом записей с ALL - если там нет !root, то там и без эксплойта можно выполнить команду от рута. Что там, собственно, эксплуатировать?

zabbal ★★★★★
()

На андроиде будет работать?

Lorovec
()

А я всегда говорил, что sudo - это зло.
И не потому что нашли дырку (подобное и в login, и в su может вылезти), а потому, что есть доступ у обычного юзера, даже если админ ему доверяет...
Что легче, «договориться» с ответственным админом, или после «облома» у админа «договориться» с двумя-тремя sudo-юзерами?

[faust@archlinux ~]$ yaourt -Ss sudo
core/sudo 1.8.28-1 (base-devel)
    Give certain users the ability to run some commands as root
Как видим нет метки "[installed]" - мне не впадлу пароль рута, заодно и вдупель пьяному этот набор напоминает, что ты уже на опасной территории - «не косячь, алкаш...»

drfaust ★★★★★
()

Никогда не доверял этой штуке.

kirill_rrr ★★★★★
()
Ответ на: комментарий от imul

https://www.sudo.ws/alerts/minus_1_uid.html

If a sudoers entry is written to allow the user to run a command as any user except root, the bug can be used to avoid this restriction. For example, given the following sudoers entry:
bob myhost = (ALL, !root) /usr/bin/vi
User bob is allowed to run vi as any user but root. However, due to the bug, bob is actually able to run vi as root by running sudo -u#-1 vi, violating the security policy.

able to run vi as root

vi

as root

not anything

only vi

crutch_master ★★★★★
()
Ответ на: комментарий от anonymous

Меня «иогурт -Сьюка» всем устраивает, было когда-то кедо-4е, сменил нафиг на lxde - олд-скулл(а-ля помесь winXP-Win7 юзабельность) - финтиплюшек много слишком уж... А так, я уже не помню когда pacman - заряжал, а граф/автомат-обновляторы - ну не для арча это, не для него... Последний раз иогурт косячил, дай, бог памяти, года три назад...

drfaust ★★★★★
()

Уже год, как пользуюсь doas.

anonymous
()

➜ ~ sudo -u#-1 id -u ls
sudo: неизвестный пользователь: #-1
sudo: не удаётся инициализировать модуль политики
➜ ~ sudo -u#4294967295 id -u ls
sudo: неизвестный пользователь: #4294967295
sudo: не удаётся инициализировать модуль политики
➜ ~ sudo -V
Sudo версия 1.8.21p2
Sudoers policy plugin version 1.8.21p2
Sudoers file grammar version 46
Sudoers I/O plugin version 1.8.21p2

etwrq ★★★★★
()
Ответ на: комментарий от kawaii_neko

Кажется, есть повод посмеяться

sudo -u#-1 id -u <command>

Гласит команда из новости.

Но ты посмейся, я разрешаю.

aol ★★★★★
()
Ответ на: комментарий от zabbal

если там нет !root, то там и без эксплойта можно выполнить команду от рута.

Я уже выше всё описал. Читай всё, а не только ответы тебе.

imul ★★★★★
()
Ответ на: комментарий от crutch_master

Так вроде и не написано что любую, только ту, что разрешена, но не с правами юзера, а рутом. Что не так?

imul ★★★★★
()
Ответ на: комментарий от crutch_master

/etc/sudoers доступен только на чтение по дефотлу, так что нет, хотя..

Из под рута как-то пофиг на это.

imul ★★★★★
()
Ответ на: комментарий от zabbal

Ну тогда я бессилен тебе что-то объяснить. Или доматывайся до кого-то ещё.

imul ★★★★★
()

во всех версиях sudo до 1.8.28

сегодня как раз 1.8.28 прилетела...

amd_amd ★★★★★
()
Ответ на: комментарий от slonopotamus

Ну да ну да, конечно все пользуются и все хорошо, датацентры напиханы миллионами контейнеров, а ты пришел и такой сразу, ха docker == root

Дык становись хакером, пускай «хорошим», покажи людям как правильно ломать докер, делать что угодно. Бери деньги за демострацию

vertexua ★★★★★
()
Последнее исправление: vertexua (всего исправлений: 1)
Ответ на: комментарий от r0ck3r

Пост внимательно не читай. Каменты сразу пиши.

Написано же, что если выполнение команды запрещено для рута.Ты bash запретил руту исполнять?

dmitrmax
()

Ошибка в sudo позволяет выполнить от пользователя root любой исполняемый файл, если в /etc/sudoers разрешено его выполнение от других пользователей и запрещено для root.

Ну и кто так будет делать? Разве только в качестве вектора атаки: путем социальной инженерии убедить админа, что это зачем-то нужно.

Bagrov ★★★★★
()

даже OpenBSD-шники, авторы sudo, уже давно от sudo отказались

buratino ★★★★★
()

Во первых это нормально. Баг это когда рут на что-то может не иметь прав. Так что пофисав они только испортят.

Второе sudo не нужно. Нормально это su.

bonta ★★★★★
()
[user@MacBook-Pro] sudo -u#-1 id -u whoami
Password:
[user@MacBook-Pro] sudo --version
Sudo version 1.8.17p1
Sudoers policy plugin version 1.8.17p1
Sudoers file grammar version 45
Sudoers I/O plugin version 1.8.17p1
cipher ★★★★★
()

И все ломанулись что-то проверять, не имея уязвимых правил в конфигурации.

nebularia ★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.