mkdir()和“检查时间,使用时间”漏洞

时间:2011-06-02 17:32:59

标签: c mkdir secure-coding

对于C,mkdir()是否有安全的替代方案?我正在检查一些代码,并注意到它正在使用mkdir()的调用。根据我在US-CERT安全编码站点上所读到的内容,使用该功能会使其容易受到“检查时间,使用时间”(TOCTOU)的影响。

修改

来自zlib的miniunz.c源

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 个答案:

答案 0 :(得分:2)

你的问题有点模糊;对US-CERT文档的引用和一些示例代码会很好。

尽管如此,我打赌答案是mkdirat()

答案 1 :(得分:1)

mkdir()仅在TOCTOU - Time of Check, Time of Use之前检查目录是否存在。

如果调用代码执行正确的操作,在您的示例中,上面的用法是可以的。检查扎克的评论。