在/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,那么您将开放一个非常恶劣的漏洞。