gpt4 book ai didi

linux - 为什么 set-uid 程序永远不应该创建程序所有者拥有且其他用户可写的文件?

转载 作者:太空宇宙 更新时间:2023-11-04 04:53:50 26 4
gpt4 key购买 nike

来自 Linux 编程接口(interface)

If a set-user-ID-root program must create a file that initially it must own, but which will eventually be owned by another user, the file should be created so that it is initially not writable by other users, either by using a suitable mode argument to open() or by setting the process umask before calling open(). Afterward, the program can change its ownership with fchown(), and then change its permissions, if necessary, with fchmod(). The key point is that a set-user-ID program should ensure that it never creates a file that is owned by the program owner and that is even momentarily writable by other users.

我想知道为什么“设置用户 ID 程序应该确保它永远不会创建程序所有者拥有的文件,甚至其他用户可以暂时写入的文件”?

最佳答案

如果其他用户暂时可以写入该文件,则在您开始更改文件的所有权之前,敌对进程可能会将其自己目的的数据写入该文件。这种情况代表了可能的权限升级漏洞的开始,或者至少是一个本来就不应该有机会损坏文件的进程损坏了预期数据。

假设我想从非特权进程中获得 root 权限。我可以坐下来等待您的应用程序以 root 身份运行以开始创建 root 拥有的文件。我一看到它,我的进程就会竞相将我的 rootkit 二进制文件写入该文件。我利用了另一个有缺陷的特权进程,它让我能够以某种方式翻转文件上的 set-user-id 位——所有这些都在您开始更改所有权之前进行。现在我可以快速执行我的 setuid rootkit 二进制文件,并且我写入其中的代码以 root 身份运行!我在不应该被允许的情况下获得了全部特权。

非常小心地编写您的特权应用程序,以免打开漏洞,使系统有可能被利用。

关于linux - 为什么 set-uid 程序永远不应该创建程序所有者拥有且其他用户可写的文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52238543/

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