【问题标题】:Having the local directory in the PATH environment is not secure?在 PATH 环境中拥有本地目录不安全吗?
【发布时间】:2018-05-08 18:27:09
【问题描述】:

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

出于安全原因,本地目录'.'不是 PATH 环境变量 [在 Unix 上] 的一部分(但在 Windows 上它是!)。

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

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

【问题讨论】:

  • 可以通过设置环境变量NoDefaultCurrentDirectoryInExePath将当前目录从Windows的隐式搜索路径中删除。为方便起见,我有时会添加“。”明确到 PATH 的末尾。

标签: windows shell security unix path


【解决方案1】:

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

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

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

【讨论】:

  • 只有. 位于标准路径前面时才可能出现这种情况
  • @Jean-BaptisteYunès 这是一个很好的观点,谢谢! (....不得不完全重写我的答案=)
  • 在与各种目录中的脚本和可执行文件交互工作时,我发现附加“.”既方便又安全。到 PATH 而不是重复输入“./”(或 Windows 上的“.\”)。不值得的是允许 Windows CreateProcess 或 CMD 在 system 和 PATH 目录之前隐式搜索当前目录;我禁用了这种遗留行为。
猜你喜欢
  • 2021-11-15
  • 2019-04-12
  • 2020-05-03
  • 2016-11-26
  • 2021-05-07
  • 1970-01-01
  • 1970-01-01
  • 2020-03-13
  • 2014-04-21
相关资源
最近更新 更多