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

发布于 2024-11-13 16:00:10 字数 463 浏览 4 评论 0原文

对于 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 就是我所指的。

Is there a secure alternative to mkdir() for C? I am examining some code and notice it is using calls to mkdir(). From what I have read on the US-CERT Secure Coding site, use of that function leaves it vulnerable to "Time of Check, Time of Use" (TOCTOU).

Edit

From the miniunz.c source for 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;
}

The mkdirabove is what I am referring to.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

暗地喜欢 2024-11-20 16:00:10

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

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

Your question is a little vague; a reference to the US-CERT document and some sample code would be nice.

Nevertheless, I bet the answer is mkdirat().

2024-11-20 16:00:10

mkdir() 只是 TOCTOU - 检查时间、使用时间(在检查目录是否存在之前)。

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

mkdir() is only TOCTOU - Time of Check, Time of Use when it's preceded by a check to see if the directory exists.

The usage above, in your example, is ok if the calling code does the right thing. Check Zack's comment.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文