[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