Shellshock Bashバグ はZSHに影響しますか?
Bashのアップグレードが唯一のソリューションですか?
いいえ、ZSHには影響しません。
ほとんどのシステムスクリプトはbash用に作成されており、Shellshockのバグに対して脆弱であるため、[〜#〜] must [〜#〜] bashを更新します。
ZSHをテストするには、次のようにします。
_env x='() { :;}; echo vulnerable' zsh -c 'echo hello'
_
このコードは正確に何をしますか?
env x='() { :;}; echo vulnerable'
は、変数の最後にコマンドを使用して、既知のバグを持つ環境変数を作成しますzsh -c 'echo hello'
_はシンプルなhelloでZSHシェルを起動します(xを含むすべての環境変数を評価します)出力が表示された場合:
_vulnerable
hello
_
次に、ZSHは脆弱です。私(5.0.2)は:
_$ env x='() { :;}; echo vulnerable' zsh -c 'echo hello'
hello
_
ソースコードにエラーが含まれていないため、シェル実行可能ファイルとしてのzsh
には影響しません。bash
とzsh
の間には多くの類似点がありますが、それらは互いに独立して実装されていました。同じ機能は2つの異なる方法で実装され、このコンテキストではより重要ですが、通常は異なるエラーが発生します。
間接的には、zsh
を操作するのとほぼ同じくらい、ターミナルでbash
シェルをインタラクティブに操作するのに影響します。
bash
の使用は非常に一般的であるため、これを呼び出すことは避けられません。
zsh
を使用することを期待しているが、実際にはbash
を含むスクリプト。#!/bin/bash
を使用してbash
をインタープリターとして指定する多くのシェルスクリプト。想定しているコマンドの多くはバイナリですが、シェルスクリプトであり、その一部はbash
を使用しています。
シェルが明示的に実行される多くの場所では、bash
が使用され、必要な場合もあります。
xargs
コマンド、または引数を含むgit
エイリアスなどから このリンク :
次のテストを実行することで、CVE-2014-6271の元の問題に対して脆弱かどうかを判断できます。
env x='() { :;}; echo vulnerable' bash -c 'echo hello'
そのコマンドの出力でWordが脆弱であることがわかった場合、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
いいえ、Shellshockはzshに直接影響しません。
ただし、デフォルトのシェルとしてzshを使用する多くの環境には、bashもインストールされています。 zshを含む任意のシェルを使用して、侵害されたbashシェルを生成できます。
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の冗長バージョンを無効にする必要があります。 chmod
を使用して、システムのbashインストールを無効にすることができます。
$ chmod a-x /bin/bash
ただし、スクリプトが明示的にbashを呼び出すことは一般的です。これを行うスクリプト、およびbash固有のスクリプト機能を使用するスクリプトは、bashが使用できない場合は失敗します。パッチの適用が最善のソリューションです。