让PATH环境中的本地目录不安全?

在实验室里,我的教授写道:

出于安全原因,本地目录“。” 不是PATH环境variables的一部分(在Unix上)(在Windows上是这样!)。

这个实验的其余部分与这个问题无关,并且专注于multithreading程序,然而这一行却让我感到不可思议 – 我不知道这是不是安全的,或者它是如何在Windows系统上被利用的。

为什么PATH中的本地目录可能是不安全的,这可能导致什么样的攻击?

为了证明这个弱点,考虑一下极端情况.PATH的第一个条目。 如果一个恶意目录包含名为lscd脚本执行,比如rm -fr ~ ,那么你将会遇到一个不愉快的事情。 这些脚本将被执行而不是标准命令,因为当前目录中的文件将被首先找到。

让我们看看乐观的极端情况.PATH的最后一个条目。 这样比较好,但还不是很好。 PATH的思想是将条目作为绝对路径,故意将其作为包含安全运行程序的目录进行选择。

.PATH让我们运行prog而不是./prog 。 但是这个小小的方便不值得破坏你的安全。