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:
Это разновидность 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:
В K&R тоже написано, что временный файл «автоматически удаляется при его
закрытии или обычном завершении программы своей работы» (стр.311).
Видимо, такая формулировка в K&R/~ANSI C используется из-за соображений
портабельности, т.к. не на всех платформах можно удалить файл и
продолжать работать с дескриптором. А ман, скорее всего, просто
пересказывает ANSI C.
В сущности, какая разница, когда удалить файл, если его имя не
возвращается? Лучше удалить сразу (на тех платформах, которые это
поддерживают).