如何在C#中防止基于联结的TOCTOU问题?

时间:2013-05-31 02:29:20

标签: c# race-condition secure-coding

我想用C#中的Junction来防止TOCTOU问题。我正在提供某些目录中的文件。这些目录可能是SMB / CIFS共享或任何文件系统的本地驱动器(但很可能是NTFS)。

鉴于我对这个问题的理解,以下内容可以保护我免受它的侵害:

  1. 使用File.Open(foo, FileMode.Open, FileAccess.Read, FileShare.Read)打开文件这可以防止修改文件或其上方的目录结构。如果在FileNotFoundException支票和File.Exists之间移除了文件,我需要抓住File.Open

  2. 向上移动目录结构,检查每个文件夹是否为联结,直到我到达根文件夹。

  3. 我并不担心文件符号链接,因为文件符号链接需要提升管理访问权限才能创建,如果攻击者已经提升了对本地计算机的管理访问权限,那么他们很可能已经完全破坏了它。

    我不相信我不得不担心CIFS,因为我对此事的调查让我相信不可能在CIFS上创建符号链接,除非客户端支持Unix扩展(Windows不支持)

    据我所知,Windows支持的所有其他文件系统都不支持符号链接。

0 个答案:

没有答案