为什么让 root 把文件写入不属于 root 的目录是不对的?

为什么让 root 把文件写入不属于 root 的目录是不对的?

这是在另一个问题的评论中出现的,如果有人能向我解释一下原因我会很高兴。

我建议让 Apache 将给定 VHost 的错误记录到用户的主目录中。但由于不安全,这个建议被否决了。为什么?

我在回复评论中要求澄清,但我得到的回答是,让 root 在非 root 拥有的文件夹中写入是不安全的。同样,有人可以解释一下吗?

谢谢,

巴特。

答案1

因为一个邪恶用户可以恶意尝试将正在写入的文件指向root其他位置这不是那么简单,但确实有可能。

例如,如果用户想找到制作符号链接从所谓的 Apache 日志到,比如说,/etc/shadow您的系统会突然不可用。Apache ( root) 会覆盖您的用户凭证,导致系统出现故障。

ln -s /etc/shadow /home/eviluser/access.log

如果访问日志文件不可由用户写入,因此劫持它可能很困难,但最好避免这种可能性!

一种可能性是使用 logrotate 来完成工作,创建指向尚不存在的文件的链接,但日志旋转一旦日志增长就会覆盖:

ln -s /etc/shadow /home/eviluser/access.log.1

笔记

符号链接方法只是可能的攻击之一,作为概念证明。

必须通过白名单思维,不列入黑名单我们知道成为一个问题。

答案2

不让进程写入不属于它们或不信任的目录的一般原则是好的。但在这个特定情况下,有理由相信 Apache 代码使用O_NOFOLLOWetc 打开日志:登录到用户的主目录是一种常见的设置。

相关内容