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

/etc/ssh/sshd_config ,有一个名为AcceptEnv的选项,允许ssh客户端发送环境variables。 我需要能够发送大量的环境variables。 这些在客户端的每个连接上都会发生变化,所以把它们放在服务器上的login脚本上会比较困难。

我读过"AcceptEnv *"是不安全的。 我想了解为什么在我尝试获取所有试图设置的环境variables的列表之前。

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

启用环境处理可使用户能够绕过使用诸如LD_PRELOAD之类的机制的一些configuration中的访问限制。

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

查看http://www.dankalia.com/tutor/01005/0100501004.htm并search“LD_PRELOAD Exploit”。 对不起,该页面没有锚链接。

另请参阅此StackOverflow问题,“ 什么是LD_PRELOAD技巧? ”

在连接好的情况下设置环境variables,但是当这些variables被由AcceptEnv设置的ssh守护进程解释的时候,可能会发生坏事。

不要接受环境variables:

请参阅最近发布的Shellshock漏洞利用 。如果您接受环境variables,那么您将开放一个非常恶劣的漏洞。