ない2014年シェルショック脆弱性バッシュバグは ZSHに影響を与えますか?
Bashのアップグレードが唯一のソリューションですか?
ない2014年シェルショック脆弱性バッシュバグは ZSHに影響を与えますか?
Bashのアップグレードが唯一のソリューションですか?
回答:
いいえ、ZSHには影響しません。
あなたはまだしなければならないシステムスクリプトのほとんどはbashのために書かれ、2014年シェルショック脆弱性のバグに対して脆弱されているとして、bashを更新します。
ZSHをテストするには、次を実行します。
env x='() { :;}; echo vulnerable' zsh -c 'echo hello'
このコードは正確に何をしますか?
env x='() { :;}; echo vulnerable'
変数の最後にコマンドを使用して、既知のバグを持つ環境変数を作成しますzsh -c 'echo hello'
シンプルなhelloでZSHシェルを起動します(そしてxを含むすべてのenv変数を評価します)出力が表示される場合:
vulnerable
hello
次に、ZSHは脆弱です。私(5.0.2)は次のとおりではありません:
$ env x='() { :;}; echo vulnerable' zsh -c 'echo hello'
hello
bash
bashのインストールが保証されていないため、呼び出しはシステムユーティリティにとって悪い習慣です。/bin/sh
は標準シェルであり、正しいPOSIXシェルインタープリターである必要があります。
env x='() { :;}; echo vulnerable' sh -c 'echo hello'
このリンクから:
次のテストを実行することにより、CVE-2014-6271の元の問題に対して脆弱かどうかを判断できます。
env x='() { :;}; echo vulnerable' bash -c 'echo hello'
そのコマンドの出力に脆弱な単語が表示される場合、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
env X='() { (a)=>\' bash -c "echo date"
パッチを適用したbashで、多くのエラーをスローしてもecho
、日付を含むと呼ばれるファイルを生成します。理由を知りたくありません。
zsh
は、そのコアでは使用bash
しません。bash
例では明示的に呼び出されます。これらの行の実行に使用しているシェルは関係ありません。この脆弱性は、起動されたシェルではなく、新しく起動されたbashシェルに影響します。
bash
、例ではに置き換えたいと思い$SHELL
ます。
zsh
ソースコードにはエラーが含まれていないため、シェル実行可能ファイルとしては影響しません。
そこの間に多くのsimilaritysあるbash
とはzsh
、彼らは互いに独立して実施しwerer。同じ機能が2つの異なる方法で実装され、このコンテキストではより重要であり、通常は異なるエラーが発生します。
間接的にはzsh
、ターミナルでのシェルとの対話とほぼ同じくらいの影響を及ぼしbash
ます。
の使用bash
は非常に一般的であるため、呼び出すのを避けることはほとんどできません。
zsh
で、実際には含まれていますbash
。 #!/bin/bash
指定するために使用する多くのシェルスクリプトbash
。想定されるコマンドの多くはバイナリですが、シェルスクリプトであり、その一部はを使用していbash
ます。
シェルが明示的に実行される多くの場所で、bash
使用される可能性があり、おそらく必要です。
xargs
コマンド、またはgit
引数を含むエイリアスのようないいえ、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の冗長バージョンにパッチを適用するか、アンインストールするか、無効にする必要があります。次のコマンドでシステムbashインストールを無効にできますchmod
。
$ chmod a-x /bin/bash
ただし、スクリプトがbashを明示的に呼び出すことは一般的です。これを行うスクリプト、およびbash固有のスクリプト機能を使用するスクリプトは、bashが利用できない場合は失敗します。パッチを適用するのが最適なソリューションです。
importing function definition
"に使用しているようです。私はまた、SSHサーバの注入でテスト:ssh testuser@localhost '() { :;}; echo "$SHELL"'
私はセットtestuser
にのログインシェルを/bin/zsh
、そしてそれがこだま/bin/zsh