Вход:  Пароль:  
FreeSource: AltLinux/Sisyphus/devel/SecureTmp ...
Free Source | Каталог | Изменения | НовыеКомментарии | Пользователи | Регистрация |
Это старая версия AltLinux/Sisyphus/devel/SecureTmp за 2005-08-17 11:11:22..

Безопасность и временные файлы


Date: Wed, 17 Aug 2005 02:50:56 +0400
From: “Dmitry V. Levin” <ldv@ >
To: ALT Devel discussion list <devel@ >
Subject: Re: [devel] Re: suid/sgid programs and temporary files


On Wed, Aug 17, 2005 at 02:34:21AM +0400, Alexey Tourbin wrote:

> On Wed, Aug 17, 2005 at 02:06:33AM +0400, Dmitry V. Levin wrote:
> > Между прочим, передача временного файла по имени небезопасна сама по себе,
> > эта тема обсуждалась год-два-три назад в списках рассылки типа bugtraq.
>
> Можно в двух словах, почему небезопасно передовать временный файл по 
> имени? Ведь если потенциальный злоумышленник не может ни читать/писать,
> ни удалить временный файл, то в чем страдает безопасность?

Это разновидность TOCTOU: с момента проверки до момента использования
ситуация может измениться. Например, временный файл, созданный в /tmp,
может быть удалён, если он не используется, каким-нибудь stmpclean'ом.
Даже права на каталог могут измениться с момента последней проверки.
Если представить себе, что привилегированная программа получила SIGSTOP и
отправилась отдыхать на недельку-другую, то окно становится вполне
пригодным для атаки.


Разумеется, $TMPDIR, созданный pam_mktemp'ом, гораздо безопасней, но в
общем случае всё очень зыбко.



ldv




Date: Wed, 17 Aug 2005 10:37:30 +0400
From: Alexey Tourbin <at@>
To: devel@
Subject: [devel] Re: suid/sgid programs and temporary files


On Wed, Aug 17, 2005 at 09:02:44AM +0600, Andrey Rahmatullin wrote:

> On Wed, Aug 17, 2005 at 02:55:07AM +0400, Dmitry V. Levin wrote:
> > Да, tmpfile(3) удаляет созданный файл сразу,
> Почему об этом нет в мане?

В K&R тоже написано, что временный файл «автоматически удаляется при его
закрытии или обычном завершении программы своей работы» (стр.311).
Видимо, такая формулировка в K&R/~ANSI C используется из-за соображений
портабельности, т.к. не на всех платформах можно удалить файл и 
продолжать работать с дескриптором. А ман, скорее всего, просто
пересказывает ANSI C.


В сущности, какая разница, когда удалить файл, если его имя не
возвращается? Лучше удалить сразу (на тех платформах, которые это
поддерживают).


 
Файлов нет. [Показать файлы/форму]
Комментариев нет. [Показать комментарии/форму]