Dod*_*ddy 6 c linux system-calls
可能重复:
access()安全漏洞
我引用man page access(2):
警告:使用access()来检查用户是否有权在例如打开文件之前使用open(2)创建安全漏洞,因为用户可能利用检查和打开文件之间的短时间间隔操纵它.因此,应避免使用此系统调用.
这是什么意思,在什么情况下会引起关注?
这只是 Set-user-ID 和 set-group-ID 应用程序的安全问题。对于以用户本身身份运行的应用程序来说,不存在任何威胁,因为相关操作无论如何都会被操作系统拒绝。
考虑这种情况:您有一个通过 set-user-id 运行的 UNIX 程序root。该程序用于access检查另一个用户的文件权限,然后以 运行该文件root,但前提是权限检查成功。假设该程序名为securerun,并且您按如下方式运行它:
securerun myfile
Run Code Online (Sandbox Code Playgroud)
攻击者可以使用以下算法来运行利用此安全漏洞的程序:
xyz写入用户有执行权限的文件A并且BA等待几毫秒,然后执行cp norunning xyz以替换xyz攻击者想要运行但没有运行权限的文件B调用securerun xyz如果攻击者运气好,时机正确,您securerun将检查旧的执行权限xyz,但它会运行新的,这是黑客不应该运行的xyz副本。norunning由于检查和执行之间的时间窗口很短,因此如果攻击者在循环中多次尝试其策略,那么他一定会在某个时候很幸运。
| 归档时间: |
|
| 查看次数: |
559 次 |
| 最近记录: |