Shellshock 漏洞会影响 ZSH 吗?

Shellshock 漏洞会影响 ZSH 吗?

是否Shellshock Bash 漏洞对 ZSH 有影响吗?

升级 Bash 是唯一的解决方案吗?

答案1

不,它不会影响 ZSH。

你还在必须更新 bash,因为大多数系统脚本都是为 bash 编写的,并且容易受到 shellshock 漏洞的攻击。

要测试你的 ZSH,请执行以下操作:

env x='() { :;}; echo vulnerable' zsh -c 'echo hello'

这段代码到底起什么作用?

  1. env x='() { :;}; echo vulnerable'在变量末尾使用命令创建一个具有已知错误的环境变量
  2. 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

二进制文件不受影响

它不会影响zshshell 可执行文件,因为它的源代码从未包含错误。和
之间有很多相似之处,但它们是彼此独立实现的。 同一功能以两种不同的方式实现,并且 - 在此上下文中更重要的是 - 通常具有不同的错误。bashzsh

但交互使用是

间接地,它确实影响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 特定脚本功能的脚本将会失败。修补是最好的解决方案。

相关内容