处理文件系统安全程序的编写必须确保攻击者无法以导致问题的方式利用共享的资源,有时这并不像看起来那样容易办到。文件系统是最常见的共享资源之一。所有的程序都可以共享文件系统,所以,有时需要额外的努力,以确保攻击者不能以引发问题的方式利用文件系统。
有很多确定为安全的程序都存在称为“time of check - time of use”(TOCTOU)的竞争条件缺陷。这只说明了程序检查某种情形是否可行,然后稍后使用那一信息,但是攻击者可能会在这两个步骤之间改变该情形。对文件系统来说,以下问题尤为突出;在这两个步骤之间,攻击者通常可以创建一个普通的文件或者一个符号链接。例如,如果某个已授予特权的程序检查是否不存在给定名称的文件,然后打开该文件写入信息,那么在那两个步骤之间,攻击者可以创建一个使用该名称的符号链接文件... 比如 /etc/passwd 或者其他一些敏感文件。
遵守一些简单的规则,可以避免这些问题: