[devel] Re: suid/sgid programs and temporary files
Alexey Tourbin
=?iso-8859-1?q?at_=CE=C1_altlinux=2Eru?=
Ср Авг 17 01:42:56 MSD 2005
On Tue, Aug 16, 2005 at 11:56:29PM +0400, Dmitry V. Levin wrote:
> > Условия подчеркнутой проверки можно перевести примерно как
> > st.st_uid > 10 && st.st_uid != getuid()
> >
> > Вопрос: хорошо ли, что здесь используется real uid? Не лучше ли
> > проверять effective uid?
>
> Это зависит от семантики модуля.
> Другими словами, для чего он предназначен.
Модуль предназначен для безопасного создания временных файлов.
Семантика, грубо говоря, такая же, как у mktemp(1).
Когда при помощи `mktemp -t prog.XXXXXX` создается временный файл, я не
знаю, проверяет ли mktemp *каталог*, в котором будет создан временный
файл. Если каталог принадлежит не руту (st_uid > 10) и не нам, то
"кто-то" (потенциальный злоумышленник) может попросту подменить
временный файл (старый удалить, а вместо него сделать новый).
Возможность подмены сохраняется, если каталог доступен по записи
кому-нибудь ещё (и не защищен sticky bit'ом).
> При той информации, что содержится в комментарии, у меня складывается
> ощущение, что проверять effective uid было бы логичнее.
Это особенно актуально для suid'ных скриптов. Если Василий запускает
suid скрипт, который создаёт временный файл в ~/tmp (каталог считается
безопасным, потому что getuid() == Василий), то временный файл можно
будет подменить. С другой стороны, если бы выполнялась проверка
geteuid() == Василий, то каталог ~/tmp уже не считался бы безопасным.
----------- следующая часть -----------
Было удалено вложение не в текстовом формате...
Имя : =?iso-8859-1?q?=CF=D4=D3=D5=D4=D3=D4=D7=D5=C5=D4?=
Тип : application/pgp-signature
Размер : 189 байтов
Описание: =?iso-8859-1?q?=CF=D4=D3=D5=D4=D3=D4=D7=D5=C5=D4?=
Url : <http://lists.altlinux.org/pipermail/devel/attachments/20050817/1fbea3b6/attachment-0001.bin>
Подробная информация о списке рассылки Devel