在实验室里,我的教授写道:
For security reasons, the local directory '.' is NOT part of the PATH environment variable [on Unix] (on Windows it is, though!).
实验室的其余部分与此问题无关,并侧重于多线程程序,但是这一行让我感到困惑 - 我不知道它为什么不安全,也不知道它如何在 Windows 系统上被利用。
为什么 PATH 中的本地目录可能不安全,这会导致什么样的攻击?
最佳答案
为了证明弱点,
考虑当 .
是 PATH
中的第一个条目时的极端情况。
如果恶意目录包含名为 ls
和 cd
的执行脚本,
比方说,rm -fr ~
,你会遇到一个不愉快的惊喜。
这些脚本将代替标准命令执行,
因为将首先找到当前目录中的文件。
让我们以乐观的极端情况为例,当 .
是 PATH
中的最后一个条目时。
那更好,但仍然不是那么好。
PATH
的想法是拥有绝对路径的条目,
这些目录被特意选择为包含可安全运行的程序的目录。
在 PATH
中包含 .
让您运行 prog
而不是 ./prog
。
但这种微小的便利不值得破坏您的安全。
关于windows - 在 PATH 环境中拥有本地目录不安全?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47478357/