默认情况下,什么是世界可写目录?


Answers:


16

通常唯一可在世界范围内写入的FHS强制目录是/tmp/var/tmp。在这两种情况下,这都是因为它们旨在存储任何人都可以制作的临时文件。

/dev/shm作为tmpfs(由RAM支持的文件系统),通常也很常见,可以快速访问进程之间共享的中型数据,或者仅创建保证在重新启动时销毁的文件。

可能还有一个/var/mail/var/spool/mail,有时还有其他后台打印程序目录。这些用于在处理邮件之前临时保留邮件。它们并不总是可写的,具体取决于所使用的工具。之所以如此,是因为可以使用用户工具在此处创建文件以供守护程序处理。

所有这些目录通常都设置了粘滞位t),这意味着只有文件或目录的所有者才能移动或删除其中的文件。

以任何用户身份运行的任何程序都可以在这些目录中创建文件,并且就其特定数据的安全性而言,由创建程序来做正确的事情。除了可能填充文件系统的人之外,没有任何特殊的一般安全问题,但是程序有很大的范围来弄错它。

已经有一些服务特定/tmp目录的移动。这些可以避免可能出现的一些潜在错误,因此,对于程序使用目录的方式,确保其没有错误并不是至关重要的。


您可以使用以下命令在系统上找到世界可写目录:

find / -maxdepth 3 -type d -perm -777

8

/tmp/var/tmp/var/lock,默认情况下可在世界范围内写入。可能存在符号链接,例如/usr/tmp/var/tmp,以与较早的应用程序兼容。

/tmp/var/tmp世界范围内写入,因为它们是供任何用户用于任何临时存储的。 /var/lock是世界可写的,因此任何以任何用户身份运行的进程都可以在中央位置创建锁定文件。

有安全隐患吗?不,但是可以。

所有这些目录的权限是1777,与领先1作为粘着位。这意味着尽管任何人都可以在这些世界可写目录中创建文件,但只有所有者可以删除自己的文件(当然,root用户也可以)。

临时文件创建不安全可能导致安全风险。由于这些目录是免费的,因此用户需要采取预防措施以确保他们创建的文件实际上是新文件,而不是打开可能由恶意用户植入的现有文件或符号链接。如果使用适当的技术(例如open(…, O_EXCL)或)创建文件mkstemp(3),则可以避免这种风险。


1
在现代系统上,那些兼容性符号链接之一是/var/lock/run/lock
camh 2014年

2

/tmp

这是有风险的,因为您需要添加额外的代码才能安全地使用它。显然,这被忽略了。

史蒂夫·坎普(Steve Kemp)给出了一个最近的例子。 http://blog.steve.org.uk/sometimes_reading_code_makes_you_scream_.html

./mgmt/tools/SysAPI.cc:  tmp = fopen("/tmp/shadow", "w");
./mgmt/tools/SysAPI.cc:    system("/bin/mv -f /tmp/shadow /etc/shadow");

如果(攻击者)在第二行之前替换/ tmp / shadow,则可以替换每个人的密码。(我猜这种攻击要求您在第一行之前创建文件,并使该文件可全局写入)。

在Linux上的Systemd可以通过为许多系统服务隔离/ tmp来缓解此类漏洞。(除了“将/ tmp用作IPC套接字和其他通信原语的位置”)。

在Fedora Linux中-http://fedoraproject.org/wiki/Features/ServicesPrivateTmp

系统说明-http: //0pointer.de/blog/projects/security.html


“我想攻击需要您在第一行之前创建文件”-确实如此。如果该文件尚不存在,则第一行将以运行用户(可能是root)的身份创建该文件,而另一位恶意用户将无权在第二行之前替换它。如果文件已经存在,fopen则将其覆盖但不重置权限,因此恶意用户仍然可以进行更改。同样,恶意用户可能ln -s /bin/bash /tmp/shadow在第一行之前就做了类似的操作,因此基本系统二进制文件将被覆盖。
hvd 2014年

2

要查找世界可写目录,可以使用

find / -xdev -type d \( -perm -0002 -a ! -perm -1000 \) -print

对于文件,将类型更改为 f

对于符号链接,键入 l

设置粘性位:

find / -xdev -type d \( -perm -0002 -a ! -perm -1000 \) -print0| xargs -0 chmod +t
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.