在实验室里,我的教授写道:
出于安全原因,本地目录“。” 不是PATH环境variables的一部分(在Unix上)(在Windows上是这样!)。
这个实验的其余部分与这个问题无关,并且专注于multithreading程序,然而这一行却让我感到不可思议 – 我不知道这是不是安全的,或者它是如何在Windows系统上被利用的。
为什么PATH中的本地目录可能是不安全的,这可能导致什么样的攻击?
为了证明这个弱点,考虑一下极端情况.
是PATH
的第一个条目。 如果一个恶意目录包含名为ls
和cd
脚本执行,比如rm -fr ~
,那么你将会遇到一个不愉快的事情。 这些脚本将被执行而不是标准命令,因为当前目录中的文件将被首先找到。
让我们看看乐观的极端情况.
是PATH
的最后一个条目。 这样比较好,但还不是很好。 PATH
的思想是将条目作为绝对路径,故意将其作为包含安全运行程序的目录进行选择。
有.
在PATH
让我们运行prog
而不是./prog
。 但是这个小小的方便不值得破坏你的安全。