ShellshockのバグはZSHに影響しますか?


38

ない2014年シェルショック脆弱性バッシュバグは ZSHに影響を与えますか?

Bashのアップグレードが唯一のソリューションですか?


別の取引所でのこの回答によると、ZSHは関数をエクスポートしません。Shellshockのバグはこのbash固有の機能によって引き起こされたため、それを欠く他のシェルはおそらく影響を受けないはずです。
lzam 14

回答:


36

いいえ、ZSHには影響しません。

あなたはまだしなければならないシステムスクリプトのほとんどはbashのために書かれ、2014年シェルショック脆弱性のバグに対して脆弱されているとして、bashを更新します。

ZSHをテストするには、次を実行します。

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

このコードは正確に何をしますか?

  1. env x='() { :;}; echo vulnerable' 変数の最後にコマンドを使用して、既知のバグを持つ環境変数を作成します
  2. zsh -c 'echo hello'シンプルなhelloでZSHシェルを起動します(そしてxを含むすべてのenv変数を評価します)

出力が表示される場合:

vulnerable
hello

次に、ZSHは脆弱です。私(5.0.2)は次のとおりではありません:

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

1
zshを使用しても、システムにbashが存在する場合!それを心配する必要がありますか?そうでない場合はなぜですか?
ディネシュクマール14

16
@Dineshkumar:はい、あなたはまだ心配してパッチを当てるべきです。その理由は、たとえあるあなたはまだだろうzshの、他のプログラム(DHCPが言及された、多くのPHPアプリケーションは、おそらく行いますと、一般的なLinuxマシン上の他のプログラムやスクリプトの多くを)使用しているコールのbash。(実際、そうすべきではありませんが、悪い習慣になっています。)
hans_meine 14

2
Ubuntuの10.10は...かなり古いですし、2年以上にわたってサポートされていない@stephenmurdoch
Izkata

2
@Ghanima:bashbashのインストールが保証されていないため、呼び出しはシステムユーティリティにとって悪い習慣です。/bin/shは標準シェルであり、正しいPOSIXシェルインタープリターである必要があります。
2014

2
fwiw-bashを/ bin / shとして実行すると、POSIX互換シェルとして実行されます。ただし、このモードではバグもあります。 env x='() { :;}; echo vulnerable' sh -c 'echo hello'
フォルド14

6

このリンクから:

次のテストを実行することにより、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

また、リンクの指示に従ってbashにパッチを適用すると、zshellの脆弱性がなくなるため、zshellのコアでbashが使用されていると思われます。
vectorsize 2014

9
フォローアップが行われていることに注意してください:env X='() { (a)=>\' bash -c "echo date"パッチを適用したbashで、多くのエラーをスローしてもecho、日付を含むと呼ばれるファイルを生成します。理由を知りたくありません。
ジョナスシェーファー14

@Jonas待って、ファイルを作成しますか?!私はこの脆弱性を理解していますが、それは奇妙なことです。
ドアノブ14

5
@vectorsize zshは、そのコアで使用bashしませbash例では明示的に呼び出されます。これらの行の実行に使用しているシェルは関係ありません。この脆弱性は、起動されたシェルではなく、新しく起動されたbashシェルに影響します。
アデフォン14

2
@Adaephonだからbash、例ではに置き換えたいと思い$SHELLます。
ジョナスシェーファー14

6

バイナリは影響を受けません

zshソースコードにはエラーが含まれていないため、シェル実行可能ファイルとしては影響しません。
そこの間に多くのsimilaritysあるbashとはzsh、彼らは互いに独立して実施しwerer。同じ機能が2つの異なる方法で実装され、このコンテキストではより重要であり、通常は異なるエラーが発生します。

しかし、インタラクティブな使用は

間接的にはzsh、ターミナルでのシェルとの対話とほぼ同じくらいの影響を及ぼしbashます。

の使用bashは非常に一般的であるため、呼び出すのを避けることはほとんどできません。

避けるべき用途が多すぎる

  • あなたが知っていて使用する予定のスクリプトzshで、実際には含まれていますbash
  • インタープリターとして#!/bin/bash指定するために使用する多くのシェルスクリプトbash
  • 想定されるコマンドの多くはバイナリですが、シェルスクリプトであり、その一部はを使用していbashます。

  • シェルが明示的に実行される多くの場所で、bash使用される可能性があり、おそらく必要です。

    • 複雑なxargsコマンド、またはgit引数を含むエイリアスのような
    • 端末エミュレータのデフォルトのシェル
    • sudoするユーザーのシェル

4

いいえ、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が利用できない場合は失敗します。パッチを適用するのが最適なソリューションです。


zshは暗黙的にbashを " importing function definition"に使用しているようです。私はまた、SSHサーバの注入でテスト:ssh testuser@localhost '() { :;}; echo "$SHELL"'私はセットtestuserにのログインシェルを/bin/zsh、そしてそれがこだま/bin/zsh
Bossliaw
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.