Python中的Symlink漏洞利用

2024-03-28 22:57:03 发布

您现在位置:Python中文网/ 问答频道 /正文

在阅读shell脚本和临时文件处理时,我遇到了Symlink漏洞。http://www.linuxsecurity.com/content/view/115462/151/是基本思想。我想知道Python open()是否检查它将要打开的文件,看它是否是符号链接,并试图以“w”模式打开符号链接文件。令我惊讶的是,它打开了链接,结果覆盖了链接指向的文件。现在,如果我的python程序以一种可预测的方式进行大量的文件处理,那么攻击者就不可能通过我的程序应该创建的文件名创建一个链接并将其链接到一个关键的系统文件。这会覆盖系统文件并使系统崩溃? 我使用了python2.4。后续的python版本会解决这个问题吗?在

或者这是个问题吗?在


Tags: 文件程序脚本comviewhttp链接www
3条回答

首先,运行脚本的用户不应具有写入关键系统文件的权限。第二,解决这个问题并不是Python的任务。这是脚本开发人员的任务。Python至少从2.3开始就提供了tempfile。在

只有在创建临时文件(通常是写文件)时才会出现问题,这些文件的名称可以预测,并且位于其他用户可以写入的目录中。所以如果你的脚本只写你的主目录,你就没事了。 如果需要在共享写入目录(例如/tmp)中创建临时文件,应该使用类似 http://docs.python.org/library/tempfile.html

如果您的程序以提升的权限(如root)运行,则您可以通过不写入低权限用户能够创建符号链接的目录中的文件来防止此类攻击。在

这个问题不能由语言或运行库来解决,但必须在程序运行的环境中解决。在

(请注意,如果您的程序是以提升权限运行的而不是,那么创建符号链接的用户不会让他们访问没有您的程序就无法完成的任何事情。)

相关问题 更多 >