gpt4 book ai didi

unix - access(2) 系统调用安全问题

转载 作者:行者123 更新时间:2023-12-05 08:59:31 26 4
gpt4 key购买 nike

access(2) 手册页说,

CAVEAT Access() is a potential security hole and should never be used.

但是什么是安全漏洞,为什么我不应该使用它?

最佳答案

来 self 系统的手册页:

Warning: Using access() to check if a user is authorized to, for example, open a file before actually doing so using open(2) creates a security hole, because the user might exploit the short time interval between checking and opening the file to manipulate it. For this reason, the use of this system call should be avoided. (In the example just described, a safer alternative would be to temporarily switch the process's effective user ID to the real ID and then call open(2).)

因此,问题在于它创建了一个竞争条件,用户可以利用该竞争条件来访问其他文件。

想象一下以下示例场景。我创建了一个允许我写入的文件 /tmp/file。然后,您的 uid-0 程序调用 access() 来检查是否允许我打开此文件进行写入,然后再向我提供写入权限。

在调用 access()open() 之间的短暂空间中,我可以删除 /tmp/file 并替换它通过指向 /etc/crontab 的符号链接(symbolic link)。我现在可以让系统运行我喜欢的任何程序,因为应用程序会很高兴地为我提供对 /etc/crontab 的写入权限。

关于unix - access(2) 系统调用安全问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14333112/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com