我很想知道最新的情况如何巴什虫子影响需要用户登录才能访问 shell 的系统。
UNIX/Linux 不是通常配置为必须是经过身份验证的用户才能在系统上执行 bash 命令吗?
最近的“Bash Bug”或漏洞如何影响在执行任何命令之前需要登录的系统,以及有人可能使用此错误危害基于登录的系统的方式是什么?
答案1
这撞倒是我在互联网上找到的关于 Shell Shock(又名 Bash Bug)的最好的内容,它解释道:
风险集中在 Bash shell 中任意定义指定函数定义的环境变量的能力。当 Bash 在函数定义之后继续处理 shell 命令时,问题就开始了,导致我们将其归类为“代码注入攻击”。让我们再次看一下罗伯特的例子,我们将采取这一行:
http-header = Cookie:() { :; }; ping -c 3 209.126.230.74
函数定义为 () { :; }; shell命令是ping语句和后续参数。当在 Bash shell 上下文中处理此命令时,将执行任意命令。在 Web 环境中,这意味着通过 CGI 脚本等机制,而不一定是请求标头。值得阅读 seclists.org 的公告,其中提供了更多详细信息,包括指出路径和查询字符串可能是潜在的攻击向量。
当然,减轻这种特定攻击媒介的一种方法是禁用任何调用 shell 的 CGI 功能,实际上有些人建议这样做。但在许多情况下,这将是一项严重的破坏性更改,至少需要进行一些广泛的测试,以确保它不会立即导致网站出现问题,而在许多情况下,它会立即出现问题。
上面的 HTTP 证明是一种简单但有效的证明,尽管只是通用协议上的一种实现。一旦你开始加入 Telnet 和 SSH,显然甚至是 DHCP,范围就会急剧增加,所以我们在这里绝不只是谈论利用 Web 应用程序服务器。 (显然,风险仅存在于 SSH 授权后,但在公开披露的早期阶段,我们将不可避免地看到其他攻击媒介的出现。)
答案2
系统上运行的网络服务(如 Web 服务器)以经过身份验证的用户身份运行。如果这些服务使用 bash 进行任何计算(这相当常见),外部用户就可以通过用 shell 命令替换环境变量来将任意代码作为 Web 服务器运行。