为什么“AcceptEnv *”被认为是不安全的?

The*_*thi 13 security linux ssh environment-variables

在 中/etc/ssh/sshd_config,有一个选项AcceptEnv允许 ssh 客户端发送环境变量。我需要能够发送大量的环境变量。这些在来自客户端的每个连接上都会发生变化,因此将它们放在服务器上的登录脚本中会更加困难。

我读过那"AcceptEnv *"是不安全的。在我尝试获取所有试图设置的环境变量的列表之前,我想了解原因。

为什么它被认为是不安全的?我可以举个例子吗?

Jef*_*and 14

启用环境处理可能使用户能够使用诸如LD_PRELOAD.

并非所有版本的手册页都sshd_config提到了这一点。如果事先更改了环境变量,并且使用由此指定的新库执行某些特权进程,则可能会导致问题。

看看http://www.dankalia.com/tutor/01005/0100501004.htm并搜索“ LD_PRELOADExploit”。抱歉,该页面没有锚链接。

另请参阅 StackOverflow 问题:什么是 LD_PRELOAD 技巧?

连接后设置环境变量没问题,但是当这些变量被 ssh 守护进程解释为设置时AcceptEnv,可能会发生坏事。

  • 这与登录后手动设置变量有什么不同? (2认同)
  • @JosephGarvin,有些系统限制了 shell 或者只允许一个特定的命令,这样“他们”*不能*。因此,问题在于提供一种可以绕过此类安全措施的方法。 (2认同)