gns_ua: (Default)
gns_ua ([personal profile] gns_ua) wrote2013-11-11 06:59 pm

(no subject)

Only the root user can perform a chroot. This is intended to prevent users from putting a setuid program inside a specially crafted chroot jail (for example, with a fake /etc/passwd and /etc/shadow file) that would fool it into a privilege escalation.

И каким же это образом юзер может создать setuid root program в своём уютненьком чрутике? Даже если не монтировать /home и /tmp с nosuid ?

[identity profile] olkash.livejournal.com 2013-11-11 05:11 pm (UTC)(link)
обожи
це хдє?

[identity profile] gns-ua.livejournal.com 2013-11-11 05:15 pm (UTC)(link)
Это педивикия так объясняет, почему Only a privileged process (Linux: one with the CAP_SYS_CHROOT capability) may call chroot(). Хотя this call changes an ingredient in the pathname resolution process and does nothing else.

Объяснение меня не удовлетворило.
Edited 2013-11-11 17:15 (UTC)

[identity profile] prividen.livejournal.com 2013-11-11 05:27 pm (UTC)(link)
а подмонтировать чо подготовленное через fuse?

[identity profile] gns-ua.livejournal.com 2013-11-11 05:31 pm (UTC)(link)
Если через fuse от юзера можно смонтировать нечто, без nosuid и без принудительного uid, то, очевидно, не надо ничего крафтить и фейкать - можно просто положить суидный /bin/bash!

Они КМК описывают другое - что вот у меня чрут, в котором есть су или судо. И я их могу наебать подложив /etc/passwd или /etc/sudoers. Но откуда в моём чруте возьмётся су или судо?
Edited 2013-11-11 17:32 (UTC)

[identity profile] prividen.livejournal.com 2013-11-11 05:37 pm (UTC)(link)
Может, хардлинками, если раздел один?
Хм, и проверить то негде...

[identity profile] gns-ua.livejournal.com 2013-11-11 05:39 pm (UTC)(link)
Нед.


[altlinux@eeelive a]$ ls -l /bin/testsuid
-rwsr-sr-x 1 root root 0 Ноя 11 18:58 /bin/testsuid

[altlinux@eeelive a]$ ln /bin/testsuid .
ln: не удалось создать жёсткую ссылку «./testsuid» => «/bin/testsuid»: Операция не позволена

[altlinux@eeelive a]$ cp /bin/testsuid .

[altlinux@eeelive a]$ ls -l testsuid
-rwxr-xr-x 1 altlinux altlinux 0 Ноя 11 19:42 testsuid
Edited 2013-11-11 17:39 (UTC)

[identity profile] lamed.livejournal.com 2013-11-11 05:32 pm (UTC)(link)
Например, скопировать себе /bin/su при помощи уязвимости в какой-нибудь чрутовой программе.

[identity profile] gns-ua.livejournal.com 2013-11-11 05:37 pm (UTC)(link)
Т.е., в чруте под непривилегированным пользователем работает программа настолько уязвимая, что она ИЗВНЕ чрута сумела стянуть /bin/su, сохранив при этом его владельца и setuid bit ?

Это означает, что программа сама суидная. Откуда она там взялась?
Edited 2013-11-11 17:38 (UTC)

[identity profile] lamed.livejournal.com 2013-11-11 05:40 pm (UTC)(link)
Блин, второй раз опечатываюсь.

Нет. В системе есть уязвимая чрутовая суидная программа, которую можно заставить скопировать любой файл со всеми атрибутами куда угодно. Злоумышленник копирует /bin/su к себе в хоум, затем добавляет фейковые /etc/passwd и /etc/shadow, делает chroot и в получившемся окружении делает su.
Edited 2013-11-11 17:41 (UTC)

[identity profile] gns-ua.livejournal.com 2013-11-11 05:45 pm (UTC)(link)
> Блин, второй раз опечатываюсь.

Да, на второй раз я понял :)

> которую можно заставить скопировать любой файл со всеми атрибутами

Это какое-то подозрительно _узкое_ условие. "Скопировать" - а может она и произвольное содержимое в /bin/su может записать, сохранив его аттрибуты.

Скорей уж есть уязвимая суидная программа, которую можно заставить выполнить произвольный код.

Ну и, плюс, можно всё-таки включить nosuid на /tmp и /home :)
Edited 2013-11-11 17:48 (UTC)

[identity profile] lamed.livejournal.com 2013-11-11 05:48 pm (UTC)(link)
Бывают, например, уязвимости, когда прога не проверяет, что читаемый ей файл - симлинк.

[identity profile] gns-ua.livejournal.com 2013-11-11 09:25 pm (UTC)(link)
в моей системе восемь суидных бинарей. ни один из них похоже не умеет "копировать файлы".

далее, закрафтить судоерс НЕ ПРИНАДЛЕЖАЩИЙ руту бессмысленно. tcb аналогично, должен принадлежать тому юзеру чьи пароли.

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

аналогично с su и tcb.

ну, -o nosuid от копирования су/судо защитит, хорошо.

я бы вот что сделал - -o chroot/,позволяющий или запрещающий в каталоги вложенные под этой фс делать чрут. дефолтно, естественно,запрещено. А админ может включить если понадобится.