Уязвимости mkdir () и «Время проверки, время использования» - PullRequest
1 голос
/ 02 июня 2011

Есть ли безопасная альтернатива mkdir() для C? Я проверяю некоторый код и замечаю, что он использует вызовы mkdir(). Из того, что я прочитал на сайте безопасного кодирования US-CERT, использование этой функции делает ее уязвимой для «времени проверки, времени использования» (TOCTOU).

Редактировать

Из источника miniunz.c для zlib

int mymkdir(dirname)
    const char* dirname;
{
    int ret=0;
#ifdef WIN32
    ret = mkdir(dirname);
#else
#ifdef unix
    ret = mkdir (dirname,0775);
#endif
#endif
    return ret;
}

Выше я имею в виду mkdir.

Ответы [ 2 ]

2 голосов
/ 02 июня 2011

Ваш вопрос немного расплывчат;Ссылка на документ US-CERT и некоторый пример кода были бы хорошими.

Тем не менее, я держу пари, что ответ mkdirat () .

1 голос
/ 02 июня 2011

mkdir() - это только TOCTOU - время проверки, время использования , когда ему предшествует проверка на наличие каталога.

Использование, приведенное выше, в вашем примере,Это нормально, если вызывающий код делает правильные вещи.Проверьте комментарий Зака.

...