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

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

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

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

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

答案1

启用环境处理可以使用户使用诸​​如等机制来绕过某些配置中的访问限制LD_PRELOAD

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

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

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

连接后设置环境变量是可以的,但是当这些变量被 ssh 守护进程按照 的设置进行解释时AcceptEnv,可能会发生不好的事情。

答案2

不接受环境变量:

Shellshock 漏洞这是最近才出现的...如果你接受环境变量那么你就会打开一个非常恶意的漏洞。

相关内容