windows - 在 PATH 环境中拥有本地目录不安全?

标签 windows shell security unix path

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

For security reasons, the local directory '.' is NOT part of the PATH environment variable [on Unix] (on Windows it is, though!).

实验室的其余部分与此问题无关,并侧重于多线程程序,但是这一行让我感到困惑 - 我不知道它为什么不安全,也不知道它如何在 Windows 系统上被利用。

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

最佳答案

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

让我们以乐观的极端情况为例,当 .PATH 中的最后一个条目时。 那更好,但仍然不是那么好。 PATH 的想法是拥有绝对路径的条目, 这些目录被特意选择为包含可安全运行的程序的目录。

PATH 中包含 . 让您运行 prog 而不是 ./prog。 但这种微小的便利不值得破坏您的安全。

关于windows - 在 PATH 环境中拥有本地目录不安全?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47478357/

相关文章:

php - 如何修复 PHP 警告 : file_get_contents?

c# - 获取有关 Windows 服务内部状态的信息

c++ - 从线程池工作线程使用时 GetQueuedCompletionStatus 的奇怪行为

c++ - WriteConsoleOutputCharacterW-我的新行在哪里?

Java执行shell命令-错误【无法运行程序 "sh": CreateProcess error=2,系统找不到指定的文件】

reactjs - 如何在 React 前端处理 API key 而无需用户登录

security - 如何使用 ImageMagick 测试接收到的输入是否是图像(出于安全目的)?

linux - shell 脚本中的信号处理

linux - 文件被复制并重命名,但我也收到错误

php - 防止未经授权的 API 调用