LINUX.ORG.RU

Обнаружена уязвимость в sudo

 , ,


0

3

В популярной утилите для запуска программ от других пользователей обнаружена уязвимость, потенциально позволяющая получить привилегии root.

Баг обнаружен в функции sudo_debug(), где название программы (argv[0]) передается прямо в fprintf(). Проверить наличие уязвимости можно следующим простым способом:

$ ln -s /usr/bin/sudo ./%s
$ ./%s -D9
Segmentation fault

Уязвимости подвержены версии 1.8.0-1.8.3p1. Разработчики рекомендуют обновиться до 1.8.3p2 как можно скорее.

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

★★★★★

Проверено: maxcom ()
Последнее исправление: provaton (всего исправлений: 4)
Ответ на: комментарий от Felagund

А, нет, неправда. Надо их просто до tty не допустить. Где, кстати, можно почитать про то, как сейчас устроены и работают все эти tty, vty, pts…?

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

1.

su -c/sudo -u ... setsid cmd args


вместо

su -c/sudo -u ... cmd args


Костыль, да, запоминать придётся и вбивать на целых 6 символов больше. Но этот способ уже детачит /dev/tty нафиг.
2.
Выключить tiocsti() в drivers/tty/tty_io.c в ядре (пусть возвращает EPERM). Гуглинг по TIOCSTI вообще даёт только адвизори по этому багу в su да пару сайтов с описанием того, как симулировать ввод с клавиатуры. Вам нужно симулировать ввод с клавиатуры в tty?
Другой вопрос - много ли программ и библиотек это использует и сколько сломается? Нужно попробовать :-)

anonymous
()

А sudo кто-то использует?

Debasher ★★★★★
()

T_T

debug_level: settings: 9=ÈDËó
progname: settings: %s=
implied_shell: settings: true?Ëó
network_addrs: settings: ....
Ошибка сегментирования
qbbr ★★★★★
()
Ответ на: комментарий от Deleted

для работы в десктопных приложениях уже нужны права root?

да, для работы, например, с интерфейсами.

true_admin ★★★★★
()
[19:27] fletch@helix ~\ $ sudo
bash: sudo: команда не найдена
Fletch ★★
()
Ответ на: комментарий от geekless

как при помощи ДАННОГО бага получить рута

хоть бы до середины дочитал википедию, там ссылки есть на то как выполнить произвольный код. А раз sudo suid-ный..

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

В чем виноват ntfs-3g, если его пускают без рутовых прав?

В том, что даже если ему дать suid-бит, он ни за что не будет монтировать. Что неправильно, если в fstab запись уже есть.

Eddy_Em ☆☆☆☆☆
()
Ответ на: комментарий от geekless

http://en.wikipedia.org/wiki/Uncontrolled_format_string <<-----Цитата----<<

Выпендрился? Молодец. А теперь расскажи, как при помощи ДАННОГО бага получить рута, либо получить доступ к информации с рутовыми правами.

Русским же по серому написано, что баг при вызове fprintf, а не sprintf.

Читать по-английски умеешь? В статье написано, что это делается в общем случае через спецификатор %n. За деталями реализации марш в гугл.

Deleted
()
Ответ на: комментарий от Eddy_Em

В том, что даже если ему дать suid-бит, он ни за что не будет монтировать.

Ололо, ты предлагаешь, чтобы он начал позволять монтировать всё подряд?

Что неправильно, если в fstab запись уже есть.

В его задачи не входит анализировать fstab. Это задача mount(8). Тебе дать волю, так ты быстро скатишь linux в винду с такими замашками.

И да: это проблема mount(8), раз он не имеет достаточной гибкости, чтобы определить в конфиге, восстанавливать eudi из ruid перед запуском обёртки, или нет. Пиши FR разрабам util-linux.

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

так есть куча других способов. Через %n это слишком просто. И без %n можно снести стэк со всеми вытекающими. Раньше на этом куча атак было, щас из-за всяких фич типа неисполняемого стэка итп стало гораздо сложнее.

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

И без %n можно снести стэк со всеми вытекающими.

Как ты снесёшь стек, если ты можешь только читать, но не писать в него?

geekless ★★
()

давайте все баги на лоре выкладывать (тут же многие супер-разработчики не далеко от hello, world ушли). В целом контингент тут своеобразный: 1) на новость пофиг, но надо об..ть 2) не умеют пользоваться и поливают Г 3) говорят правильно и по делу (таких мало).

P.S. надо обо..ть ЛОР, он же не нужен

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

Вот это и есть та подмена, о которой я говорил.

Подменили на более удобное. Беда-огорчение.

Откуда?

Вводит он его, блин, при установке дебиана. Сначала пароль рута, потом первого пользователя.

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

передав некорректные аргументы fprintf или что там используется. В попытке распарсить оно может легко бед натворить. Если я ничего не путаю.

true_admin ★★★★★
()

Я вижу тут только сегфолт. В функции для дебага самого sudo причём. Где уязвимость-то?

powerpc
()
Ответ на: комментарий от Binary

Подменили на более удобное.

Чем более удобное?

Вводит он его, блин, при установке дебиана.

С чего ты взял, что тот, кто устанавливает систему, и тот, кто ей пользуется, это обязательно один и тот же человек?

Deleted
()

C:\Users\Администратор>sudo
"sudo" не является внутренней или внешней
командой, исполняемой программой или пакетным файлом.

C:\Users\Администратор>

ну вы понимаете....

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

Понимаем, что ты вантуз выкладывающий результат выполнения sudo в винде на ресурс о linux и считающий это забавным и тонким.

px ★★★
()

а на слаке, на слаке оно работает?

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

Т.е. своими словами ты не можешь? Ок, я объясню, что там написано. Там написано:

Мы можем:
* Сегфолтнуть процесс.
* Прочитать информацию из его памяти.
* Выполнить произвольный код при помощи sprintf.
* Выполнить произвольный код при помощи %n.

А теперь вопрос: что из этого годится как ответ на вопрос, который я задавал?

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

хорош уже поттеринга приплетать по каждому поводу

«Пакет с sudo из состава Fedora 16 (возможно это касается и RHEL 6) изначально собран с опцией D_FORTIFY_SOURCE=2, т.е. не подвержен эксплуатации.

Кроме того с этим флагом собраны _все_ пакеты Fedora. Исключением из этого правила может стать только пакет получивший прямое разрешение от Fedora Packaging Committee.»

Разработка новых инструментов совсем не обязана сопровождаться бардаком в старых.

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

у систем с несколькими пользователями удобнее в отсутствии необходимости шарить пароль рута между желающими его иметь. неужели не понятно? в убунте оно так, так как это частый юзкейс. долго ещё будем одно и то же перетирать?

голая система никому не нужна, так что тот, кто её ставил, будет её либо сначала настраивать, а потом отдаст пароль пользователю, но тогда не понятно, что мешает ему создать в процессе установки пользователя, у которого не будет sudo. подходы ничем не различаются, просто один удобнее в одном случае, другой в другом. и как по мне, они оба на своих вполне местах. о чём спор - нипанятна.

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

я вижу ты и дальше не читаешь то что тебе дают и до параграфа 3.4 не дошёл.

Не читаешь в данный момент ты, при чем дважды: сначала по своей ссылке, а затем мой коммент. Для идиотов повторяю: выполнить произвольный код можно или через sprintf или через %n. Ты грозился сорвать стек через fprintf без помощи %n. Ждём.

Разницу между sprintf и fprintf знаешь, или в мане почитаешь?

В игнор.

Слабак.

geekless ★★
()

опять уязвимость. да. надо заюзать %)

havelite
()

Вот почему строка формата не должна браться из переменной.

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

> т.е. не подвержен эксплуатации.

Повеселил, молодец!

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

На десктопе с единственным юзером sudo не нужно. Логично?

Ты хочешь сказать, на компьютере должен быть один пользователь - root?

Deleted
()
Ответ на: комментарий от ggrn

ну вы понимаете....

C:\Users\Администратор>

Администратор

ну вы понимаете....

Deleted
()

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

belous_k_a
()

sudo -g существующая_группа -i segmentation fault

ValdikSS ★★★★★
()

Спасибо, почесало обновить.

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

либо очень маленький опыт

2 года. Маленький?

Нет, не маленький. Это вообще не опыт, салага.

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

There is no requirement to use the sudo command in Sabayon Linux. Use the su command to log-in to the root user's account, perform the steps listed, then type exit to log-out from the root user's account when you have finished.

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

Ты можешь найти подробности этого? Тоже интересно.

Подробности? Ну у них такое на вики, выше цитата.

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

а ваши все знакомые работают в системе вообще? в смысле они используют обычные десктопные приложения? и все эти приложения без уязвимостей? и они, и вы в этом уверены? а еще вы уверены, что под линукс не существует зловредных программ?

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

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