是否Shellshock Bash 漏洞对 ZSH 有影响吗?
升级 Bash 是唯一的解决方案吗?
答案1
不,它不会影响 ZSH。
你还在必须更新 bash,因为大多数系统脚本都是为 bash 编写的,并且容易受到 shellshock 漏洞的攻击。
要测试你的 ZSH,请执行以下操作:
env x='() { :;}; echo vulnerable' zsh -c 'echo hello'
这段代码到底起什么作用?
env x='() { :;}; echo vulnerable'
在变量末尾使用命令创建一个具有已知错误的环境变量zsh -c 'echo hello'
使用简单的 hello 启动 ZSH shell(并评估所有环境变量,包括X)
如果你看到输出:
vulnerable
hello
那么你的 ZSH 就存在漏洞。我的(5.0.2)不存在漏洞:
$ env x='() { :;}; echo vulnerable' zsh -c 'echo hello'
hello
答案2
从此链接:
您可以通过执行此测试来确定您是否容易受到 CVE-2014-6271 中原始问题的攻击:
env x='() { :;}; echo vulnerable' bash -c 'echo hello'
如果您在该命令的输出中看到“vulnerable”一词,则您的 bash 存在漏洞,您应该进行更新。以下是 OS X 10.8.5 中存在漏洞的版本:
env x='() { :;}; echo vulnerable' bash -c 'echo hello'
vulnerable
hello
以下输出是无漏洞的 bash 版本的示例。
$ env x='() { :;}; echo vulnerable' bash -c 'echo hello'
bash: warning: x: ignoring function definition attempt
bash: error importing function definition for `x'
hello
答案3
二进制文件不受影响
它不会影响zsh
shell 可执行文件,因为它的源代码从未包含错误。和
之间有很多相似之处,但它们是彼此独立实现的。 同一功能以两种不同的方式实现,并且 - 在此上下文中更重要的是 - 通常具有不同的错误。bash
zsh
但交互使用是
间接地,它确实影响zsh
在终端中与 shell 进行交互的工作,几乎与使用 一样多bash
。
的用法bash
如此常见,人们几乎无法避免地这样称呼它。
避免使用太多
- 您知道并期望使用
zsh
但实际上包含的脚本bash
。 - 许多用来
#!/bin/bash
指定bash
解释器的 shell 脚本。 许多您认为是二进制文件的命令,但却是 shell 脚本,其中一些使用
bash
。在许多明确执行 shell 的地方,
bash
可能会使用 shell,而且可能需要使用 shell。- 比如复杂的
xargs
命令,或者git
涉及参数的别名 - 终端仿真器的默认 shell
- 使用 sudo 操作的用户的 shell
- ETC。
- 比如复杂的
答案4
不,Shellsh 不会直接影响 zsh。
但是,许多使用 zsh 作为默认 shell 的环境也安装了 bash。任何 shell(包括 zsh)都可用于生成受感染的 bash shell:
zsh ❯ env X='() { (a)=>\' sh -c "echo date"; cat echo
sh: X: line 1: syntax error near unexpected token `='
sh: X: line 1: `'
sh: error importing function definition for `X'
Fri 26 Sep 2014 12:05:57 BST
为了防止这种情况,您应该修补、卸载或禁用任何冗余版本的 bash。您可以使用以下命令禁用系统 bash 安装chmod
:
$ chmod a-x /bin/bash
但是,脚本通常会显式调用 bash。如果 bash 不可用,那么执行此操作的脚本以及使用 bash 特定脚本功能的脚本将会失败。修补是最好的解决方案。